Python 随机模块不会多次随机化
Python random module doesn't randomize more than once
在此代码中有两个随机数生成器。一个在第一行,另一个在函数 btn_yes
.
两个 RNG 都工作正常,函数 btn_yes
中生成器之后的 print(nb)
显示了一个随机数。
然而,当 btn_press
在 btn_yes
被激活后被激活时(就像它在程序中应该的那样),nb
的值不会改变,无论我多久改变一次执行btn_yes
。 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()
中 print
ing nb
来查看;你应该看到它每次都有不同的值(并且与全局 nb
的值不同)。
在这种情况下,如果将global nb
作为btn_yes()
中的第一行,应该会达到预期的效果。
见using global variables in a function
在此代码中有两个随机数生成器。一个在第一行,另一个在函数 btn_yes
.
两个 RNG 都工作正常,函数 btn_yes
中生成器之后的 print(nb)
显示了一个随机数。
然而,当 btn_press
在 btn_yes
被激活后被激活时(就像它在程序中应该的那样),nb
的值不会改变,无论我多久改变一次执行btn_yes
。 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()
中 print
ing nb
来查看;你应该看到它每次都有不同的值(并且与全局 nb
的值不同)。
在这种情况下,如果将global nb
作为btn_yes()
中的第一行,应该会达到预期的效果。
见using global variables in a function