Я пишу сценарий follow python как способ реализации игры типа игрового автомата с использованием случайных чисел

#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
    ...