【无为则无心&Python基础】— 22、Python运算符

运算符用于执行程序代码运算。

1、运算符的分类

Python的常用运算符分为5类:

  • 算数运算符
  • 赋值运算符
  • 复合赋值运算符
  • 比较运算符
  • 逻辑运算符

2、算数运算符

Python中算数运算符如下:

运算符描述实例
+1 + 1 输出结果为 2
-1-1 输出结果为 0
*2 * 2 输出结果为 4
/10 / 2 输出结果为 5
//整除9 // 4 输出结果为2
%取余9 % 4 输出结果为 1,也叫取模
**指数2 ** 4 输出结果为 16,即 2 * 2 * 2 * 2
()小括号小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9

注意:

  • 混合运算优先级顺序:()高于 ** 高于 * / // % 高于 + -

示例:

# 1、运算符:加、减、乘
# 所有运算中,只要有浮点数参加的运算,一定会得到一个浮点数
a = 10.5 + 5
print(f'a = {a}') # a = 15.5

# 2、运算符:除
# 除法不管得到什么数,结果都是小数(浮点型),//(整除不会)
b = 4 / 2
print(f'b = {b}') # b = 2.0

# 3、运算符://(整除),只会保留整数位
# 运算结果只会得到一个整型,结果只保留整数部分。
c = 4 // 2
print(f'c = {c}') # c = 2
# 如果除数或被除数是小数,则返回一个浮点数
c = 4.567 // 2
print(f'c = {c}') # c = 2.0


# 4、用变量d的值减去2,然后再赋值给d
d = 10
d = d - 2
print(f'd = {d}') # d = 8

"""
5、如果将字符串和数字相乘,
则会对字符串进行复制操作,
将字符串重复指定次数

6、如果对字符进行加法运算,
 就是字符串的拼接
"""
e = 'hello' + ' ' + 'world' 
print(e) # hello world

f = ('hello' + ' ') * 2
print(f) # hello hello 

# 7、除0异常
g = 5 / 0
# 报出异常:ZeroDivisionError: division by zero

3、赋值运算符

运算符描述实例
=赋值=右侧的结果赋值给等号左侧的变量
  • 单个变量赋值
num = 1
print(num)
  • 多个变量赋值
num1, float1, str1 = 10, 0.5, 'hello world'
print(f"num1 = {num1}")
print(f"float1 = {float1}")
print(f"str1 = {str1}")

# 输出结果如下:
# num1 = 10
# float1 = 0.5
# str1 = hello world
  • 多变量赋相同值
a = b = 10
print(f"a = {a}")
print(f"b = {b}")

# 输出结果如下:
# a = 10
# b = 10

4、复合赋值运算符

当解释器执行到复合赋值运算符时,先计算算数运算符的表达式,再将算数运算符执行后的结果赋值到等号左边的变量。

复合赋值运算符如下:

运算符描述实例
+=加法赋值运算符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

示例:

# 输出101  a = a + 1,最终a = 100 + 1
a = 100
a += 1
print(a) # 101

# 输出6  b = b * 3,最终b = 2 * 3
b = 2
b *= 3
print(b)

# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
c = 10
c += 1 + 2
print(c)
# 注意: 先算复合赋值运算符右面的表达式,再算复合赋值运算.
d = 100
d *= 3 + 4 
print(d) # 700
# 3 + 4 = 7 * 100 = 700

在对浮点数做算术运算时,结果也会返回一个浮点数。

5、比较运算符

比较运算符也叫关系运算符,来比较两个值之间的关系,总会返回一个布尔值, 如果关系成立,返回True,否则返回False,通常用来判断。

比较运算符如下:

运算符描述实例
==判断相等。如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False)如a=3,b=3,则(a == b) 为 True
!=不等于 。如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False)如a=3,b=3,则(a == b) 为 True如a=1,b=3,则(a != b) 为 True
>运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假如a=7,b=3,则(a > b) 为 True
<运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假如a=7,b=3,则(a < b) 为 False
>=运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假如a=7,b=3,则(a < b) 为 False如a=3,b=3,则(a >= b) 为 True
<=运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假如a=3,b=3,则(a <= b) 为 True

示例:

# 1、关系运算符基本使用
a = 7
b = 5
print(a == b)  # False
print(a != b)  # True
print(a < b)   # False
print(a > b)   # True
print(a <= b)  # False
print(a >= b)  # True

# 2、数字可以可布尔值比较,True=1,False=0
print(1 == True) # True
print(2 < True) # False
print(-1 < False) # True

# 3、数字和字符串之间不能进行比较
print(2 > '1')
# TypeError: '>' not supported between instances of 'int' and 'str'

"""
4、字符串和字符串之间可以进行比较
在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算时,
实际上比较的是字符串对应的Unicode编码。
比较两个字符串的Unicode编码时,是逐位比较的。
   
利用该特性可以对字符串按照字母顺序进行排序,
但是对于中文来说意义不是特别大。
    
注意:如果不希望比较两个字符串的Unicode编码,
   	 则需要通过数据类型转换
     将字符串转换为数值型然后再比较。
"""
#  a(0061) 和 b(0062) 比较
print('a' > 'b') # False

# 比较两个字符串的Unicode编码时,是逐位比较的。
# 也就是第一位和第一位比,第二位和第二位比,
# 只有在第一位没有比出结果的时候(相等),才比第二位。
print('ab' > 'bc') # 实际上就是a和b比较,结果False
print('ab' > 'b') # 同上一句结果
print('af' > 'ac') # True
# 没有肯定小于有字符
print('a' > 'ac') # False

# 将字符串转换成数值型在比较
print(int('5') > int('7')) # False
print(float('5.115') > float('4.64')) # True


"""
5、== 和 != 比较的是结果对象的值,而不是id。
 对象包括id(地址)、type(类型)、value(值)
 比较id用is 和 is not
 is 比较两个对象是否是同一个对象,比较的是对象的id。
 is not 比较两个对象是否不是同一个对象,比较的是对象的id。
 这里有个印象就可以,以后说完可变对象,再详细说明。
"""
print(1 == True) # True
print(id(1),id(True)) # 8791323868224 8791323365904
print(1 is True) # False
print(1 is not True) # True

6、逻辑运算符

逻辑运算符主要用来做一些逻辑判断

逻辑运算符如下:

运算符逻辑表达式描述实例
andx and y逻辑"与":如果 x 为 False,x and y 返回 False,否则它返回 y 的值。(一假则假,都真才真)True and False, 返回 False。
orx or y逻辑"或":如果 x 是 True,它返回 True,否则它返回 y 的值。(一真则真,都假才假)False or True, 返回 True。
notnot x逻辑"非":如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。(就是结果取反)not True 返回 False, not False 返回 True
"""
1、and 逻辑与 (一假则假,都真才真)
and可以对符号两侧的值进行与运算。
只有在符号两侧的值都为True时,才会返回True,
只要有一个False就返回False。
    
Python中的与运算是短路的与,也就是说与运算是找False的,
如果第一个值为False,则不再看第二个表达式的结果。
"""
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # False

# 验证and为短路与,找False结束
# 第一个值是True,会执行print()
True and print('1你猜我出来吗?') 
# 第一个值是False,不会执行print()
False and print('2你猜我出来吗?')


"""
2、or 逻辑或 (一真则真,都假才假)
or 可以对符号两侧的值进行或运算。
或运算两个值中只要有一个True,就会返回True。
    
Python中的或运算是短路的或, 或运算是找True的,
如果第一个值为True,则不再看第二个值。
"""
print(True or True) # True
print(True or False) # True
print(False or True) # True
print(False or False) # False

# 验证or为短路或,找True结束
# 第一个值是True,不会执行print()
True or print('1你猜我出来吗?')
# 第一个值是False,会执行print()
False or print('2你猜我出来吗?')


"""
3、not 逻辑非(取反)
not可以对符号右侧的值进行非运算
对于布尔值,非运算会对其进行取反操作,
True变False,False变True。
对于非布尔值,非运算会先将其转换为布尔值,然后再取反:
空性值为False,其他为True。
"""
a = True
# 如果表达式不赋值。不会对变量a有任何影响,
# 只是创建了一个新对象存储了结果,
# 同数据类型转换所讲的
not a 
# 对变量a赋值之后,表达是结果才影响变量a。
a = not a
print(f"a = {a}") # a = False



# 4、逻辑运算符左右的表达式加上(),并不会影响运算的结果。
# 为什么要加上(),避免歧义,增加可读性。
a = 1
b = 2
c = 3
print((a < b) and (b < c))  # True
print((a > b) and (b < c))  # False
print((a > b) or (b < c))   # True
print(not (a > b))          # True

拓展1:数字之间的逻辑运算
"""
# 也就是非布尔值的与或运算
#   当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值。
#
# 1、与运算的规则
#     与运算是找False的,
# 	  如果第一个值是False,则不看第二个值,则直接返回第一个值。(返回0)
#     如果第一个值是True,否则返回第二个值。(看第二个值:False返回0,True返回原值)
# 2、或运算的规则
#     或运算是找True的,
#	  如果第一个值是True,则不看第二个值,则直接返回第一个值(原值)。
#     如果第一个值是False,否则返回第二个值。(看第二个值:False返回0,True返回原值) 
"""
a = 0
b = 1
c = 2

# and运算符,只要有一个值为0,则结果为0,否则结果为最后一个非0数字
print(a and b)  # 0
print(b and a)  # 0
print(a and c)  # 0
print(c and a)  # 0
print(b and c)  # 2
print(c and b)  # 1

# or运算符,只有所有值为0结果才为0,否则结果为第一个非0数字
print(a or b)  # 1
print(a or c)  # 2
print(b or c)  # 1

"""
总结:
两种描述都正确,我确认过。
看自己适合哪种理解思路,就用哪种。
"""
拓展2:Python中逻辑运算符可以连续使用
# 逻辑运算符(补充)
# 逻辑运算符可以连着使用

"""
 1 < 2 < 3 的意思不是1小于2同时小于3,
 相当于 1 < 2 and 2 < 3,
 是以中间数值进行比较的
"""
result = 1 < 2 < 3
print(result) # True

# 相当于 10 < 20 and 15 < 20
result = 10 < 20 > 15
print(result) # True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值