Python猜数字游戏首次输入猜测后崩溃、提示批量弹出如何修复?
猜数字游戏问题修复方案
现存问题梳理
- 导入语法错误:首行
Import首字母大写不符合Python语法规范,会触发导入报错 - 首次猜测崩溃核心原因:变量
time_uin仅在用户猜对数字的分支中定义,未猜对时执行time_uin - time_in会触发未定义变量报错,直接导致程序崩溃 - 提示一次性弹出原因:总耗时、平均耗时计算以及对应提示语的代码,错误放在了每次猜测后的执行流程中,每完成一次未猜中的输入就会一次性跑完所有打印逻辑
- 重玩判断逻辑缺陷:输入非y/n的内容时,多余的
break会直接跳出判断循环,不会要求用户重新输入正确选项 - 细节拼写错误:原提示语
Your guess was to high中to应为too - 末尾函数调用本身写法正确,不需要修改,程序运行后会自动触发游戏逻辑
修正后完整代码
import time,os,random def get_int(message): while True: user_input = input(message) try: user_input = int(user_input) print('输入为有效整数!') break except: print('输入无效,请输入整数!') return user_input def game_loop(): fin = False while not fin: a = get_int('请输入下限:') b = get_int('请输入上限:') if a < 0: print('下限不能为负数') if a > b: a, b = b, a print(f'当前设置下限:{a},上限:{b}') os.system('clear') print(f"你需要猜测的数字范围为 {a} 到 {b}") num_guesses = 0 target = random.randint(a,b) time_in = time.time() while True: print(f'你已经猜了 {num_guesses} 次') print() guess_input = get_int('请输入你猜的数字:') num_guesses = num_guesses + 1 if guess_input == target: print("恭喜你猜对了!") time_uin = time.time() # 耗时统计调整到猜对后执行 time_t = time_uin - time_in print(f'本次猜测总耗时 {time_t:.2f} 秒') print() time_average = time_t / num_guesses print(f'平均每次猜测耗时 {time_average:.2f} 秒') print() if num_guesses < 3: print('你也太厉害了吧?') else: print('再接再厉哦') break elif guess_input < a or guess_input > b: print("你猜的数字不在范围内,次数+1") elif guess_input < target: print("你猜的数字太小了") else: print("你猜的数字太大了") print() while True: play_again = input ('输入y重新游玩,输入n退出游戏:') print() if play_again == 'n': fin = True print('游戏结束') time.sleep(2) os.system('clear') break elif play_again == 'y': print('马上开始新一轮游戏') time.sleep(2) os.system('clear') break else: print('输入错误,请输入y或n') game_loop()
内容的提问来源于stack exchange,提问作者Poo Cee
相关产品推荐
相关产品推荐

