赋值运算符
基本赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把 = 号右边的结果 赋给 左边的变量,如 num = 1 2 * 3,结果num的值为7 |
单个变量赋值:
代码语言:javascript复制num = 10
num
同时为多个变量赋值(使用等号连接):
代码语言:javascript复制a = b = 4
a
b
多个变量赋值(使用逗号分隔):
代码语言:javascript复制num1, f1, str1 = 100, 3.14, "hello"
num1
f1
str1
语法错误,值的个数超过变量的个数,赋值失败:
代码语言:javascript复制num1,num2=(1,2,3)
语法错误,变量的个数超过值的个数,赋值失败:
代码语言:javascript复制num1,num2,num3,num4=(1,2,3)
复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 加法赋值运算符 | c = a 等效于 c = c a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
示例: =
代码语言:javascript复制a = 100
a = 1 # 相当于执行 a = a 1
a
示例:*=
代码语言:javascript复制a = 100
a *= 2 # 相当于执行 a = a * 2
a
示例:*=,运算时,符号右侧的表达式先计算出结果,再与左边变量的值运算
代码语言:javascript复制a = 100
a *= 1 2 # 相当于执行 a = a * (1 2)
a
注意:赋值运算符是从右往左运算,将等号右边的值赋值给等号左边,所以,等号的左边一定不能是常量或者表达式。
比较运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 True |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 True。这个运算符类似 != |
> | 大于 - 返回x是否大于y | (a > b) 返回 False |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 | (a < b) 返回 True |
>= | 大于等于 - 返回x是否大于等于y | (a >= b) 返回 False |
<= | 小于等于 - 返回x是否小于等于y | (a <= b) 返回 True |
字符串使用比较运算符
数字和字符串做==运算结果是False,除了 == 以外的逻辑运算时,会直接报错。
代码语言:javascript复制str1 == a
如果是两个字符串进行比较,会将每个字符都转换成对应的编码,然后逐一进行对比。
代码语言:javascript复制str1 = 'a'
str2 = 'ABC'
# 将字符转换成为对应的编码 a对应的编码是97,A对应的编码是65
str1 > str2
逻辑运算符
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 只要有一个运算数是False,结果就是False;只有所有的运算数都为True时,结果才是True。做取值运算时,取第一个为False的值,如果所有的值都为True,取最后一个值。 |
or | x or y | 只要有一个运算数是True,结果就是True;只有所有的运算数都为False时,结果才是False。做取值运算时,取第一个为True的值,如果所有的值都为False,取最后一个值。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
练习:
代码语言:javascript复制a = 34
b = 12
print((a > b) and (b > 10) and (a > 30) and (a > 50))
print((a > b) and (b > 10) and (a > 30) and (a < 50))
print(a and b and 'hello' and 0 and 123)
print(a and b and 'hello' and 123 and 'hi')
print((a > 50) or (b < 10) or a > b or (a == b))
print((a > 50) or (b < 10) or a < b or (a == b))
print(0 or None or a or '')
print(0 or "" or '' or None)
提高:
面试题:一下代码的输出结果是什么,为什么会有这样的输出。
代码语言:javascript复制a = 34
a > 10 and print('hello world')
a < 10 and print('hello world')
a >10 or print('你好世界')
a <10 or print('你好世界')
思考:
逻辑运算的短路问题
逻辑与运算和逻辑或运算取值时为什么是那种规则。