python中的运算符: 数学运算符、比较运算符、逻辑运算符、赋值运算符
1.数学运算符:
+、-、*(乘法)、/(除法)、%(取模、取余、求余数)、//(整除)、**(幂运算)
1) + 、-、 *、 / 和数学中的功能一模一样,没有区别
print(1 + 1)
print(1 - 1)
print(1 * 1)
注意:/的结果是浮点数。
print(1 / 1) # 1.0
print(5 / 2) # 2.5
2)% - 取模、取余(求余数)
print(5 % 2) # 求5除以2的余数
print(8 % 3) # 2
应用1:判断整数的奇偶性
根据整数对2取余的结果是否是零来判断这个数是否是偶数
print(10 % 2) # 0
print(14 % 2) # 0
print(15 % 2) # 1
应用2:
num = 899 # 求个位数
print(num % 10) # 对10取余,可以取个位数。
print(num % 100) # 对100取余,可以取剩余两位数
3.) // - 整除(商向小取整数,取整数不要余数)
print(5/2) # 2.5
print(5//2) # 2
print(2/3)
print(2//3) # 0
print(-5//2) # -3,注意负数,向小取整,-3小于-2,取-3.
应用:取整数的高位数
num = 234
print(num // 100)
练习:将num中的十位数取出来。
a = num // 10
b = a % 10
print(b)
print(num // 10 % 10)
print(num % 10 // 10)
4) ** - 幂运算(可以求开方)
x ** y - 求x的y次方
print(2 ** 3)
print(16 ** 0.5)
2.比较运算符:>、=、<=、!=
所有的比较运算符的结果都是布尔值
print(10 > 10)
print(10 < 20)
python中的比较运算符支持表示范围的连写方式
age = 18
print(10 <= age <= 28)
print(age >= 10 and age <= 28) # 下划线是系统提示,代码可以修改更简便。
3.逻辑运算符: and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
实际开发过程中,逻辑运算符的运算对象一般都是布尔值,结果也是布尔
3.1): and - 逻辑运算符
1)运算规则:全部都是True结果才是True,只要有一个是False结果就是False
True and True - True
True and False - False
False and True - False
False and False - False
2)应用:如果希望多个条件同时满足,那么就使用and将条件进行连接。相当于生活中的并且
“”"
练习:定义两个变量分别保存一个学生的绩点和操评分,最后根据分数的值打印这个学生是否能拿奖学金。(条件:绩点不低于3.5,操评分大于90同时满足)
3.2) or - 逻辑或
1)运算规则:只要有一个是True结果就是True,全部都是False结果才是False
True or True - True
True or False - True
False or True - True
False or False - False
2)应用:多个条件中只要有一个满足就行,那么就是or将多个条件进行连接;相当于生活中的或者
练习:判断一个数是否能够被3或者7整除
xxx能被3或者7整除:True/False
num = 26
print(num, '能被3或者7整除:',num % 3 == 0 or num % 7 == 0)
3.3 ) not - 逻辑非
1)运算对象not 条件
not True - False
not False - True
age = 20
print("是否成年:", age >= 18)
print('是否未成年:', not age >= 18)
练习:判断一个数是否不能同时被3和7整除。(在某些条件下用not会很方便,正向写某些代码会特别麻烦的情况时)
num = 26
# 正向写
print((num % 3 == 0 and num % 7 == 0) or (num % 7 == 0 and num % 3 != 0))
# 用not写
print(num, '是否不能同时被3和7整除:', not num % 3 == 0 or num % 7 == 0)
练习2: 判断指定的年是否是闰年
闰年的条件: 1)能被4整除但是不能被100整除 2)能被400整除
year = 2004
print(year, '是否是闰年:', (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
3.4 )逻辑运算符的运算对象不是布尔
语法:
表达式1 and 表达式2 - 如果表达式1的布尔值是True,那么整个运算的结果就是表达式2的值;如果是False整个运算结果是表达式1的值。
表达式1 or 表达式2 -如果表达式1的布尔值是True,那么整个运算的结果就是表达式1的值;如果是False,整个运算结果是表达式2的值
数据的布尔值怎么确定:所有为零为空的数据的布尔值都是False(数字的0、 0·0、 0·00、‘’、[]、{}、None),
其他所有数据的布尔值全部都是True
print(not 7) # False
print(not 0) #True
3.5) 短路操作
表达式1 and 表达式2 - 如果表达式1的结果是False,程序不会去执行表达式2
表达式1 or 表达式2 - 如果表达式1的结果是True,程序不回去执行表达式2
False and name >= 10 # 单独打出 name >= 10 会报错,短路之后就不会出现。
True or name < 10
4.赋值运算符: =、 +=、 -=、 *=、 /=、 %=、 //=、 **=
4.1) 所有的赋值运算符最终的目的都是为了给变量赋值,所以赋值运算符的左边必须是变量。
#10 = 20
4.1 ) 赋值运算符 =
变量 = 数据 - 将右边的数据赋值给左边的变量
4.2) 复合的赋值运算符
变量 += 数据 - 将变量中的数据取出来和指定的数据相加求和,然后将这个和
重新赋值给变量;变量 = 变量 + 数据
注意:复合的赋值运算符的左边的变量必须是已经赋值过的变量
name += 10
num = 10
num += 2 # num = num + 2 = 10 + 2 = 12
print(num ) # 12
num *= 2 # num = num * 2 = 12 * 2 = 24
print(num)
5.运算符的优先级
数学运算符>比较运算符>逻辑运算>赋值运算
数学运算:** > *、/、%、//、 > +、-
有括号先算括号里面
num = 10 + 20
and的优先级比or高
print(7 or 8 and 9) # 先算or :9 先算and :7
print(18 + 78 / 2 * 4 and 9 - 5 or 7)
18 + 39 * 4 and 4 or 7