python运算符

python中有8种运算符:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 三目运算符

算术运算符

运算符 作用
+ 相加
- 相减
* 相乘
/ 相除
% 取模运算
** 幂运算
// 整除(返回商的整数部分)
注意:
  • 整除是取除运算后,比自身小的整数。
  • 取模运算是先整除,然后用整除的值乘除数,然后用被除数减去商得到结果。
  • 在计算机中,做计算需要转为2进制,计算完之后又将结果转为十进制呈现,所以会产生精准误差。
  • 解决精准问题,可以采用内置模块decimal。
    示例:
from decimal import Decimal
Decimal('5.4')-Decimal('3')#==>2.4

赋值运算符

运算符 作用 示例
= 赋值 a=b;c=d+e
+= 加法赋值 a+=1(等价于a=a+1)
-= 减法赋值 a-=1(等价于a=a-1)
*= 乘法赋值 a*=2(等价于a=a*2)
/= 除法赋值 a/=2(等价于a=a/2)
%= 取模赋值 a+=2(等价于a=a%2)
**= 幂运算赋值 a**=2(等价于a=a**2)
//= 整除赋值 a//=2(等价于a=a//2)
注意:

python中不支持a++,a–这种自运算写法。

比较运算符

运算符 作用
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
注意
  • int 不能直接与str比较
  • python3中不再支持<>号,在python2中该符号表示不等于。
  • ==与!=符号不能分开写。即不能写成= =或是! =
  • str与str之间比较的是ASCII码,并且逐个对比。
  • 连续的比较,如:a>b>c可以拆解为a>b and b>c

逻辑运算符

运算符 表达式 描述
and a and b 逻辑与,a与b都为True则返回True
or a or b 逻辑或,a或b其中一个为True则返回True
not not a 逻辑非,如果a为True则,返回False,反之则反
懒惰机制
  • 当运用逻辑或(or)的时候,如果第一个参数为True,则执行到第一个参数就结束了,不会再执行后面的参数。
  • 当运用逻辑与(and)的时候,如果第一个参数为False,则执行到第一个参数就结束了,不会再执行后面的参数。
示例:
print(10 and 20)#==>返回20
print(10 or 20)#==>返回10

位运算符

运算符 描述
& 按位与,两者都为1才为1,否则为0
| 按位或,只有一个为1则为1,否则为0
^ 按位异或,两者相等则为0,否则为0

成员运算符

运算符 描述
in 判断元素是否在一个序列中,是则返回True
not in 判断元素是否在一个序列中,否则返回True

身份运算符

运算符 描述
is 判断两个对象的内存地址是否一致,是则返回True
not is 判断两个对象的内存地址是否一致,否则返回True

三目运算符

运算符 True_statements if expression else False_statements
描述 如果expresssion为ture则返回True_statements,否者返回False_statements
示例:
b=1
print(a=1 if b>4 else a=2)#==>输出结果为a=2

运算符的优先级

运算符 描述
** 幂运算符(最高优先级)
* / % // 乘 除 取模 整除
+ - 加 减
< > <= <= 比较运算符
== != 比较运算符
= %= /= //= -= += *= **= 赋值运算符
is not is 身份运算符
in not in 成员运算符
not or and 逻辑运算符
注意:
  • 列表中的运算从上到下,优先级从高到低。
  • 同级别的运算符按从左往右的顺序计算。
  • 赋值运算符是从右往左运算。
  • 有小括号的话,小括号内的优先。

问题:

问题1:

判断"amy"是否在[“bob”,“tony”,“lisa”,“steven”]里面,如果在则输出“amy 在逻辑大家庭”,否则输出“amy 不在……好难过”
python运算符_第1张图片

回答:
写法一:

logic=["bob","tony","lisa","steven"]
if "amy" in logic:
    print("amy 在逻辑大家庭")
else:
    print("amy 不在…好难过")

python运算符_第2张图片
python运算符_第3张图片

写法二:

logic=["bob","tony","lisa","steven"]
print("amy 在逻辑大家庭" if "amy" in logic else "amy 不在…好难过")

在这里插入图片描述
在这里插入图片描述

问题2:

‘ax’<'xa’为True还是为False?为什么呢?
python运算符_第4张图片

回答:
为True。因为这两者比较的时候是按着字符的个数用ascII码逐一比较的,在这里a的ascII比x的ascII码要小,所以返回为True。
在这里插入图片描述
在这里插入图片描述

问题3:

一下程序如果输入666执行那一条语句?为什么?

temp = input("请输入:")
if temp == 'Yes' or 'yes':
	print("if执行了")
else:
	print("else执行了")

python运算符_第5张图片

回答:
会执行print("if执行了")。因为上面的==是比较运算符,or是逻辑运算符。比较运算符的优先级比逻辑运算符高。所以上面的if条件首先会执行temp == ‘Yes’,返回值为False ,接着会执行False or ‘yes’。'yes’的返回值为True,所以返回值为True。所以会执行print("if执行了")
python运算符_第6张图片
python运算符_第7张图片

问题4:

is与==的区别?
python运算符_第8张图片

回答:
is判断的是两个对象的内存地址是否一致。==判断的是两个对象的值是否一致。
python运算符_第9张图片
python运算符_第10张图片

问题5:

用户输入a,b
当a与b都不为0时则输出a与b的商;否则输出a与b的乘积。
python运算符_第11张图片

回答:
写法一:

while 1:
	a=input("请输入一个数值:")
	b=input("请输入一个数值:")
	if str.isdigit(a) and str.isdigit(b):
		if int(a) and int(b):
			print(int(a)/int(b))
		else:
			print(0)
	else:
		continue

python运算符_第12张图片
python运算符_第13张图片
写法二:

while 1:
    a=input("请输入一个数值:")
    b=input("请输入一个数值:")
    try:
        if int(a) and int(b):
            print(int(a) / int(b))
        else:
            print(0)
    except ValueError:
        continue

写法三:

while 1:
    a=input("请输入一个数值:")
    b=input("请输入一个数值:")
    try:
        print(int(a) / int(b) if int(a) and int(b) else 0)
    except ValueError:
        continue
问题6:

基于问题5,采用三目运算符输出a,b中较大的数。python运算符_第14张图片

回答:

while 1:
	a=input("请输入一个数值:")
	b=input("请输入一个数值:")
	if str.isdigit(a) and str.isdigit(b):
		print(a) if int(a) > int(b) else print(b)
		#或者这样写:
		#print(a if int(a) > int(b) else b)
	else:
		continue

python运算符_第15张图片
python运算符_第16张图片


python运算符_第17张图片

你可能感兴趣的:(python学习笔记)