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
相关产品推荐
相关产品推荐

