python支持的运算符:数学运算符、比较运算符、逻辑运算符、*位运算
数学运算符
+(加)、-(减)、*(乘)、/(除)、//(整除)、%(取余、取模)、**(幂运算)
-
+、-、*、/ 和数学中的+、-、×、÷ 功能和用法一模一样
注意:/(除法运算)的运算结果是浮点型
print(1+1) # 2 print(2-5) # -3 print(2*5) # 10 print(2/5) # 0.4
-
运算结果可以保存在变量中
result = 3*3 print(result) # 9
-
运算对象不一定非得是数据,还可以是变量
num = 10 print(num / 2) # 5.0
-
// - 求商,商保留整数部分(向小取整)
print(5/2) # 2.5 print(5//2) # 2 print(1.8/2) # 0.9 print(1.8//2) # 0.0 print(-2.8//2) # -2.0 print(-5//2) # -3
-
应用:取高位数(去低位)
-
练习
- 写代码获取输入的任意三位数的百位数
num = 980 print(980//100) # 9
- 去掉任意整数的个位数
print(678//10) # 67
- % - 取余、取模、求余数
-
x % y - 求x除以y的余数
print(5 % 2) # 1
-
应用1:判断一个数是否能够被另外一个数整除
print(7 % 3) # 1 -> 不是0,所以7不能被3整除 print(9 % 3) # 0 -> 是0,所以9能被3整除
-
应用2:判断一个数的奇偶性
print(13 % 2) # 1 -> 不能被2整除,判断为奇数 print(24 % 2) # 0 -> 能被2整除,判断为偶数
-
应用3:取低位数
num = 824 print(num % 10) # 4 print(num % 100) # 24
- ** - 幂运算
-
x ** y - 求x的y次方
print(2 ** 3) # 8 print(3 ** 2) # 9
注意:次方数如果是N分之一就是开N次方
print(16 ** (1/2)) # 4.0 print(16 ** 0.5) # 4.0 print(8 ** (1/3)) # 2.0 print(256 ** 0.5) # 16.0
比较运算符
>(大于)、<(小于)、==(等于)、!=(不等于)、>=(大于等于)、<=(小于等于)
-
所有比较运算符的运算结果都是布尔值
print(10 > 20) # False print(10 < 20) # True print(10 == 20) # False print(10 != 20) # True print(10 == 10) # True print(10 >= 10) # True
-
python支持表示范围的连写方式
num = 10 print(0 < num < 20) # True
-
运算结果不是一定要打印,也可以用变量保存
result = num < 18 print('result:',result) # result: True
逻辑运算符
and(逻辑与)、or(逻辑或)、not(逻辑非)
注意:从应用角度来讲,所有的逻辑运算符的运算结果都是布尔值
-
and - 逻辑与运算
-
应用场景:相当于生活中的并且;用于需要多个条件同时满足的情况
-
运算规则:条件1 and 条件2 - 如果条件1和条件2都成立,结果就是True,只要有一个是不成立的,结果就是False
True and True -> True
True and False -> False
False and True -> False
False and False -> False
练习:写出判断一个数是否能同时被3和7整除的条件
num = 21 # 条件1:能被3整除(num % 3 == 0) # 条件2:能被7整除(num % 7 == 0) # 方法一: print('是否能同时被3和7整除:',num % 3 == 0 and num % 7 == 0) # True # 方法二: print('是否能同时被3和7整除:',num % 21 == 0) # True
-
-
or - 逻辑或运算
-
应用场景:相当于生活中的或者;用于需要多个条件中只要有一个条件满足的场景
-
运算规则:条件1 or 条件2 - 如果条件1或者条件2中,有一个是True,结果就是True,两个都是False,结果才是False
True or True -> True
True or True -> True
False or True -> True
False or False -> False
练习1:写出判断一个数是否能被2或者5整除
num = 10 print('是否能被2或者5整除',num % 2 == 0 or num % 5 == 0) # True num = 12 print('是否能被2或者5整除',num % 2 == 0 or num % 5 == 0) # True num = 13 print('是否能被2或者5整除',num % 2 == 0 or num % 5 == 0) # False num = 15 print('是否能被2或者5整除',num % 2 == 0 or num % 5 == 0) # True
练习2:判断指定的年是否是闰年
# 闰年的条件:1)能被400整除(世纪闰年) 2)能被4整除,但是不能被100整除(普通闰年) year = 2001 # 条件1:能被400整除(year % 400 == 0) # 条件2:能被4整除但是不能被100整除:year % 4 == 0 and year % 100 != 0 # 能被4整除:year % 4 == 0 # 不能被100整除:year % 100 != 0 print('是否是闰年',(year % 400 == 0) or (year % 4 == 0 and year % 100 != 0)) # False
-
-
not - 逻辑非运算
-
应用场景:对一个条件进行否定
-
运算规则:not 条件 - 对指定条件进行否定
not True -> False
not False -> True
age = 20 print(age > 18) # True print(not age > 18) # False(age不大于18) print(age <= 18) # False
练习:写一个条件判断一个数是否不能同时被3和7整除
# 练习:写一个条件判断一个数是否不能同时被3和7整除 # 1)能被3整除不能被7整除 # 2)能被7整除不能被3整除 # 3)既不能被3整除也不能被7整除 num = 19 print('不能同时被3和7整除:',not (num % 3 == 0 and num % 7 == 0)) # True print('不能同时被3和7整除:',not num % 21 == 0) # True
-
逻辑运算符扩展
- 逻辑运算符的短路操作
-
逻辑与运算的短路
条件1 and 条件2 - 如果条件1是False,那么条件2对应的代码不执行,结果直接是False
-
逻辑或运算的短路
条件1 or 条件2 - 如果条件1是True,那么条件2对应的代码不执行,结果直接是True
False and print('hello') # -> False True or print('world!') # -> True
- 运算对象不是布尔值
-
逻辑与的通用运算规则
数据1 and 数据2 - 判断数据1的布尔值是否是True,如果是,那么整个结果就是数据2,否则整个结果就是数据1
数据1 or 数据2 - 判断数据1的布尔值是否是False,如果是,那么整个结果就是数据2,否则整个结果就是数据1
补充:数据的布尔值(任意数据怎么转换成布尔)(重要!!!):
python中所有的数据(不管是什么类型的数据)都有布尔值,所有的零值(0、0.0)和空值(空字符串、空列表、空集合等)的布尔值是False,其他都是True
print(True and 10) # 10 print(False and 10) # False print(8 and 7) # 7 print(0.0 and 10) # 0.0 print(8 or 7) # 8 print(0 or 8) # 8 print(not 7) # False print(not '') # True
赋值运算符
简单的赋值运算符:=,复合赋值运算符:+=、-=、*=、/=、//=、%=、**=
注意:1) 所有的赋值运算符最终的目的是给变量赋值;
2) 赋值符号左边必须是变量,右边可以是任何有结果的表达式(除了赋值语句)
3) 复合赋值运算符的左边必须是已经赋值过的变量
-
=
a = 19 age = 20
-
复合赋值运算符
a = 19
a += 10 # a = a + 10 = 19 + 10 -> a = 19 + 10
print(a) # 29
a -= 15 # a = a - 15 = 29 - 15 -> a = 29 - 15
print(a) # 14
a *= 3
print(a) # 42
a /= 5
print(a) # 8.5
a //= 2
print(a) # 4.0
a **= 3
print(a) # 64.0
a %= 7
print(a) # 1.0
- 运算符的优先级
-
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符 (最低)
-
数学运算符:** > *、/、//、% > +、-
-
有括号先算括号里面的(这儿的括号是小括号)
num = 23 print(num % 3 == 0 and num % 7 == 0) # False result = 10 + 3 > 2 * 10 print(result) # False print(3 * 3 ** 2) # 27
-
布尔参与数学运算的时候:True是1,False是0
print(True + 1) # 2 print(False + 1) # 1
分支结构
- 流程控制
- 顺序执行 - 代码从上往下一条一条的按顺序执行(默认执行方式)
- 分支结构 - 根据条件选择执行或者不执行某些代码(if语句)
- 分支结构
python中能够实现分支结构的只有if
1)if单分支结构 - if
-
应用场景:如果满足某个条件就执行某段代码,条件不满足就不执行
-
语法:
if 条件语句:
代码段
-
说明:
-
if - 关键字;固定写法
-
条件语句 - 任何有结果的表达式(包括具体的数据、已经赋值过的变量、运算表达式-赋值语句除外…)
-
: - 固定写法(注意:必须使用英文输入法下的冒号)
-
代码段 - 和if保持一个缩进的一条或者多条语句;需要在满足条件才会执行的代码
-
执行过程:先判断if后面的条件语句是否为True(如果不是布尔,就看结果的布尔值是否是True),如果是True,就执行 代码段,否则代码段不执行
if True: print('第一条语句') # 第一条语句 print('第二条语句') # 第二条语句
练习:如果指定的年龄已成年,就打印’可以进网吧’
age = 19 if age >= 18: print('可以进网吧') # 可以进网吧
- if 双分支结构:if - else
-
应用场景:满足条件执行某个操作,不满足的时候执行另外一个操作
-
语法:
if 条件语句:
代码段1(满足条件需要执行的代码)
else:
代码段2(不满足条件的时候需要执行的代码)
-
执行过程:先判断if后面的条件语句是否为True(如果不是布尔,就看结果的布尔值是否是True),如果是True,就执行代码段1,否则执行代码段2
练习1:根据num的值打印’偶数’或者’奇数’
num = 13 if num % 2 == 0: print('偶数') else: print('奇数') # 奇数
练习2:根据year的值打印’闰年’或者’平年’
# 闰年的条件:1)能被400整除(世纪闰年) 2)能被4整除,但是不能被100整除(普通闰年) year = 2000 # 写法一: if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0): print('闰年') # 闰年 else: print('平年') # 写法二: condition = (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0) if condition: print('闰年') # 闰年 else: print('平年')
练习3:根据symbol的值来对num进行加1或者减1的操作,symbol是’+‘就加1,symbol是’-'就减1
symbol = '+' num = 10 if symbol == '+': num += 1 if symbol == '-': num -= 1 print(num) # 11