如何在def中声明变量,然后从python中的按钮调用它
它说die1还没有定义。如何更改它以定义它。我试过这么做如何在def中声明变量,然后从python中的按钮调用它,python,function,Python,Function,它说die1还没有定义。如何更改它以定义它。我试过这么做 def roll(): die1 = random.randint(1,6) die2 = random.randint(1,6) A = tkinter.Button(top, text ="Roll!", command = roll) A.pack() if die1 == die2: print(die1) 但如果重复,数字不会改变。实现这一点的一个非常简单的方法是: die1
def roll():
die1 = random.randint(1,6)
die2 = random.randint(1,6)
A = tkinter.Button(top, text ="Roll!", command = roll)
A.pack()
if die1 == die2:
print(die1)
但如果重复,数字不会改变。实现这一点的一个非常简单的方法是:
die1 = random.randint(1,6)
die2 = random.randint(1,6)
def roll():
die1 = random.randint(1,6)
die2 = random.randint(1,6)
A = tkinter.Button(top, text ="Roll!", command = roll)
A.pack()
if die1 == die2:
print(die1)
但我建议您创建一个超级简单的类,以便将值存储在该类中:
die1 = [random.randint(1, 6)]
die2 = [random.randint(1, 6)]
def roll():
die1[0] = random.randint(1, 6)
die2[0] = random.randint(1, 6)
您甚至可以删除init函数,但您必须在最后一个if语句之前调用game.roll(),否则这些实例变量将不存在。
die1
和die2
是局部变量-它们根本不存在于roll()
函数之外。但这并不是这里的根本问题:在创建按钮后立即尝试比较这两个值,绝对不可能调用roll()
,因此您没有要比较的值。任何需要滚动值的操作都应该从内部roll()
-直接在该函数中执行,或者在它调用的其他函数中执行(在这种情况下,可以将两个值作为参数传递给该函数)。
import random
class Game():
def__init__(self):
self.die1 = random.randint(1,6)
self.die2 = random.randint(1,6)
def roll(self):
self.die1 = random.randint(1,6)
self.die2 = random.randint(1,6)
game = Game()
A = tkinter.Button(top, text ="Roll!", command = game.roll)
A.pack()
if game.die1 == game.die2:
print(game.die1)