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=a2) |
| /= | 除法赋值 | a/=2(等价于a=a/2) |
| %= | 取模赋值 | a+=2(等价于a=a%2) |
| **= | 幂运算赋值 | a=2(等价于a=a2) |
| //= | 整除赋值 | 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 不在……好难过”
回答:
写法一:
logic=["bob","tony","lisa","steven"]
if "amy" in logic:
print("amy 在逻辑大家庭")
else:
print("amy 不在…好难过")写法二:
logic=["bob","tony","lisa","steven"]
print("amy 在逻辑大家庭" if "amy" in logic else "amy 不在…好难过")问题2:
回答:
为True。因为这两者比较的时候是按着字符的个数用ascII码逐一比较的,在这里a的ascII比x的ascII码要小,所以返回为True。

问题3:
一下程序如果输入666执行那一条语句?为什么?
temp = input("请输入:")
if temp == 'Yes' or 'yes':
print("if执行了")
else:
print("else执行了")回答:
会执行print("if执行了")。因为上面的==是比较运算符,or是逻辑运算符。比较运算符的优先级比逻辑运算符高。所以上面的if条件首先会执行temp == 'Yes',返回值为False ,接着会执行False or 'yes'。'yes'的返回值为True,所以返回值为True。所以会执行print("if执行了")

问题4:
回答:
is判断的是两个对象的内存地址是否一致。==判断的是两个对象的值是否一致。

问题5:
用户输入a,b
当a与b都不为0时则输出a与b的商;否则输出a与b的乘积。
回答:
写法一:
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:
continuewhile 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:
回答:
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 













Comments | NOTHING