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

Python猜数字游戏程序异常:循环无法终止且重复输出过低提示

问题排查与修复方案

我帮你梳理下代码里导致无限循环和重复输出的问题,以及对应的修复方法:

核心问题分析

你的程序出现无限循环且重复提示的原因主要有两个:

  • 玩家输入没有在循环内更新:你只在while循环开始前获取了一次玩家输入,之后循环里一直用这个初始值判断,自然会一直输出相同的提示,也没法接收新的输入来终止程序。
  • return语句位置错误:你把返回结果的return放在了while循环内部,这会导致第一次循环结束后直接退出函数,玩家根本没机会继续猜测或者输入exit。

另外还有个小问题:你在函数外调用了print(number_generation()),这会额外生成一个无关的随机数,属于冗余代码,应该删掉。

修复后的完整代码

import random 

# 生成1-9之间的随机数
def number_generation(): 
    computer_number = random.randint(1,9) 
    return computer_number 

# 获取玩家输入
def player_number(): 
    player_num = input('Digit your guess between 1 and 9, or type "exit" to quit\n') 
    return player_num 

def guessing_game(): 
    w_answers = 0 
    r_answers = 0 
    cpu_guess = number_generation()  # 游戏开始时生成一次随机数
    player_guess = player_number() 

    while player_guess != 'exit': 
        # 处理非数字输入的异常情况
        try:
            player_num = int(player_guess)
            if player_num > cpu_guess: 
                print('You have guessed too high') 
                w_answers += 1 
            elif player_num < cpu_guess: 
                print('You have guessed too low') 
                w_answers += 1 
            else: 
                print('You have guessed the correct number') 
                r_answers += 1 
                # 猜对后生成新的随机数,让玩家继续猜
                cpu_guess = number_generation()
                print("New number generated, keep guessing!")
        except ValueError:
            print("Invalid input! Please enter a number between 1-9 or 'exit' to quit.")
        
        # 关键:每次循环结束后重新获取玩家的新输入
        player_guess = player_number() 

    # 循环结束(输入exit)后再返回统计结果
    return w_answers, r_answers 

print(guessing_game()) 

关键修改点说明

  1. 将player_guess = player_number()移到循环内部:每次循环结束后重新获取玩家的新输入,这样才能接收新的猜测或者exit指令。
  2. 把return语句移到while循环外面:确保玩家可以一直猜测直到输入exit,最后再返回统计的对错次数。
  3. 添加异常处理:避免玩家输入非数字内容时程序崩溃,提升用户体验。
  4. 猜对后生成新随机数:如果希望玩家猜对后继续玩,可以保留这部分;如果想让玩家一直猜同一个数直到退出,删掉相关代码即可。
  5. 删除冗余的print(number_generation()):避免生成无关的随机数干扰游戏逻辑。

内容的提问来源于stack exchange,提问作者Luismaia1994

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:37:54