news 2026/10/15 10:44:31

【每天一个 Python 小案例06】Python 实现猜数字小游戏

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【每天一个 Python 小案例06】Python 实现猜数字小游戏

【每天一个 Python 小案例06】Python 实现猜数字小游戏

每天完成一个小案例,把零散的 Python 语法知识慢慢变成真正能写出来的程序。


系列:《每天一个 Python 小案例》

第 6 篇:Python 实现猜数字小游戏

关键词:Python、random 模块、while 循环、条件判断、异常处理、小游戏


一、案例需求

今天实现一个经典的猜数字小游戏。

程序先在 1 到 100 之间随机生成一个数字,玩家不断输入自己猜测的数字。程序会根据猜测结果给出提示:

  • 猜小了,提示“猜小了”;
  • 猜大了,提示“猜大了”;
  • 猜对了,提示玩家一共猜了多少次,并结束游戏。

为了让程序更友好,输入字母、符号或超出范围的数字时,程序不会报错退出,而是提醒玩家重新输入。

通过这个小案例,可以练习 Python 中的随机数、用户输入、类型转换、条件判断、循环和异常处理。


二、思路分析

在写代码前,先把游戏过程拆成几个清晰的步骤:

  1. 导入 random 模块;
  2. 使用 random.randint(1, 100) 随机生成一个目标数字;
  3. 使用 while 循环,让玩家可以不断猜测;
  4. 读取玩家输入,并将输入内容转换为整数;
  5. 判断输入是否在 1 到 100 的范围内;
  6. 将猜测数字与目标数字比较,给出“猜大了”或“猜小了”的提示;
  7. 如果猜对,输出猜测次数并退出循环。

游戏的核心逻辑可以概括为:

输入数字 → 比较大小 → 给出提示 → 继续猜测或结束游戏


三、Python 代码

importrandom# 在 1 到 100 之间随机生成一个目标数字target_number=random.randint(1,100)# 记录有效猜测次数count=0print("欢迎来到猜数字小游戏!")print("我已经想好了一个 1 到 100 之间的数字。")whileTrue:try:guess=int(input("请输入你猜的数字:"))exceptValueError:print("输入错误,请输入一个整数!")continue# 判断数字是否在规定范围内ifguess<1orguess>100:print("请输入 1 到 100 之间的整数!")continue# 只有有效输入才计入猜测次数count+=1ifguess<target_number:print("猜小了,请继续猜!")elifguess>target_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() 用于接收用户在键盘上输入的内容。

guess=input("请输入你猜的数字:")

无论用户输入的是数字、字母还是符号,input() 接收到的内容默认都是字符串。因此,本案例需要使用 int() 将字符串转换为整数,才能进行大小比较。

3. while True 循环

whileTrue:

表示一直循环执行其中的代码。猜数字游戏不知道玩家第几次才能猜对,所以适合使用循环。

当玩家猜对后,执行:

break

就会跳出循环,结束游戏。

4. if、elif 和 else

条件判断用于比较玩家猜测的数字与目标数字:

ifguess<target_number:print("猜小了")elifguess>target_number:print("猜大了")else:print("猜对了")

这三种情况正好覆盖了数字比较的所有结果。

5. try 和 except

如果用户输入 abc,直接执行 int(“abc”) 会出现错误。为了让程序不因为一次错误输入而结束,本案例使用了:

try:guess=int(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 小案例07:Python 实现石头剪刀布小游戏》

下一篇将继续学习:

  • 如何使用 random 让电脑随机出拳;
  • 如何用条件判断比较胜负;
  • 如何处理玩家输入的无效选项;
  • 如何让游戏支持连续多轮对战。

每天完成一个小案例,让 Python 学习更有节奏。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 10:44:20

用C语言编写最小UEFI引导程序:从原理到QEMU调试实战

简介&#xff1a;《一个UEFI引导程序的实现》是田宇撰写的一本UEFI引导程序开发专著&#xff0c;也是《一个64位操作系统的设计与实现》的补充内容。全书从UEFI与BIOS的结构和启动流程对比讲起&#xff0c;说明UEFI取代BIOS的原因&#xff0c;并涉及安全启动、PEI/DXE/BDS阶段等…

作者头像 李华
网站建设 2026/10/15 10:44:16

高效学习系统设计:编号学习法的原理与应用

1. 项目背景解析"day 3 91-95"这个看似简单的数字组合&#xff0c;实际上蕴含着丰富的学习路径设计智慧。作为一名经历过完整学习周期并指导过数百名学员的教育从业者&#xff0c;我深知这种编号体系背后的深层价值。这组数字代表的是某个系统化学习计划的第三天中第…

作者头像 李华
网站建设 2026/10/15 10:44:11

Pixhawk 2.4.8刷PX4固件配QGC:从校准到航线规划的完整避坑指南

简介&#xff1a;面向Pixhawk 2.4.8飞控用户的PX4固件刷写与QGroundControl地面站操作完整教程&#xff0c;尤其适合刚接触无人机装调的新手、飞控开发爱好者及航测应用人员。教程基于QGC 4.0以上版本&#xff0c;从最基础的下载固件讲起&#xff0c;逐步覆盖机架选择、罗盘/陀…

作者头像 李华
网站建设 2026/10/15 10:43:48

游戏引擎内存管理核心:分配器、对象池与缓存优化

游戏引擎基础系统与内存管理&#xff0c;这期内容实际写起来比预想中更有嚼头。拆过不少项目源码&#xff0c;也亲手填过内存坑之后&#xff0c;我越来越确认一个判断&#xff1a;决定一个引擎好不好用的&#xff0c;往往不是渲染多炫酷&#xff0c;反而是这些藏在底下的基础设…

作者头像 李华
网站建设 2026/10/15 10:43:45

电商购物车系统设计:从状态管理到高并发实战

1. 为什么购物车模块不是“加个按钮就完事”的功能“书城项目_第六阶段_购物车模块”——这个标题看似平平无奇&#xff0c;像极了教学视频里被跳过的“基础章节”。但我在带某高校实训团队做图书电商系统时&#xff0c;亲眼见过三组学生卡在这个模块超过两周&#xff1a;一组反…

作者头像 李华
网站建设 2026/10/15 10:43:26

ScriptX打印控件安装包详解:部署、调用与避坑指南

简介&#xff1a;ScriptX打印控件安装包面向需要在浏览器端实现网页打印、套打与报表输出的开发者与运维人员&#xff0c;尤其适合使用IE内核或兼容模式业务系统的技术团队。资源共12个文件&#xff0c;压缩包约816KB&#xff0c;以dll动态库为核心&#xff0c;配合inf安装信息…

作者头像 李华