#python #function
#python #функция
Вопрос:
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 не определен. Как мне изменить ее, чтобы она была определена. Я пытался это сделать
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)
но цифры не меняются, если они повторяются
Комментарии:
1.
die1
иdie2
являются локальными переменными — они просто не существуют внеroll()
функции. Но это не основная проблема здесь: вы пытаетесь сравнить эти два значения сразу после создания кнопки, нет абсолютно никакой возможности, котораяroll()
еще не была вызвана, и поэтому у вас нет значений для сравнения. Все, что требует свернутых значений, должно выполняться изнутриroll()
— либо непосредственно в этой функции, либо в какой-либо другой функции, которую она вызывает (в этом случае вы можете передать два значения этой функции в качестве параметров).
Ответ №1:
Очень простой способ добиться этого был бы:
die1 = [random.randint(1, 6)]
die2 = [random.randint(1, 6)]
def roll():
die1[0] = random.randint(1, 6)
die2[0] = random.randint(1, 6)
Но я рекомендую вам просто создать супер простой класс, чтобы ваши значения хранились внутри этого класса:
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)
Вы могли бы даже удалить эту функцию инициализации, но вам пришлось бы вызывать game.roll() перед этим последним оператором if, иначе эти переменные экземпляра не будут существовать.