UnboundLocalError: локальная переменная '(Var)', на которую ссылаются до назначения - PullRequest
0 голосов
/ 20 октября 2018

Это мой код, извините, он на шведском, но в основном это камень, ножницы, бумага.Я получаю ошибку UnboundLocalError: local variable 'Answer' referenced before assignment, даже если ввод правильный, переменная должна быть назначена.

Вход должен быть либо камнем, либо бумагой, либо ножницами, а если нет, он начинается заново.Но даже если ввод правильный, он говорит, что «Ответ» не назначен.Пожалуйста, помогите, застряли на этой проблеме на некоторое время.И не делать это global не вариант, так как он должен быть случайным каждый раунд.

def Start():
    global win
    global lost
    game = input("Skriv sten, sax eller påse: ")
    game2 = game.lower()
    notright = game2 is "sten" or "sax" or "påse"
    if game2 == "quit":
        quit
    if notright == True:
        Answer = random.randint(0,3)
        if Answer == 1:
            print ("Du valde",game2,"och Jag valde Sten")
        elif Answer == 2:
            print("Du valde",game2,"och Jag valde Sax")
        elif Answer == 3:
            print("Du valde",game2,"och Jag valde Påse")
    elif notright == False:
        print("Du måste välja sten, sax eller påse. Prova igen!")
        Start()
    if Answer == 1 and game2 == "sten":
        print("Det blir oavgjort")
    elif Answer == 1 and game2 == "sax":
        lost = True
    elif Answer == 1 and game2 == "påse":
        win = True
    elif Answer == 2 and game2 == "sten":
        win = True
    elif Answer == 2 and game2 == "sax":
        print("Det blir oavgjort")
    elif Answer == 2 and game2 == "påse":
        lost = True
    elif Answer == 3 and game2 == "sten":
        lost = True
    elif Answer == 3 and game2 == "sax":
        win = True
    elif Answer == 3 and game2 == "påse":
        print("Det blir Oavgjort")

1 Ответ

0 голосов
/ 20 октября 2018

У вас нет петли, поэтому, когда вы нажимаете:

elif notright == False:

, вы звоните Start.Сначала quit ничего не делает, и проверка, является ли notright False, не помогает, просто выполните if notright:.

Таким образом, начало цикла будет:

def Start():
    while True:
        game = input("Skriv sten, sax eller påse: ")
        game2 = game.lower()
        notright = game2 == "sten" or game2 == "sax" or game2 == "påse"
        if game2 == "quit":
            break
        if !notright:
            print("Du måste välja sten, sax eller påse. Prova igen!")
            continue

        Answer = random.randint(0,3)
        if Answer == 1:
            print ("Du valde" + game2 + " och Jag valde Sten")
        elif Answer == 2:
            print("Du valde" + game2 + "och Jag valde Sax")
        elif Answer == 3:
            print("Du valde" + game2 + "och Jag valde Påse")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...