Python27:核心语法-流程控制语句-match模式匹配

模式匹配 match... case

结构模式匹配就是用一个清晰的 模板 去精准地匹配数据的结构和内容,匹配成功则执行相应的操作。

执行流程

1、首先计算match指定的表达式的值。

2、从上到下依次和case后面的值进行匹配,匹配正确,就执行对应语句。

3、如果前面所有的case都没有匹配上,就会执行默认的case _。

python 复制代码
# 工作日程安排
day = input("请输入星期几(1-7):")
match day:
    case "1":
        print("周一:工作会议日")
    case "2":
        print("周二:学习培训日")
    case "3":
        print("周三:项目开发日")
    case "4":
        print("周四:代码审查日")
    case "5":
        print("周五:总结规划日")
    case "6" | "7":     # 其中的| 表示或的关系,匹配多个模式中的任意一个
        print("周末:休息放松日")
    case _:     # 匹配其他所有情况
        print("输入错误!")
python 复制代码
# 实现一个计算器,可以实现 + - * / 运算,用户输入需要运算的两个数以及运算符之后,就可以进行计算。
num1 = float(input("请输入第一个数:"))
num2 = float(input("请输入第二个数:"))
oper = input("请输入运算符( + - * / ):")

match oper:
    case "+":
        print(f"{num1} + {num2} = {num1 + num2}")
    case "-":
        print(f"{num1} - {num2} = {num1 - num2}")
    case "*":
        print(f"{num1} * {num2} = {num1 * num2}")
    case "/" if num2 != 0:  # if条件成立,才匹配这个case
        print(f"{num1} / {num2} = {num1 / num2}")
    case _:
        print("操作不支持!")

"""
请输入第一个数:10
请输入第二个数:2
请输入运算符( + - * / ):/
10.0 / 2.0 = 5.0
"""

'''
请输入第一个数:5
请输入第二个数:0
请输入运算符( + - * / ):/
操作不支持!
'''

match...case 是3.10版本中的新语法

应用场景总结:

match:基于某个变量的多个固定值进行分支判断时,可以使用match模式匹配

if:条件判断涉及复杂的逻辑判定、范围比较及组合条件时

python 复制代码
# 案例:请你编写一个游戏角色移动控制系统,根据玩家输入的不同指令,控制游戏角色执行相应的(输出控制台)。

# 游戏角色移动控制系统 ------ 使用match case 写法
cmd = input("请输入控制指令:")

match cmd:
    case "上" | "w" | "W":
        print("角色向上移动")
    case "下" | "s" | "S":
        print("角色向下移动")
    case "左" | "a" | "A":
        print("角色向左移动")
    case "右" | "d" | "D":
        print("角色向右移动")
    case "跳" | " " :
        print("角色跳跃")
    case "攻击" | "j" | "J":
        print("角色发动攻击")
    case "退出" | "esc" | "ESC":
        print("角色退出游戏")
    case _:
        print("输入指令无效,请重新输入!")

# 循环进阶版(更像游戏)
# 循环版游戏控制(match...case 写法)
print("===== 游戏角色控制系统 =====")

while True:     #效果就是:输一次指令 → 执行 → 又可以输 → 又执行 → 一直玩下去
    cmd = input("请输入指令:")

    match cmd:
        case   "上" | "w" | "W":
            print("→ 角色向上移动")
        case "下" | "s" | "S":
            print("→ 角色向下移动")
        case "左" | "a" | "A":
            print("→ 角色向左移动")
        case "右" | "d" | "D":
            print("→ 角色向右移动")
        case "跳" | " ":
            print("→ 角色跳跃")
        case  "攻击" | "j" | "J":
            print("→ 角色发动攻击")
        case "退出" | "esc" | "ESC":
            print("→ 退出游戏,游戏结束!")
            break
        case _:
            print("× 指令无效")

# 游戏角色移动控制系统 (用 if...elif...else实现)
# 接收玩家输入,判断指令,输出对应动作

# 1. 获取玩家输入的指令
cmd = input("请输入控制指令(上/下/左/右/跳/攻击/退出 或 w/s/a/d/j/esc等): ")

# 2. 判断指令,执行对应动作
if cmd in ["上", "w", "W"]:
    print("角色向上移动")
elif cmd in ["下", "s", "S"]:
    print("角色向下移动")
elif cmd in ["左", "a", "A"]:
    print("角色向左移动")
elif cmd in ["右", "d", "D"]:
    print("角色向右移动")
elif cmd in ["跳", " "]:  # 空格直接写一个引号空格
    print("角色跳跃")
elif cmd in ["攻击", "j", "J"]:
    print("角色发动攻击")
elif cmd in ["退出", "esc", "ESC"]:
    print("角色退出游戏")
else:
    # 输入不识别的情况
    print("输入指令无效,请重新输入!")

# 进阶版(可以一直玩,直到输入退出,更像真实游戏)
# 游戏角色移动控制系统 - 循环版,可一直操作
print("===== 游戏角色控制系统 =====")
print("操作指令:上/下/左/右/跳/攻击/退出")
print("快捷键:w s a d j esc")
print("输入 退出 结束游戏\n")

while True:  # 无限循环,直到输入退出
    cmd = input("请输入指令:")

    if cmd in ["上", "w", "W"]:
        print("→ 角色向上移动")
    elif cmd in ["下", "s", "S"]:
        print("→ 角色向下移动")
    elif cmd in ["左", "a", "A"]:
        print("→ 角色向左移动")
    elif cmd in ["右", "d", "D"]:
        print("→ 角色向右移动")
    elif cmd in ["跳", " "]:
        print("→ 角色跳跃")
    elif cmd in ["攻击", "j", "J"]:
        print("→ 角色发动攻击")
    elif cmd in ["退出", "esc", "ESC"]:
        print("→ 角色退出游戏,游戏结束!")
        break  # 跳出循环,结束程序
    else:
        print("× 指令无效,重新输入")

**声明:**本篇学习笔记参考黑马程序员相关课程,部分素材来源于网络公开资料及本人补充;文中为个人整理复盘,仅供学习交流使用。

相关推荐
奋进的LY1 小时前
spacy的安装和使用教程
人工智能·python·深度学习·github
znx9391 小时前
机器学习赋能量化交易:解锁新时代投资的核心竞争优势
人工智能·python·机器学习·期魔方
xzal121 小时前
Python 列表操作笔记:append / extend / + / pop
笔记·python
minji...1 小时前
LangGraph-AI智能体开发框架 - LangGraph 入门案例1 : 智能快递配送系统
人工智能·python·ai·langchain·大语言模型·agent·langgraph
Είναι η κοπέλα1 小时前
PyTorch 安装与验证
人工智能·pytorch·python
“AI国潮设计-小江”1 小时前
Python实战 | SDXL批量生成“潮汕英歌舞”国潮甜品IP,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
2601_962885722 小时前
如何用 Python 分析股票的日历效应?(星期效应与月份效应,附数据挖掘陷阱)
开发语言·python·数据挖掘
czq_26867194872 小时前
Python打卡第30天
python·机器学习
FYKJ_20102 小时前
SSM校园互助与闲置交易平台62145-计算机课程设计、毕业设计
java·spring boot·python·mysql·架构·spark·课程设计