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

CS50猜数字游戏While循环异常:无限输出提示问题求助

问题根源

你的代码里,output函数中的guess是调用guesser()得到的固定值,进入循环后没有重新获取用户的新猜测,每次循环都用同一个数字和随机数对比,自然会无限输出相同提示。

解决方法

核心是每次判断错误后,重新获取用户的新猜测值。下面提供两种修改方案:

方案一:调整output函数逻辑

把获取猜测的逻辑放到output循环内部,每次循环都更新guess:

import random

def main():
    number = positive_integer()
    int_rand = randomizer(number)
    output(int_rand)

def positive_integer():
    while True:
        try:
            n = int(input("Level: "))
            if n > 0:
                return n
        except ValueError:
            pass

def randomizer(number):
    return random.randint(1, number)

def guesser():
    while True:
        try:
            x = int(input("Guess: "))
            if x >= 1:
                return x
        except ValueError:
            pass

def output(int_rand):
    while True:
        guess = guesser()  # 每次循环重新获取猜测值
        if guess < int_rand:
            print("Too small!")
        elif guess > int_rand:
            print("Too large!")
        else:
            print("Just right!")
            break

main()

方案二:简化主函数逻辑

直接把猜数字的循环放到main里,逻辑更直观:

import random

def main():
    number = positive_integer()
    int_rand = randomizer(number)
    while True:
        guess = guesser()
        if guess < int_rand:
            print("Too small!")
        elif guess > int_rand:
            print("Too large!")
        else:
            print("Just right!")
            break

def positive_integer():
    while True:
        try:
            n = int(input("Level: "))
            if n > 0:
                return n
        except ValueError:
            pass

def randomizer(number):
    return random.randint(1, number)

def guesser():
    while True:
        try:
            x = int(input("Guess: "))
            if x >= 1:
                return x
        except ValueError:
            pass

main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:42:48