Python 基础知识 之 选择(分支)结构 + 模式匹配结构(match)

选择结构

  • 按照条件选择执行不同的代码段

1. 单分支结构if语法结构

image

  • 执行流程:如果表达式的值为True,就执行语句块,如果表达式的值为False,就跳过语句块,继续执行下面的语句 ⭐

  • 注意: ⭐⭐⭐

  1. 表达式后面的冒号
  2. 缩进,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的布尔值为True
    print('n是偶数')
else:
    print('n是计数')

n = 98 # 赋值操作

if not n % 2:   #not取反  not False的结果为True
    print('n是偶数')
else:
    print('n是奇数')
------------------------------------------------
# 3.  判断一个字符串是否为空字符串
x = input('请输入一个字符串:')
if x: #在python中一切皆对象,每个对象都有一个布尔值,而非空字符串的布尔值是True,空字符串的布尔值为False
    print('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···语法结构

image

  • 示例:
# 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. 多分支结构

  • 多选一执行
    image
  • 示例
# 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使用

  • 单分支结构、双分支结构和多分支结构在实际开发中是可以互相嵌套使用的,内层的分支结构将作为外层分支结构的语句块使用
    image
  • 示例:
# 判断酒驾
answer = input("请问您喝酒了嘛?")
if answer == "y" or "Y":
    proof=eval(input('酒精含量:'))
    if proof < 20:
        print('构不成酒驾,祝您一路平安')
    elif proof < 80:  # 20<=proof<80
        print('已构成醉驾标准,请不要开车')
    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('差')
posted @   kyle_7Qc  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示