[Python 基础课程]猜数字游戏

📅 发布时间:2026/7/9 20:33:47 👁️ 浏览次数:
[Python 基础课程]猜数字游戏
以下是用 Python 写一个经典「猜数字游戏」的完整教学示例适合 Python 基础课程使用。我们会从最简单版本开始一步一步增加功能最后给出几个进阶练习方向。版本 1最基础版适合第 1~2 次课# 猜数字游戏 - 版本1importrandom# 电脑随机生成一个 1~100 的数字secret_numberrandom.randint(1,100)guess_count0print(欢迎来到猜数字游戏)print(我已经想好了一个 1 到 100 之间的整数你来猜猜看)whileTrue:# 获取玩家输入guessinput(请输入你猜的数字)# 输入检查必须是数字ifnotguess.isdigit():print(请输入正确的数字哦)continueguessint(guess)guess_count1ifguesssecret_number:print(f恭喜你猜对了 就是{secret_number})print(f你一共猜了{guess_count}次)breakelifguesssecret_number:print(太小了再大一点)else:print(太大了再小一点)特点使用 while True 无限循环基本的输入验证简单的比较逻辑记录猜测次数版本 2增加难度选择 猜测次数限制适合第 3~5 次课# 猜数字游戏 - 版本2难度选择 次数限制importrandomprint( 猜数字游戏 )print(请选择难度)print(1. 简单 (1~5010次机会))print(2. 普通 (1~1008次机会))print(3. 困难 (1~2006次机会))whileTrue:levelinput(请输入难度编号 (1/2/3))iflevelin[1,2,3]:levelint(level)breakprint(请输入 1、2 或 3)iflevel1:max_num50max_attempts10eliflevel2:max_num100max_attempts8else:max_num200max_attempts6secret_numberrandom.randint(1,max_num)attempts_leftmax_attemptsprint(f\n游戏开始我已经想好了一个 1 到{max_num}的数字)print(f你一共有{max_attempts}次机会\n)whileattempts_left0:guessinput(f剩余{attempts_left}次机会请输入数字)ifnotguess.isdigit():print(请输入数字)continueguessint(guess)ifguesssecret_number:print(f\n太棒了猜对了 就是{secret_number})print(f你用了{max_attempts-attempts_left1}次机会)breakelifguesssecret_number:print(太小了)else:print(太大了)attempts_left-1ifattempts_left0:print(f\n游戏结束正确答案是{secret_number})新增内容难度选择用 if-elif次数限制机制剩余次数提示游戏结束两种情况的处理版本 3更完整的版本加入重玩功能、历史记录# 猜数字游戏 - 版本3可重玩 历史最佳importrandomimporttimedefplay_game():print(\n*40)print( 猜数字游戏 - 开始新一轮)print(*40)levelinput(选择难度 (1:简单 2:普通 3:困难))iflevel1:max_n,max_t50,10eliflevel2:max_n,max_t100,8else:max_n,max_t200,6secretrandom.randint(1,max_n)attempts0start_timetime.time()print(f\n已生成 1~{max_n}的数字你有{max_t}次机会)whileattemptsmax_t:try:guessint(input(f第{attempts1}次猜测))exceptValueError:print(请输入整数)continueattempts1ifguesssecret:used_timeround(time.time()-start_time,2)print(f\n★ 恭喜猜对了就是{secret})print(f用时{used_time}秒共{attempts}次猜测)returnattempts,used_timeelifguesssecret:print(太小了 ↑)else:print(太大了 ↓)print(f\n很遗憾次数用完。正确答案是{secret})returnNone,None# 主程序 - 支持多轮游戏best_attemptsfloat(inf)best_timefloat(inf)whileTrue:attempts,used_timeplay_game()ifattemptsisnotNone:ifattemptsbest_attempts:best_attemptsattempts best_timeused_timeprint(→ 新纪录)elifattemptsbest_attemptsandused_timebest_time:best_timeused_timeprint(→ 用时新纪录)print(f\n当前最佳{best_attempts}次{best_time:.2f}秒)againinput(\n再玩一次(y/n)).lower()ifagain!y:print(感谢游玩再见)break进阶练习方向可作为课后作业加入「提示剩余次数」颜色使用 termcolor 或 colorama 库记录所有玩家的历史成绩到文件json 或 txt增加「提示功能」每猜 3 次可使用一次「大了/小了」提示加入「排行榜」功能前五名做成图形界面版本使用 tkinter 或 pygame增加「自定义范围」功能玩家自己输入最小最大值你现在想直接运行哪个版本或者你希望我帮你把某个版本改成图形界面tkinter版本也可以告诉我你的教学进度/学生水平我可以调整难度和讲解重点。