
【每天一个 Python 小案例06】Python 实现猜数字小游戏每天完成一个小案例把零散的 Python 语法知识慢慢变成真正能写出来的程序。系列《每天一个 Python 小案例》第 6 篇Python 实现猜数字小游戏关键词Python、random 模块、while 循环、条件判断、异常处理、小游戏一、案例需求今天实现一个经典的猜数字小游戏。程序先在 1 到 100 之间随机生成一个数字玩家不断输入自己猜测的数字。程序会根据猜测结果给出提示猜小了提示“猜小了”猜大了提示“猜大了”猜对了提示玩家一共猜了多少次并结束游戏。为了让程序更友好输入字母、符号或超出范围的数字时程序不会报错退出而是提醒玩家重新输入。通过这个小案例可以练习 Python 中的随机数、用户输入、类型转换、条件判断、循环和异常处理。二、思路分析在写代码前先把游戏过程拆成几个清晰的步骤导入 random 模块使用 random.randint(1, 100) 随机生成一个目标数字使用 while 循环让玩家可以不断猜测读取玩家输入并将输入内容转换为整数判断输入是否在 1 到 100 的范围内将猜测数字与目标数字比较给出“猜大了”或“猜小了”的提示如果猜对输出猜测次数并退出循环。游戏的核心逻辑可以概括为输入数字 → 比较大小 → 给出提示 → 继续猜测或结束游戏三、Python 代码importrandom# 在 1 到 100 之间随机生成一个目标数字target_numberrandom.randint(1,100)# 记录有效猜测次数count0print(欢迎来到猜数字小游戏)print(我已经想好了一个 1 到 100 之间的数字。)whileTrue:try:guessint(input(请输入你猜的数字))exceptValueError:print(输入错误请输入一个整数)continue# 判断数字是否在规定范围内ifguess1orguess100:print(请输入 1 到 100 之间的整数)continue# 只有有效输入才计入猜测次数count1ifguesstarget_number:print(猜小了请继续猜)elifguesstarget_number:print(猜大了请继续猜)else:print(f恭喜你猜对了答案就是{target_number}。)print(f你一共猜了{count}次。)break将代码保存为 guess_number.py然后在终端中运行python guess_number.py每次重新运行程序target_number 都会重新随机生成因此每一局的答案都可能不同。四、运行结果下面是假设随机数字为 68 时的一次运行示例欢迎来到猜数字小游戏 我已经想好了一个 1 到 100 之间的数字。 请输入你猜的数字50 猜小了请继续猜 请输入你猜的数字80 猜大了请继续猜 请输入你猜的数字68 恭喜你猜对了答案就是 68。 你一共猜了 3 次。如果玩家输入了不符合要求的内容程序也会给出提示请输入你猜的数字abc 输入错误请输入一个整数 请输入你猜的数字120 请输入 1 到 100 之间的整数五、知识点总结1. random 模块random 是 Python 自带的随机数模块。代码中的random.randint(1,100)表示在 1 到 100 之间随机生成一个整数。注意randint 的两个边界都包含在结果范围内所以这里可能生成 1也可能生成 100。2. input() 函数input() 用于接收用户在键盘上输入的内容。guessinput(请输入你猜的数字)无论用户输入的是数字、字母还是符号input() 接收到的内容默认都是字符串。因此本案例需要使用 int() 将字符串转换为整数才能进行大小比较。3. while True 循环whileTrue:表示一直循环执行其中的代码。猜数字游戏不知道玩家第几次才能猜对所以适合使用循环。当玩家猜对后执行break就会跳出循环结束游戏。4. if、elif 和 else条件判断用于比较玩家猜测的数字与目标数字ifguesstarget_number:print(猜小了)elifguesstarget_number:print(猜大了)else:print(猜对了)这三种情况正好覆盖了数字比较的所有结果。5. try 和 except如果用户输入 abc直接执行 int(“abc”) 会出现错误。为了让程序不因为一次错误输入而结束本案例使用了try:guessint(input(请输入你猜的数字))exceptValueError:print(输入错误请输入一个整数)这就是基础的异常处理。它让程序遇到非数字输入时提示用户重新输入而不是直接显示报错信息。六、常见问题与易错点1. 为什么猜测次数要放在范围判断之后本案例只统计有效的猜测。输入字母或输入 0、120 这类超出范围的数字时并不算一次正式猜测所以 count 1 要放在输入校验之后。2. 为什么不能直接比较 input() 的结果因为 input() 返回的是字符串。字符串之间的比较和数字大小比较不是一回事所以必须先使用 int() 转换为整数。3. 为什么程序不会自动结束只要没有猜对while True 就会持续运行。只有进入 else 分支并执行 break 后游戏才会结束。4. 每次答案为什么不一样答案由 random.randint(1, 100) 随机生成因此每次运行程序都可能得到不同的目标数字。这也是小游戏更有趣的原因。七、可以继续扩展的功能完成基础版本后还可以尝试给小游戏增加更多功能限制玩家最多只能猜 7 次根据猜测次数评价“运气很好”或“再接再厉”让玩家选择数字范围例如 1 到 50 或 1 到 1000猜对后询问是否再来一局把游戏封装成函数让代码结构更清晰。这些扩展不必一次全部完成。先保证基础版本可以正确运行再逐步加入新功能是学习编程更稳妥的方式。八、总结本篇通过一个猜数字小游戏练习了多项 Python 基础知识使用 random 模块生成随机数使用 input() 接收用户输入使用 int() 完成字符串到整数的转换使用 if、elif、else 进行条件判断使用 while 和 break 控制循环使用 try、except 处理错误输入。这个案例的代码不长但已经包含了一个小程序常见的完整过程接收输入、处理逻辑、输出结果和处理异常。坚持把这些小案例写出来、运行起来、再尝试修改一点点功能Python 的基础语法就会慢慢从“看懂”变成“会用”。下一篇预告《每天一个 Python 小案例07Python 实现石头剪刀布小游戏》下一篇将继续学习如何使用 random 让电脑随机出拳如何用条件判断比较胜负如何处理玩家输入的无效选项如何让游戏支持连续多轮对战。每天完成一个小案例让 Python 学习更有节奏。