Python 随机模块不会随机化多次



在此代码中有两个随机数生成器。一个在第一行,另一个在函数btn_yes.

两个RNG的工作都很好,btn_yes函数中生成器后的print(nb)直接显示一个随机数。

然而,当btn_yes被激活后,btn_press被激活时(就像在程序中一样),无论我执行btn_yes多少次,nb的值都不会改变。btn_press只是使用第一个RNG生成的相同的数字。

我错过了什么?

nb = random.randrange(0, 11)
def btn_press():
guess = int(entry.get())
print(guess)
if guess < nb:
answ["text"] = "Higher!"
elif guess > nb:
answ["text"] = "Lower!"
elif guess == nb:
answ["text"] = "Correct!"
btn2["bg"] = "#FF6C6C"
btn3["bg"] = "#32FF00"

def btn_no():
window.destroy()
def btn_yes():
answ["text"] = "Next Round! Type in a new number!"
btn2["bg"] = "#464646"
btn3["bg"] = "#464646"
nb = random.randrange(0, 11)
entry.delete(0, tk.END)
print(nb)

这里的问题是,当您在函数中更改全局变量时,您需要将global <variablename>作为函数中的第一行。否则,Python会假定您打算创建一个新变量,并且仅在函数的作用域内,而全局变量保持不变。

你可以通过函数btn_yes()中的printnb来看到这一点;您应该看到它每次都有不同的值(并且与全局nb的值不同)。

在这种情况下,如果你把global nb作为btn_yes()的第一行,它应该有预期的效果。

参见在函数中使用全局变量

最新更新