如何在while循环中只生成一次随机数?

How to generate random number in while loop only once?

我正在尝试完成猜谜游戏。这是代码:

import random

def guess_function(x):
    while True:
        number = random.randint(0,x)
        userinput = input(f"Guess a number between 0 to {x}: ")
        if userinput.lower() == "q":
            break
        userinput =  int(userinput)
        if int(userinput) == number:
            print("Thats correct")
            continue
        if userinput < number:
            print("TOO low ")
        if userinput > number:
            print("TOO high ")

guess_function(100)

但是这段代码中的问题是每次我猜对或错时都会生成一个新的随机数,如果我在 while 循环之外声明数字变量,那么在我猜对数字后将不会生成新数字.我希望它连续 运行 直到我按下 q。我试过 elif 如果两者都试过,它仍然会生成新号码。还尝试在这个 while 循环中添加一个 while 循环,但这使它成为一个无限循环。

我想知道我怎样才能连续 运行 并拥有相同的随机数,一旦我猜对了数字就会改变但没有结束游戏,意味着不必 运行 代码再次.

试试这个:

import random

def guess_function(x):
    number = random.randint(0,x)
    while True:
        userinput = input(f"Guess a number between 0 to {x}: ")
        if userinput.lower() == "q":
            break
        userinput =  int(userinput)
        if int(userinput) == number:
            print("Thats correct")
            continue
        if userinput < number:
            print("TO low ")
        if userinput > number:
            print("TO high ")

guess_function(100)

#放在循环外就好了

如果你想连续生成随机数,直到用户输入“q”,那么可以采用以下方法:

import random

def guess_function(x):
    number = random.randint(0,x)
    while number >= 0:
        userinput = input(f"Guess a number between 0 to {x}: ")
        if userinput.lower() == "q":
            number = -1
            break
        userinput = int(userinput)
        if userinput == number:
            print("Thats correct")
            number = random.randint(0,x)
            continue
        if userinput < number:
            print("TO low ")
        if userinput > number:
            print("TO high ")

guess_function(100)

猜对后生成一个新数字继续游戏,一旦用户输入“q”,number变量设置为-1,循环条件失败,函数returns 游戏完全停止。