
实验简介本次上机实验围绕 random 随机库交互式猜数字游戏增加输入校验、记录猜测过程、连玩3局求平均次数实现思路交互式猜数字游戏使用 random.randint(1,100) 生成1~100随机答案。用 try-except 捕获非整数输入做合法性校验输入必须是整数范围1~100不满足则提示重新输入程序不会崩溃。列表 history 记录每一轮猜测的数字累加变量记录猜测次数。一局猜完后打印猜测全过程循环执行3局最后计算三局的平均猜测次数。程序运行结果示例plaintext任务1猜数字游戏连玩3局—第1局—请输入1~100的整数猜测50小了请输入1~100的整数猜测75大了请输入1~100的整数猜测62小了请输入1~100的整数猜测68恭喜猜对一共猜了4次猜测过程[50, 75, 62, 68]—第2局—请输入1~100的整数猜测30小了请输入1~100的整数猜测60大了请输入1~100的整数猜测45恭喜猜对一共猜了3次猜测过程[30, 60, 45]—第3局—请输入1~100的整数猜测20小了请输入1~100的整数猜测80大了请输入1~100的整数猜测50小了请输入1~100的整数猜测65大了请输入1~100的整数猜测57恭喜猜对一共猜了5次猜测过程[20, 80, 50, 65, 57]3局游戏平均猜测次数4.00学习心得本次实验让我直观感受到随机模拟和算法效率的巨大差距。猜数字两种策略对比直观理解线性算法和二分算法的效率差距。线性猜测是O(n)范围扩大猜测次数线性上涨二分是对数O(log₂n)范围扩大猜测次数增长极其缓慢。踩坑记录任务1输入校验踩坑一开始没有写 try-except 如果输入字母程序直接崩溃报错。✅解决捕获ValueError区分「不是整数」和「超出数字范围」两类提示。代码import randomdef play_one_game():“”“玩一局猜数字游戏返回本局猜的次数”“”target random.randint(1, 100)guesses []count 0print(\n 新的一局开始我已经想好了一个 1~100 的数字 ) while True: user_input input(请输入你猜的数字).strip() try: guess int(user_input) except ValueError: print(⚠️ 输入的不是整数请重新输入) continue if guess 1 or guess 100: print(⚠️ 数字必须在 1~100 之间请重新输入) continue count 1 guesses.append(guess) if guess target: print(大了) elif guess target: print(小了) else: print(f 恭喜你猜中了答案就是 {target}) print(f本局你一共猜了 {count} 次。) print(你的猜测过程 → .join(str(g) for g in guesses)) return countdef main():total_times 0rounds 3for i in range(1, rounds 1): print(f\n########## 第 {i} 局 ##########) times play_one_game() total_times times average total_times / rounds print(f\n 3 局结束 ) print(f总猜测次数{total_times}) print(f平均每局用了 {average:.2f} 次)ifname “main”:main()