python—未解析的引用和I don';知道为什么吗?

python—未解析的引用和I don';知道为什么吗?,python,python-3.x,function,playing-cards,Python,Python 3.x,Function,Playing Cards,我正在尝试制作一个小程序,告诉你你有多大机会得到一张特别的牌,并询问抽到了什么牌。 当它问起画的是什么卡片时,它会在代码中显示未解析的引用,我不知道这是什么意思或者为什么会这样说 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

我正在尝试制作一个小程序,告诉你你有多大机会得到一张特别的牌,并询问抽到了什么牌。 当它问起画的是什么卡片时,它会在代码中显示未解析的引用,我不知道这是什么意思或者为什么会这样说

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()

你的代码有很多问题。第一种方法是,在将全局变量投影到本地范围之前引用全局变量,从而导致
UnboundLocalError
。您需要告诉Python您正在使用globals,例如:

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
我解决了这个问题。 函数中的变量被设置和更改,这使python变得疯狂。 首先将所有变量设置为全局变量似乎可以解决这个问题

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

你能复制准确的错误吗?你甚至不能复制完整的代码。我去粘贴整个代码,但stackoverflow说我的帖子大部分是代码,所以我删除了几行,这样我就可以发布谢谢你Jordan,如果有帮助的话,我会尝试获取更新代码和错误的全屏截图。我只想说,如果我在面试中看到有人用“6=4”行写代码,我不会再看下去了。。。