📚 编程基础第一期《2-30》 - 使用
random
内置库打造互动性猜数字小游戏
📑 目录
🎮 游戏介绍
猜数字游戏是编程入门的经典案例,不仅能帮助新手理解基本编程概念,还能带来成就感。在这个游戏中,计算机会随机生成一个1到100之间的整数,玩家需要通过不断猜测来找出这个数字。
游戏特点:
- 三种难度级别(简单/普通/困难)
- 实时反馈(猜大了/猜小了)
- 异常处理(输入无效数字时的提示)
- 游戏结束统计(尝试次数显示)
🔍 实现思路
- 创建难度选择函数
- 实现核心猜数字逻辑
- 设计主函数控制游戏流程
- 使用条件判断提供游戏反馈
- 应用循环结构持续游戏直到结束条件满足
💻 代码详解
1. 难度选择函数
这个函数负责游戏开始时的欢迎信息和难度选择:
def set_difficulty():
print("欢迎来到猜数字游戏!")
print("我已经想好了一个1到100之间的整数,快来猜猜看吧~")
print("请选择难度:")
print("1. 简单(无限次尝试)")
print("2. 普通(10次机会)")
print("3. 困难(5次机会)")
return int(input("请输入选项:"))
代码解析:
- 使用
print()
函数显示游戏介绍和难度选项 input()
获取用户输入并转换为整数- 返回用户选择的难度级别供主函数使用
2. 猜数字核心逻辑
这是游戏的核心部分,使用random
模块生成随机数并处理用户猜测:
import random
def guess_number(max_attempts=None):
# 生成1-100之间的随机整数
target = random.randint(1, 100)
attempts = 0
while True:
try:
# 获取用户输入并转换为整数
guess = int(input("\n请输入你的猜测(1-100):"))
attempts += 1
# 判断猜测结果
if guess < target:
print("猜小了,再大一点!", end="")
elif guess > target:
print("猜大了,再小一点!", end="")
else:
print(f"🎉 恭喜!你在【{attempts} 】次尝试后猜对了!")
break
if attempts >= max_attempts:
print(f"很遗憾,你没有猜中。答案是【{target}】", end="")
break
except ValueError:
print("⚠️ 请输入有效的整数!")
代码解析:
random.randint(1, 100)
生成1-100之间的随机整数while True
创建无限循环,直到猜对或达到尝试次数上限try-except
结构捕获类型转换错误,提高程序健壮性- 条件判断提供"猜大了"或"猜小了"的反馈
attempts
变量记录尝试次数max_attempts
参数控制最大尝试次数,实现不同难度
3. 主函数设计
主函数负责协调游戏流程,根据用户选择的难度调用猜数字函数:
def main():
difficulty = set_difficulty()
while difficulty:
if difficulty == 1:
print("简单模式已开启,无限次尝试!")
guess_number(100000000) # 实际上是个很大的数,模拟"无限"
break
elif difficulty == 2:
print("普通模式已开启,10次机会!")
guess_number(10)
break
elif difficulty == 3:
print("困难模式已开启,5次机会!")
guess_number(5)
break
else:
print("无效的选项,默认为简单模式!")
guess_number(100000000)
break
代码解析:
- 调用
set_difficulty()
获取用户选择 - 使用条件判断处理不同的难度选择
- 针对每个难度级别,传递相应的最大尝试次数参数
- 添加默认处理确保程序健壮性
📝 完整代码
下面是整个猜数字游戏的完整实现:
# 猜数字游戏
import random
def set_difficulty():
print("欢迎来到猜数字游戏!")
print("我已经想好了一个1到100之间的整数,快来猜猜看吧~")
print("请选择难度:")
print("1. 简单(无限次尝试)")
print("2. 普通(10次机会)")
print("3. 困难(5次机会)")
return int(input("请输入选项:"))
def guess_number(max_attempts=None):
# 生成1-100之间的随机整数
target = random.randint(1, 100)
attempts = 0
while True:
try:
# 获取用户输入并转换为整数
guess = int(input("\n请输入你的猜测(1-100):"))
attempts += 1
# 判断猜测结果
if guess < target:
print("猜小了,再大一点!", end="")
elif guess > target:
print("猜大了,再小一点!", end="")
else:
print(f"🎉 恭喜!你在【{attempts} 】次尝试后猜对了!")
break
if attempts >= max_attempts:
print(f"很遗憾,你没有猜中。答案是【{target}】", end="")
break
except ValueError:
print("⚠️ 请输入有效的整数!")
def main():
difficulty = set_difficulty()
while difficulty:
if difficulty == 1:
print("简单模式已开启,无限次尝试!")
guess_number(100000000)
break
elif difficulty == 2:
print("普通模式已开启,10次机会!")
guess_number(10)
break
elif difficulty == 3:
print("困难模式已开启,5次机会!")
guess_number(5)
break
else:
print("无效的选项,默认为简单模式!")
guess_number(100000000)
break
if __name__ == "__main__":
main()
📚 知识点总结
通过这个简单的猜数字游戏,我们实践了以下Python编程概念:
- 函数定义与调用 - 创建了三个功能明确的函数
- 条件语句 - 使用
if-elif-else
结构控制程序流程 - 循环结构 - 使用
while
循环实现游戏持续进行 - 异常处理 - 使用
try-except
捕获并处理输入错误 - 随机数生成 - 使用
random
模块生成随机整数 - 用户输入处理 - 获取并验证用户输入
- 字符串格式化 - 使用f-string创建动态输出
- 函数参数 - 通过参数传递不同的游戏设置
- 模块导入 - 导入并使用Python标准库
🚀 进阶扩展
想要提升你的猜数字游戏?这里有一些进阶功能的实现思路:
- 添加计时功能 - 记录猜中数字所需的时间
- 历史记录 - 保存玩家的最佳成绩
- 自定义范围 - 允许玩家设置数字范围
- 图形界面 - 使用tkinter或pygame创建GUI版本
- 提示系统 - 在困难模式中提供有限的提示
- 多人游戏 - 实现多玩家竞争模式
💬 今日分享语录
待我苦涩的眼睛长满春天,我再向你诉说我所见的盎然
编程如人生,需要不断尝试,从失败中学习,终将找到答案。无论是猜数字还是解决问题,坚持下去,你一定能成功!
作者:笨笨轻松熊