Python: локальная переменная, на которую ссылаются до назначения - PullRequest
0 голосов
/ 10 апреля 2020

Я очень новичок в python (~ 1 неделя). Я получил эту ошибку при попытке запустить этот код, предназначенный для простой игры, в которой вы угадываете головы или хвосты, и она отслеживает ваш счет. Есть ли способ избежать этой ошибки? Я получаю ошибку для переменной «попытки», когда запускаю попытки + = 1, но я предполагаю, что я получу ее и для «оценки», когда я делаю то же самое.

    import random

    coin = ['heads', 'tails']
    score = 0
    attempts = 0

def coin_flip():

    print("Heads or tails?")

    guess = input()
    result = random.choice(coin)
    print("Your guess: " + guess)
    print("Result: " + result)

    attempts += 1

    if result == guess:
        print('You guessed correctly!')
        score += 1
    else:
        print('Your guess was incorrect.')

    percentCorrect = str((score / attempts) * 100) + '%'

    print("You have " + str(score) + " correct guesses in " + str(attempts) + ' attempts.')
    print("Accuracy: " + percentCorrect)
    print('Do you want to play again?')

    if input() == 'y' or 'yes':
        return coin_flip()
    else:
        quit()


coin_flip()

Ответы [ 2 ]

1 голос
/ 10 апреля 2020
import random

coin = ['heads', 'tails']
score = 0
attempts = 0

def coin_flip():
    global attempts
    global score


    print("Heads or tails?")

    guess = input()
    result = random.choice(coin)
    print("Your guess: " + guess)
    print("Result: " + result)

    attempts += 1

    if result == guess:
        print('You guessed correctly!')
        score += 1
    else:
        print('Your guess was incorrect.')

    percentCorrect = str((score / attempts) * 100) + '%'

    print("You have " + str(score) + " correct guesses in " + str(attempts) + ' attempts.')
    print("Accuracy: " + percentCorrect)
    print('Do you want to play again?')

    if input() == 'y' or 'yes':
        return coin_flip()
    else:
        quit()


coin_flip()

Чего не хватало:

global attempts
global score
0 голосов
/ 10 апреля 2020

Это проблема с областью видимости. Либо поместите слово global перед attemps и score, либо создайте класс (который не был бы идеальным для того, что я предполагаю, что вы делаете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...