#python #function
#python #функция
Вопрос:
from getch import getch, pause
from random import randint
def wheel_spin():
tokens = 100
while tokens > 0:
num_input= getch()
if num_input == ' ':
print "You Hit Space Bar"
draw1 = randint(1,6)
draw2 = randint(1,6)
draw3 = randint(1,6)
print draw1 , draw2 ,draw3
winning(draw1,draw2,draw3)
tokens -= 1
#pause()
def winning(draw1,draw2,draw3):
if draw1 == draw2 or draw2 == draw3:
print "YOU WIN"
tokens = 10
else:
pass
wheel_spin()
Код работает нормально и генерирует случайные числа, но когда дело доходит до «выигрышной» функции, где предполагается вознаградить игрока за получение двух одинаковых чисел, это не работает, я получаю следующую ошибку
ВЫ ВЫИГРЫВАЕТЕ трассировку (последний последний вызов): Файл «Упражнение 36 Проектирование и Debugging.py «, строка 59, в файле wheel_spin() «Упражнение 36 Проектирование и Debugging.py «, строка 31, в файле wheel_spin winning(draw1, draw2, draw3) «Упражнение 36 Проектирование и Debugging.py «, строка 51,в выигрышных токенах = 10 UnboundLocalError: локальная переменная ‘tokens’, на которую ссылаются перед назначением
Любая помощь будет принята с благодарностью
Ответ №1:
tokens
не определено в winning
методе. Он объявлен в spin_wheel
и ограничен только этим методом. Вы либо хотите передать его, либо сделать его глобальным.
tokens = 10
def spin_wheel():
global tokens
...
def winning():
global tokens
...