Day2 - python的运算符和分支结构
01-运算符
python中支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算(了解)
- 数学运算符:+(加法运算)、-(减法运算)、
*
(乘法运算)、/(除法运算)、%(取余、取模)、//(整除)、**
(幂运算)
- +、-、、/和数学中的功能一模一样
- % - 取余、取模(数学中的求余数): x % y - 求x除以y的余数
- 应用1:判断一个数是否能被另一个数整除
num = int(input('情书入一个数:'))
print(num % 3)
- 应用2:取整数的低位数
print(231 % 10)
- // —— 整除(商取整): x // y —— x除以y的商向小取整
print(5 // 2)
print(-5 // 2)
- 应用:获取高位数、去掉低位数
print(2345 // 100)
- 练习:任意大于100的数的高位数取其百位上的数字
num1 = int(input('请输入一个大于100的整数:'))
print(num1 // 100 % 10)
print(num1 % 1000 //100)
- ** —— 幂运算 :x**y ->求x的y次方
print(2 ** 3)
print(3 ** 3)
print(4 ** 0.5)
print(8 ** (1/3))
- 比较运算符:>、<、>=、<=、==、!=
所有的比较运算符的运算结果都是布尔值
注意:Python中的比较运算符支持连写的方式表示取值范围
age = 24
print(18 <= age <= 28)
- 逻辑运算符:and(与)、or(或)、not(非)
- and —— 逻辑与
应用场景:相当于生活中的‘并且’,当需要多个条件同时满足的时候使用
运算规则:都是True结果就是True,只要有一个是False结果就是False
True and True -> True
True and False -> False
False and True -> False
False and False -> False
练习:写出一个数是否能够同时被3和7整除的条件
num2 = int(input('请输入一个数:'))
print('是否能同时被3和7整除:',num2 % 3 == 0 and num2 % 7 == 0 )
- or —— 逻辑或运算
应用场景:相当于生活中的‘或者’,需要多个条件中只要有一个条件满足的时候使用
运算规则:都是False结果才是False,只要有一个是True结果就是True
练习:写出判断闰年的条件
years = int(input('输入年份:'))
print('是否是闰年:', (years % 4 == 0 and years % 100 != 0) or years % 400 == 0)
- not —— 逻辑非运算
应用场景: 对某一个条件进行否定
运算规则: True变False,False变True
练习:写出不能同时被3和7整除的条件
print(not num2 % 21 == 0)
- 短路操作
and 的短路操作:条件1 and 条件2 ——如果是条件1是False,条件2不会执行
or 的短路操作:条件1 or 条件2 ——如果条件1是True,条件2不会执行
False and print('====')
True and print('+++')
- 运算对象不是布尔值
实际开发的时候逻辑运算符的运算对象和运算结果一般都是布尔值,但是面试的时候喜欢考 运算对象不是布尔得情况
表达式1 and 表达式2 - 如果表达式1的结果是True,那么运算结果就是表达式2的值;
如果表达式1的结果是False,那么运算结果是表达式1的值
表达式1 or 表达式2 - 如果表达式1的结果是False,那么运算结果就是表达式2的值
如果表达式1的结果是True,那么运算结果就是表达式1的值
注意:如果表达式的值不是布尔,就转换成布尔再判断
怎么转:python中任何类型的数据都可以转换成布尔值,所有为0为空的值都会转换成 False,其他的值都是True
布尔值的转换
print(bool(0))
print(bool(100),bool(-1000))
print(bool(''),bool(""))
print(bool(' '),bool('False'))
- 赋值运算符:=、+=、-=、/=、%=、//=、**=
所有的赋值运算符都是用来给变量赋值,赋值运算符的左边必须是变量;
复合的赋值运算符左边的变量必须是已经赋值过的变量。
- =
a = 10
- 复合的赋值运算符
a += 3
- 运算符的优先级
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
数学运算符:** > * 、/、%、// > +、-
逻辑运算符:and > or
如果有括号先算括号里面的内容 - *位运算:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)
位运算的运算效率比一般的运算符都要高(高出几十倍到几百倍)
- 应用1:判断整数的奇偶性 - 数字对1进行按位与运算,如果结果是1就是奇数,0就是偶数
print(28 & 1, 10 & 1, 102 & 1, -20 & 1)
print(11 & 1, 9 & 1, -23 & 1, 1005 & 1)
- 应用2:
数字 << N —— 快速乘 2**N
数字 >> N —— 快速整除 2**N
数字 << 1 —— 快速乘2:数字*2
数字 >> 1 —— 快速整除2:数字//2
print(4 << 1, 5 << 1, 5 << 2)
print(4 >> 1, 5 >> 1, -5 >> 1)
02-分支结构
- 流程控制
- 顺序结构
- 分支结构——if
- 循环结构——for 、while
- 分支结构
- if单分支结构 —— 满足条件执行某个操作,不满足就不行
执行过程:
先判断条件语句是否为True(如果不是布尔值就转换成布尔再判断),
如果是True就执行代码段,否则代码段不执行
a = int(input('请输入一个数:'))
if a == 10:
print('hello')
练习:输入一个整数,如果是偶数就打印"这个数能被2整除"
num = int(input('请输入一个数:'))
if num & 1 == 0:
print('这个数能被2整除')
- if双分支结构 —— 满足条件执行某个操作,条件不满足执行另一个操作
练习1:判断奇偶
num1 = int(input('请输入一个数:'))
if num1 & 1:
print('奇数')
else:
print('偶数')
练习2:判断成年
age = int(input('请输入年龄'))
if age >= 18:
print('成年')
else:
print('为成年')
- if多分支结构 —— 根据不同的条件执行不同的操作
练习:输入学生绩点,判断该学生能获得的奖学金等级
1等奖 绩点 > 4; 二等奖 3.5 < 绩点 < 4 ; 3等奖 3 <= 绩点 < 3.5 ; 2.5 <= 绩点 ❤️
grade = float(input('请输入绩点:'))
if grade > 4:
print('一等奖')
elif grade >= 3.5:
print('二等奖')
elif grade >= 3:
print('三等奖')
elif grade >= 2.5:
print('四等奖')
else:
print('没有奖')