You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:36:03