Python3 教程-10. 阶段小实战
📌 版本说明:本教程支持 Python 3.8+,其中
match-case特性需要 Python 3.10+,如果您使用旧版本,文末提供了兼容写法。🎯 教程说明:本教程分为基础部分和进阶部分,零基础用户可以只学习基础部分完成游戏,有基础的用户可以深入学习测试与模块化设计。
创建的文件
guess_number.py - 游戏主程序
包含三个难度级别:简单 (1-10)、中等 (1-50)、困难 (1-100)
支持模式匹配(Python3.10+)处理用户输入
完善的输入验证(非数字、超出范围等)
支持单局游戏和多局游戏循环,支持中途退出
1 | import random |
test_guess_number.py - 进阶测试文件(可选,有基础用户可学习)
包含 8 个测试用例
覆盖难度配置、正确 / 错误猜测、边界条件、异常输入等场景
所有测试通过 ✅
1 | import pytest |
==提示:test_guess_number.py 和 guess_number.py 需要在同一目录==
运行方式
你可以通过以下命令运行游戏:
1 | python guess_number.py |
零基础用户:以上就是你需要的全部运行命令,下面的测试命令是进阶内容,你可以暂时跳过。
有基础用户:可以运行以下命令执行测试:
1 | python -m pytest test_guess_number.py -v |
Python 猜数字游戏
猜数字游戏作为编程入门的经典项目,不仅能帮助初学者掌握 Python 的基础语法,还能深入理解程序逻辑和控制流的设计。本文将从需求分析、逻辑实现到测试验证,系统地指导你构建一个功能完整且交互友好的猜数字游戏,包含难度分级、输入验证等特性。
1. 需求分析
1.1 核心功能需求
猜数字游戏的核心功能包括:
随机数生成:系统随机生成一个指定范围内的整数作为目标数字
用户交互:接收玩家输入的猜测数字,提供友好的提示信息,支持中途退出
猜测结果判断:比较玩家输入与目标数字,给出 “过大”、”过小” 或 “猜对” 的反馈
次数统计:记录玩家的猜测次数,在游戏结束时显示
游戏循环控制:支持单局游戏循环和多局游戏循环
1.2 扩展功能需求
为了提升游戏的可玩性和教学价值,我们添加以下扩展功能:
难度分级:提供简单(1-10)、中等(1-50)和困难(1-100)三种难度级别,不同难度对应不同的数字范围和最大尝试次数
输入验证:确保玩家输入的是有效数字,范围在指定范围内,且处理非数字输入的情况
模式匹配:使用 Python 3.10+ 的 match-case 语句简化用户命令和难度选择的处理(旧版本可兼容)
游戏结束选项:单局游戏结束后,询问玩家是否继续游戏
1.3 系统架构
游戏整体采用模块化设计,包含以下主要模块:
主程序模块:负责游戏启动、难度选择、多局游戏循环控制
游戏引擎模块:实现单局游戏的核心逻辑,包括随机数生成、猜测循环、结果判断等
用户交互模块:处理用户输入和系统输出,提供友好的交互体验
配置模块:存储游戏难度参数
测试模块:(进阶)验证游戏各功能模块的正确性
2. 游戏逻辑实现
零基础用户:你可以直接复制下面的代码到文件中运行,我们会逐步解释每一部分的作用。
2.1 难度配置与选择
我们使用字典存储不同难度级别的参数,并通过 match-case 语句处理难度选择:
1 | import random |
旧版本兼容写法:如果你使用的 Python 低于 3.10,可以把上面的 match-case 部分替换为:
1
2
3
4
5
6
7
8
if choice in ["easy", "medium", "hard"]:
return Difficulties[choice]
elif choice == "quit":
print("游戏已退出。")
exit(0)
else:
print("无效的难度级别,请重新输入。")
2.2 游戏引擎实现
游戏引擎负责单局游戏的逻辑控制,包括随机数生成、猜测循环和结果判断:
1 |
|
零基础小提示:这里的
try...except是用来处理用户输入错误的情况,比如用户输入了字母,我们就提示他重新输入,而不是让程序直接崩溃。
2.3 主程序控制流
主程序负责游戏的整体流程控制,包括难度选择、单局游戏循环和多局游戏循环:
1 |
|
零基础小提示:
if __name__ == "__main__":的作用是,只有当你直接运行这个文件的时候,才会执行游戏,如果这个文件被其他文件导入的话,就不会自动运行,这是 Python 的常用写法。
3. 进阶:游戏测试📚
零基础用户:这部分是进阶内容,你可以暂时跳过,等你掌握了基础之后再来学习。
有基础用户:我们使用 Pytest 作为测试框架,验证游戏的各个功能是否正常。
3.1 测试代码实现
1 |
|

