运算符和分支结构
-----逻辑运算符
-----赋值运算符
-----流程控制
-----分支结构
-----for循环
一、逻辑运算符
1. and
- 逻辑与运算
1)应用场景:用来连接需要同时成立的多个条件,相当于生活中的‘并且’。
2)运算规则:条件1 and 条件2 - 如果两个条件都成立结果为True,只要一个条
件不成立结果为False
True and True - True
True and False - False
False and True - False
False and False - False
# 案例1:判断num是否能够同时被3和7整除
num = 36
print('num是否能够同时被3和7整除:', num % 3 == 0 and num % 7 == 0)
# False
# 练习:写出num是否是大于30的偶数的条件
num = 40
print('num是否是大于30的偶数:', num % 2 == 0 and num > 30)
# True
2. or
- 逻辑或运算
1)应用场景:如果多个条件中只要有一个条件成立就行,就使用or来连
接,就相当于生活中的‘或者’
2)运算规则:条件1 or 条件2 - 两个条件中只要有一个条件成立结果就是
True,两个条件都不成立结果为False
True and True - True
True and False - True
False and True - True
False and False - False
# 练习1:写出num是否能被3或者7整除的条件
num = 60
print('num是否能被3或者7整除:', num % 3 == 0 or num % 7 == 0)
# True
# 练习2:写出year是否是闰年的条件
year = 2022
print('year是否是闰年:', (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
# False
3. not
- 逻辑非运算
1)应用场景:对一个条件进行否定,相当于生活中的否定词‘不’
2)运算规则:not条件 - 对指定条件进行否定(取反)
not True - False
not False - True
# 案例:age不大于18
age = 28
print(not age > 18)
# False
# 练习1:判断num是否不是偶数
num = 20
print(not num % 2 == 0)
# False
# 练习2:判断num是否不能同时被3和7整除
num = 42
print(not(num % 3 == 0 and num % 7 == 0))
# False
二、赋值运算符
1.赋值运算符:=、+=、-=、*=、/=、//=、%=、**=
1)=
: 变量 = 数据 - 直接将数据保存到变量中
a = 100
2)+=
:变量 += 数据 - 将变量中保存的数据和后面的数据进行加法运
算,最后将计算结果保存到前面的变量中
(注意:这儿的变量必须是已经赋值过的变量)
a = 100
a += 10
print(a) # a = 110
a -= 5
print(a) # a = 105
a %= 10
print(a) # a = 5
a *= 10
print(a) # a = 50
2. 运算符优先级
1)数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
2)数学运算符:**
> (*
、/
、//
、%
)> (+
、-
)
3)逻辑运算符: and
> or
4)有括号先算括号里面的 - ()
三、流程控制
根据代码执行过程的不同,可以将代码分为三种结构:
1. 顺序结构(默认):代码从上往下按顺序执行,每条语句只执行一次。
# 顺序结构代码
print('你好')
print('你真棒')
print('交个朋友吧')
# 你好
# 你真棒
# 交个朋友吧
2. 分支结构:根据条件选择执行代码 - if语句
# 分支结构代码
age = 28
if age >= 18:
print('成年')
else:
print('未成年')
3. 循环结构:代码重复执行 - for、while循环
# 循环结构代码
for x in range(6):
print('哈哈哈')
# 哈哈哈
# 哈哈哈
# 哈哈哈
# 哈哈哈
# 哈哈哈
# 哈哈哈
四、分支结构
(分支结构存在的价值:解决程序中‘如果×××就×××’的业务逻辑)
1. if单分支结构 - 条件成立就执行某个操作,条件不成立这个操作就不执行
1) 解决:如果×××就×××
2) 语法:
if 条件语句:
代码段
3) 说明:
a. if - 固定写法
b. 条件语句 - 任何有结果的表达式(一般是判断语句)
c. : - 固定写法
d. 代码段 - 结构上,和if保持一个缩进(tab)的一条或者多条语句(至少一条)
逻辑上,代码段里面的代码就是满足条件才会执行的代码
# 案例:如果num是偶数就在控制台打印‘偶数’
num = 30
if num % 2 == 0:
print('偶数')
# 偶数
# 练习1:根据age的值打印‘成年’
age = 18
if age >= 18:
print('成年')
# 成年
练习2:如果year对应的年份是闰年就打印‘闰年’
year = 2000
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print('闰年')
# 闰年
2. if双分支结构 - 条件成立执行某个操作,条件不成立的时候执行另一个操作
1)解决:如果×××就×××,否则就×××
2)语法:
if 条件语句:
代码段1(条件成立会执行的代码)
else:
代码段2(条件不成立会执行的代码)
# 练习1:根据num的值打印‘偶数’或者‘奇数’
num = 13
if num % 2 == 0:
print('偶数')
else:
print('奇数')
# 奇数
# 练习2:根据year的值打印‘闰年’或者‘平年’
year = 2022
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print('闰年')
else:
print('平年')
# 平年
3. if多分支结构 - 根据不同的条件做不同的事情
1)解决:如果×××就×××,如果×××就×××,如果×××就×××
a. 方法1: - 每个条件都会判断一次 (用在多个条件中一个条件成立,另外的条件也可能成立)
if 条件1:
代码段1
if 条件2:
代码段2
if 条件3:
代码段3
…
# 案例:根据百分制的分数值打印对应的等级:90及以上 - A、80多分 - B、60多分、70多分 - C、60分以下 - D
score = 96
if score >= 90:
print('该同学的成绩等级为:', 'A')
if 80 <= score < 90:
print('该同学的成绩等级为:', 'B')
if 60 <= score < 80:
print('该同学的成绩等级为:', 'C')
if score <= 60:
print('该同学的成绩等级为:', 'D')
# 该同学的成绩等级为: A
b. 方法2: - 后面的条件在前面的条件不成立的情况下才判断 (用在多个条件中其中一个条件成立,另外的条件
绝对不会成立)
if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码段3
…
elif 条件N:
代码段N
else:
代码段M
# 案例:根据百分制的分数值打印对应的等级:90及以上 - A、80多分 - B、60多分、70多分 - C、60分以下 - D
score = 96
if score >= 90:
print('该同学的成绩等级为:', 'A')
elif score >= 80:
print('该同学的成绩等级为:', 'B')
elif score >= 60:
print('该同学的成绩等级为:', 'C')
else:
print('该同学的成绩等级为:', 'D')
# 该同学的成绩等级为: A
# 练习:根据num的值打印:’奇数‘、’偶数‘、’4的倍数‘ (嵌套)
num = 24
if num % 2 == 0:
print('偶数')
if num % 4 == 0:
print('4的倍数')
else:
print('奇数')
# 偶数
# 4的倍数
五、for循环
1. for循环 - 让代码重复执行
1)语法:
for 变量 in 序列:
循环体
2)说明:
a. for、in、冒号 - 固定写法
b.变量 - 可以是没有定义的变量名,也可以是已经定义过的变量名
c.序列 - 容器型数据类型的数据,比如:字符串、列表、字典、集合元组、迭代器、生成器、range等
d.循环体 - 结构上,和for保持一个缩进的一条或者多条语句(至少一条)
逻辑上,循环体就是需要重复执行的代码
3)执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体
(for循环的循环次数由序列中元素的个数决定)
for x in '你好呀':
print(x, 'hello')
# 你 hello
# 好 hello
# 呀 hello
for x in [10, 20, 30, 40, 50]:
print(x, 'hello world!')
# 10 hello world!
# 20 hello world!
# 30 hello world!
# 40 hello world!
# 50 hello world!