Я пишу сценарий follow 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()

Код работает хорошо и генерирует случайные числа, но когда дело доходит до» выигрышной » функции, где он должен вознаградить игрока за получение двух одинаковых чисел, это не работает, я получаю следующую ошибку

Вы выигрываете Traceback( последний последний вызов): файл » упражнение 36
Проектирование и Debugging.py», строка 59, in
wheel_spin () File «упражнение 36 проектирование и Debugging.py», строка 31, в wheel_spin
выигрышный (draw1,draw2,draw3) файл «упражнение 36 проектирование и Debugging.py», линия 51, в выигрыше
tokens += 10 UnboundLocalError: локальная переменная ‘tokens’, на которую ссылаются перед назначением

Любая помощь будет высоко оценена

1 ответ

  1. tokens не определено в winningметоде. Он объявлен в spin_wheelобласти и ограничен только этим методом. Вы или хотите передать его или сделать его глобальным.

    tokens = 10
    
    def spin_wheel():
        global tokens
    
        ...
    
    def winning():
        global tokens
        ...