选择结构
- 按照条件选择执行不同的代码段
1. 单分支结构if语法结构
-
执行流程:如果表达式的值为True,就执行语句块,如果表达式的值为False,就跳过语句块,继续执行下面的语句 ⭐
-
注意: ⭐⭐⭐
- 表达式后面的冒号;
- 缩进,python中通过缩进来控制程序逻辑
- 示例;
# 1. 判断是否中奖
number = eval(input('请输入您的6位中将号码:')) #eval将输入的类型(字符型)转化为int类型
# 使用if语句
if number == 987654: #等值判断print('中奖了')if number != 987654:print('您未中奖')
# 以上if判断的表达式,是通过比较运算符计算出来的,结果是布尔类型
--------------------------------------------------------------------------
# 2. 判断奇偶数
n = 98 # 赋值操作if n % 2: # %取余操作 ,98%2的余数为0,0的布尔值为False,非0的布尔值为Trueprint('n是偶数')
else:print('n是计数')n = 98 # 赋值操作if not n % 2: #not取反 not False的结果为Trueprint('n是偶数')
else:print('n是奇数')
------------------------------------------------
# 3. 判断一个字符串是否为空字符串
x = input('请输入一个字符串:')
if x: #在python中一切皆对象,每个对象都有一个布尔值,而非空字符串的布尔值是True,空字符串的布尔值为Falseprint('x是一个非空字符串')if not x:print('x是一个空字符串')
----------------------------------------------------
# 4. 表达式也可以是一个单纯的布尔类型flag = eval(input('请输入一个布尔类型True or False:')) #注意input输入的类型为str,
if flag:print('flag的值为True')
if not flag:print('flag的值为False')# 5. 使用if语句时,如果语句块中只有一句代码,可以将语句块直接写在冒号后面
a=10
b=8
if a>b:max = a ==> if a>b:
print('a和b的最大值为:',max) max = a
2. 双分支结构if···else···语法结构
- 示例:
# 1. 判断中奖使用if···else··语句
number = eval(input('请输入6位中奖号码:'))
if number == 987654: #等值判断print('中奖了')
else:print('您未中奖')
精简版:print('您中奖了' if number == 987654 else '您未中奖') #如果判断成立,输出if之前的语句,如果不成立,输出if之后的语句
----------------------------------------------------------
# 2. 判断生日那年的
birth = eval(input('birth: '))
if birth < 2000:print('00qian')
else:print('00hou')
3. 多分支结构
- 多选一执行
- 示例
# 1. 判断bmi是否正常
tall = 1.78
weight = 60
bmi = (weight / tall **2 )
print (bmi)
if bmi < 18.5:print ('too thin')
elif 18.5 < bmi <25:print ('normal')
elif 25 < bmi <28:print('too weight')
elif 28< bmi <32:print ('fat')
else:print ('too fat')
-------------------------------------------------
# 2. 判断年龄
age = eval(input('age: '))
if (age < 6):print ("kid")
elif age < 18:print ('teenager')
else:print ('adult')
-------------------------------------------------------
# 3. 判断成绩
score = eval(input('请输入您的成绩:'))
if score < 0 or score > 100:print('成绩有误')
elif 90<= score<=100:print('A')
elif 80 <= score <= 90:print('B')
elif 70 <= score <= 80:print('C')
elif 60 <= score <= 70:print('D')
else:print('E')
4. 嵌套if使用
- 单分支结构、双分支结构和多分支结构在实际开发中是可以互相嵌套使用的,内层的分支结构将作为外层分支结构的语句块使用
- 示例:
# 判断酒驾
answer = input("请问您喝酒了嘛?")
if answer == "y" or "Y":proof=eval(input('酒精含量:'))if proof < 20:print('构不成酒驾,祝您一路平安')elif proof < 80: # 20<=proof<80print('已构成醉驾标准,请不要开车')else:print('已达到酒驾')
else:print('go')
5. 多个条件的连接
- and(同时满足),or(其中之一满足)
- 示例:
# 1. 使用and连接多个选择条件 (登录案例)
user_name = input('请输入用户名:')
pwd = input('请输入您的密码:')
if user_name == 'kyle' and pwd =='666':print('登录成功')
else:if user_name != 'kyle':print('用户名不对')else:print('密码不对')
---------------------------------------------------------
# 2. 使用or连接多个选择条件 (成绩案例)
score = eval(input('请输入您的成绩:'))
if score < 0 or score >100:print('成绩无效')
else:if 90 <= score <= 100:print(score,'A')elif 80 <= score <= 90:print(score,'B')elif 70 <= score <= 80:print(score,'C')elif 60 <= score <= 70:print(score,'D')else:print(score,'E')
模式匹配结构(match)
- match ,case
- 示例:
# 1. 判断年龄
# age = 20
age = eval(input('请输入您的年龄:'))
match age:case x if x < 10:print(f'< 10 years old: {x}','kid')case 10:print('10 years old.','children')case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:print('11~18 years old.','teenager')case _:print(age,'years old.','adult')
# 2. 判断成绩等级
score = input('请输入您的成绩等级:')
match score:case 'A'|'a':print('优秀')case 'B'|'b':print('良好')case 'C'|'c':print('及格')case 'D'|'d':print('差')