python - неразрешенная ссылка, и я не знаю почему? - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь создать небольшую программу, которая расскажет вам, каковы ваши шансы на получение конкретной карты, и спросит, какие карты были разыграны. Когда он спрашивает, какая карта была нарисована, он говорит неразрешенную ссылку в коде, и я не уверен, что это значит или почему он говорит, что

cards = 52

ace = 4
queen = 4
king = 4
jack = 4

two = 4
three = 4
four = 4
five = 4
six = 4
seven = 4
eight = 4
nine = 4
ten = 4  

def ask_what_card_was_drawn():
    drawncard = input("What card did you draw?: ")
    if drawncard == ace:
        ask_what_card_was_drawn()
    elif drawncard == queen:
        queen == queen - 1
        cards == cards - 1
    elif drawncard == jack:

    #code kinda repeats itself here#

    #tried experimenting with -= 1 instead#
    elif drawncard == nine:
        nine == -1
        cards == cards - 1
    elif drawncard == "ten":
        ten -= 1
        cards -= 1
    else:
        print("Error")
    print("Cards left are: ")
    print("Cards = ", cards)
    print("     ace = ", ace)
    #kinda repeated itself again here aswell#
    print("     ten = ", ten)

    ask_what_card_was_drawn()

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Я разобрался в проблеме. переменные были установлены и изменены внутри функции, которая сводила с ума python go. установка всех переменных как GLOBAL сначала, казалось, исправила это

cards = 52

ace = 4
queen = 4
king = 4
jack = 4
two = 4
three = 4
four = 4
five = 4
six = 4
seven = 4
eight = 4
nine = 4
ten = 4
def ask_what_card_was_drawn():
    drawn_card = str(input("What card did you draw?: "))
    global cards

    global ace
    global queen
    global king
    global jack

    global two
    global three
    global four
    global five
    global six
    global seven
    global eight
    global nine
    global ten
    if drawn_card == "ace":
        ace -= 1
        cards -= 1
    elif drawn_card == "queen":
        queen -= 1
        cards -= 1
    elif drawn_card == "jack":
        jack -= 1
        cards -= 1
    elif drawn_card == "king":
        king -= 1
        cards -= 1
0 голосов
/ 19 января 2020

С вашим кодом довольно много проблем. Во-первых, вы ссылаетесь на глобальные переменные перед тем, как затенять их в локальную область, в результате чего получается UnboundLocalError Вам нужно сообщить Python, что вы работаете с глобальными переменными, например:

def ask_what_card_was_drawn():
    global cards, ace, queen, king, jack, two, three, four, five, size, seven, eight, nine, ten
    drawncard = input("What card did you draw?: ")
    ...

Вторая проблема заключается в том, что вы используете == для присвоения значения вместо =. Первое условие - это проверка на равенство, а второе - присвоение имени имени. Например, следующая строка:

queen == queen - 1

эффективно интерпретируется как False, поскольку queen не равно queen - 1. Вам нужно использовать только один =, например, так:

queen = queen - 1

Или даже лучше:

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