【从零学习python 】07.Python运算符详解:赋值、比较和逻辑运算符

2024-02-29 19:52:25 浏览数 (1)

赋值运算符

基本赋值运算符

运算符

描述

实例

=

赋值运算符

把 = 号右边的结果 赋给 左边的变量,如 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('你好世界')

思考:

逻辑运算的短路问题

逻辑与运算和逻辑或运算取值时为什么是那种规则。

0 人点赞