运算符和分支结构
运算符
数学运算符 | |
---|---|
加 | + |
减 | - |
乘 | * |
除 | / |
求余数,取余 | % |
整除 | // |
幂运算 | ** |
1,+ ,- , * ,/和数学中+,-,*,/的功能是一样的
print(1 + 3) #4
print(7 - 2) #5
print(2 * 8) #16
print(4 / 1) #4.0
1),% - 求余数,取值
x % y - 求x除于y的余数
print(5 % 2) #1
print(16 % 2) #0
应用1:判断一个数是否能够被另外一个数整除(看余数是否为0)
print(15 % 5)
应用2:取低位数(对10或者10的幂次方取余)
num = 2398
print(num % 10) #8 除于10取个位数取值
print(num % 100) #98 同理
num1 = 1344
print(num1 % 10) #4
print(num1 % 100) #44
2), // - 整除
x // y - x除于y的商向小取整
print(5 // 2) #2 2 2.5 3 找到整除结果相近的两个整数,取较小的那个
print(1.8 // 2) #0,0 0 0.9 1
print(-5 // 2) #-3 -3 -2.5 -2
应用:正整数去掉低位
num = 23456
print(num // 10) #2345 除于10去掉个位的值
print(num // 100) #234
练习1:获取指定正整数的十位数
num = 3945
print(num // 10 % 10) #4
num1 = num // 10
num2 = num1 % 10
print(num2) #4
print(num % 100 // 10) #4
练习2:获取指定正整数的百位数
num = 3945
print(num //100 % 10) #9
print(num % 1000 // 100) #9
3) , 幂运算 - **
x ** y - 求x的y次方
print(2 ** 3) #8
print(16 ** 0.5) #4.0
print(27 ** (1/3)) #3.0
print(2.2 ** 2) #4.840000000000001
print(2.0 ** 2) #4.0
# 10 -> 2 ** 3 + 2 ** 1
# 45 -> 2 ** 5 + 2 ** 3 + 2 ** 2 + 2 ** 0
#1/2 ** x1 + 1/2 ** x2 + ······
# 0.2 - 1/8 + 1/16 + 1/128 + ·····
# 0.2 = 0.125 + 0.0625 + 0.0078125 + ···
2,比较运算符
比较运算符:>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)
重要结论:所有比较运算的运算结果都是布尔
print(10 > 20) #False
print(10 < 20) #True
print(10 >= 10) #True
print(20 == 10) #False
print(20 != 10) #True
注意:python中的比较预算符可以像数据一样通过连写来表示范围
age = 20
print(18 <= age <= 28) #True
3,逻辑运算符
逻辑运算符:and(逻辑与运算符),or(逻辑与运算),not(逻辑非)
1),and - 逻辑与运算符
'''
1)应用场景:相当于生活中中的并且,用于连接需要同时满足的多个条件
2)运算规则:两个都是True 结果就是True ,只要有一个False结果就都是False
条件1 and 条件2
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
2),逻辑或运算 - or
"""
1)应用场景:相当于生活中的或者,用于多个条件中满足一个条件就行的情况
2)运算规则:只要有一个是True结果就是True,两个都为False结果才是False
True or True - True
True or False - True
False or True - True
False or False - False
"""
练习1
gpa = 4.0
scora = 95
# 拿奖学金的条件:绩点高于4或者操评分不低于95
print('是否可以拿奖学金',gpa >= 4 or scora >= 95) #True
练习:判断指定得到年是否是闰年
其判断方法为:公历年份是4的倍数,且不是100的倍数,为普通闰年。
只有是400的倍数才是世纪闰年。
year = 2020
print('指定年是否是闰年',(year % 4 == 0 and year % 100 != 0) or year % 400 == 0) #True
3),逻辑非 - not
not 条件 - 否定条件
"""
1)应用场景;对指定条件进行否定条件(取反),
一般用于正向条件情况很多很复杂,反向条件却很简单的时候,条件就反向写然后加not
2)运算规则:
not True - False
not False - True
"""
举例
# 年龄大于18:age > 18
# 年龄不大于18:age <= 18 not age >18
num = 18
print(num == 18) #True
print(not num == 18,num != 18) #False False
练习:写出一个不能被3和7整除的条件
# 能被3整除不能被7整除
# 能被7整除不能被3整除
# 既不能被3整除也不能被7整除
print(not num % 21 == 0) #True
4),短路操作
# 条件1 and 条件2 - 如果条件1是False,那么条件2不会执行
# 条件1 or 条件2 - 如果条件1是True,那么条件2不会执行
True and print('与运算的条件2') #与运算的条件2
False or print('或运算的条件2') #或运算的条件2
5,逻辑运算符的拓展 - 运算对象不是布尔值
"""
数据1 and 数据2 - 如果数据1的布尔值是True,结果就是数据2,否则结果是数据
数据1 or 数据2 - 如果数据据1的布尔值是True,结果就是数据1,否则结果是数据2
"""
print(8 and 7)#7
print(0 and 2) #0
print(False and 3)#False
print(8 or 9)#8
print(0 or 7)#7
# (特别重要)6,数据的布尔值 - 数据转换成布尔的结果
# python中所有类型的数据都有布尔值
# 所有的零值和空值对应的布尔值是False,其他数据的布尔值都是True
# 常见的零值和空值:0,0.0,0.00,'',"",[],{},(),None
print(bool(0),bool(0.0),bool('')) #False False False
print(bool(12),bool(-9.1212),bool('ban')) #True True True
4,赋值运算符:= , +=,*=,-=,%= ,//= ,**=,/=
(重要)重要结论:所有的赋值运算符的 功能都是给变量赋值不会产生一个结果(赋值运算的表达方式没有结果),所有赋值运算符的左边必须是变量
a = 10
10 > 20
# print(a = 10) 报错
print(10>20)
1),=
定义:变量或者重新给变量赋值的时候使用
name = 20
num = 10 * 20
print(num)
2),+=,-=,*=,/=,%=,//=,**=
要求:赋值符号前面的变量必须是已经定义过变量
# 变量 += 数据 -> 变量 = 变量 + 变量
b = 10
b += 2
print(b) #12
b -= 3
print(b) #9
b **= 2
print(b) #81
b %= 2
print(b) #1
3),运算符的优先级
数学和运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
** > *,/,%,// > +,-
# 有括号先算括号里面的
b = 10 + 20
c = 10 < 5 * 3 #c = 10 < 15 -> c = True
print(c)
5,分支结构
1),流程控制
"""
1)顺序结构(默认) - 代码从上往下依次执行,每条语句执行一次
2)分支结构 - 代码的执行看条件是否成立(if语句)
3)循环结构 - 让代码重复(for,while)
"""
2),if分支结构
1]if单分支结构(满足条件操作才执行,不满足条件操作不执行)
"""
语法:
if 条件语句:
代码段
说明
if - 关键字,固定写法
条件语句 - 仍和有结果的表达式,例如:数据,运算表达式(赋值运算除外),函数调用表达式等
: - 固定写法
代码段 - 就是和if保持一个缩进的一条或多条语句(至少一条) :就是需要满足条件才执行的代码
执行过程
先判断条件语句是否是True(如果条件语句的结果不是布尔,就转换成布尔再看),
如果为True就执行代码段,否则代码不执行
"""
a = 100
if a > 10:
print('代码1')
练习1:如果指定的数量是偶数就打印‘偶数’
num = 23
if num % 2 == 0:
print('偶数')
#了解
if not num % 2:
print('偶数')
练习2:如果指定的数量是偶数就打印‘奇数’
# 方法1
if num % 2 != 0:
print('奇数') # 奇数
#方法2
if num % 2:
print('奇数') # 奇数
练习3:判断指定的数据是否是水仙花数
num = 345
# 5 ** 3 + 4 ** 3 + 3 ** 3 = 216 1= 345 (不是水仙花数)
# 153:1 ** 3 + 5 ** 3 + 3 ** 3 = 153 == 153 (是水仙花数)
a = num % 10
b = num % 100 // 10
c = num // 100
if a ** 3 + 4 ** 3 + c ** 3 == num:
print('是水仙花数')
2]if双分支结构 - 满足条件执行某个操作,条件不满足时执行另一个操作
"""
语法:
if 条件语句:
代码段1(满足条件才执行的代码)
else:
代码段2(条件不满足的时候才执行的代码)
代码段3(不管条件满足不满足都要执行的代码)
"""
练习:根据年龄值打印成年或者为成年
age = 28
if age < 18:
print('未成年')
else:
print('成年') #成年
3]if多分支结构 - 根据不同的条件做不一样的事情
# if-elif-elif-...-else
"""
语法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段n
前提:多个条件中如果其中一个条件满足,其他的条件绝对不会满足
if 条件1:
代码段1
if 条件2:
代码段2
...
"""
练习:将指定百分制的分数分成A(90以上)/B[80,90]/C[60,80)/D(60以下)/四个等级
score = 90
if score > 90:
print('A')
elif 80 <= score:
print('B')
elif 60 <= score:
print('C')
else:
print('D') #B