求助:修复Higher/Lower游戏中上下界随机数生成问题
Higher/Lower游戏随机数生成问题修复
你的代码里有两个关键逻辑错误导致随机数无法正确生成:
- 一开始已经用
random.randint(lower, upper)生成了正确范围的随机数,但在else分支(也就是上下界合法的正常情况)里,你把correct_num设成了0,直接覆盖了之前的随机数,这就导致后续猜数的目标变成了0,完全不在用户输入的范围内。 - 当用户输入的下界大于上界时,你重新获取了合法的上下界,但没有重新生成对应范围的随机数,此时的
correct_num还是第一次基于错误范围生成的值,自然也不对。
下面是修正后的代码:
import random user_name = input('What is your name?') print("Welcome to the higher/lower game,", user_name + "!") # 循环获取合法的上下界,直到用户输入正确 while True: lower = int(input("Enter the lower bound:")) upper = int(input("Enter the upper bound:")) if lower <= upper: break print("Lower bound can't be larger than upper bound, please re-enter.") # 基于合法的上下界生成随机数 correct_num = random.randint(lower, upper) guess = True while guess: print(f"Great, now guess a number between {lower} and {upper}:") user_guess = int(input('Enter guess:')) if user_guess < correct_num: print("Nope, too low!") elif user_guess > correct_num: print("Nope, too high!") else: print("You got it!") break
修改说明:
- 用循环替代原来的单次判断,确保用户输入的上下界一定合法,避免重复的输入代码。
- 只有在确认上下界合法后,才生成对应的随机数,保证随机数始终在用户指定的范围内。
- 去掉了无效的
user_guess == correct_num判断(这个语句没有实际作用),优化了打印语句的格式。
内容的提问来源于stack exchange,提问作者SL2426
相关产品推荐
相关产品推荐

