我如何重置随机数生成器python与最小的变化



我的学校作业是尝试根据以下规则制作一个游戏:创建一个程序,随机生成1 - 50之间的数字。用户必须猜测数字。当他们猜测时,我应该评论以帮助用户猜测。一旦他们得到了数字,我就应该告诉用户猜了多少次,并询问用户是否愿意再玩一次。如果有,创建另一个数字,如果没有,结束程序。

我的问题是,当我再次玩,我的猜测计数没有重置,我的"随机数"没有改变,请包括我的代码变化的解释,因为我在11年级的课程,刚刚开始学习编码,所以我很新的这个,谢谢!有代码:

import random
ran=random.randrange(1,50)
counter=0
guessed=False
def startgame():
    answer=input("would you like to play a game? enter 'yes' or 'no'")
    if answer == "yes":
        while guessed != True:
            game()
    if answer=="no":
        print("thanks for playing")
def game():
    global counter
    counter=counter+1
    x=input("chose a number between 0 and 50")
    if int(x)>ran:
        print("your value is too high")
    elif int(x)<ran<50:
        print("your value is too low")
    elif int(x)==ran:
        guessed=True
        answer=input("that is correct! it took you "+ str(counter) +" tries,     "+"would you like to play again? enter 'yes' or 'no'")
        if answer == "yes":
            main()
        if answer=="no":
            print("thanks for playing")
def main():
    startgame()
if __name__ == '__main__':
    main()

您已经将ran声明为全局变量。作为一个全局变量,它将初始化一次。如果你调用一个函数,比如说get_random_no,它每次都会返回随机数,那就更好了。在该函数中,我们将编写返回随机数的逻辑。

import random
counter=0
guessed=False
def get_random_no():
    ran = random.randrange(1,50)
    return ran
def startgame():
    answer=input("would you like to play a game? enter 'yes' or 'no'")
    if answer == "yes":
        while guessed != True:
            game()
    if answer=="no":
        print("thanks for playing")
def game():
    global counter
    counter=counter+1
    ran = get_random_no()
    x=input("chose a number between 0 and 50")
    if int(x)>ran:
        print("your value is too high")
    elif int(x)<ran<50:
        print("your value is too low")
    elif int(x)==ran:
        guessed=True
        answer=input("that is correct! it took you "+ str(counter) +" tries,     "+"would you like to play again? enter 'yes' or 'no'")
        if answer == "yes":
            main()
        if answer=="no":
            print("thanks for playing")
def main():
    startgame()
if __name__ == '__main__':
    main()

因为您已经在全局作用域中声明了ran=random.randrange(1,50),所以在运行脚本时只调用一次,为了获得所需的行为,您应该在每次调用startgame()时初始化它,并将其作为参数传递给每个函数。

def main():
    ran=random.randrange(1,50)
    startgame(ran)
def startgame(ran):
    #your function here.
def game(ran):
    #Your function here

另一个想法是将ran声明为全局变量,并在每次调用game()函数时更改它的值,这将是您可以做的最小更改,以获得所需的行为,但globals不应该被使用,因为许多全局变量使代码无法管理。

最新更新