首页 > 解决方案 > 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():
    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()

标签: pythonpython-3.xfunctionplaying-cards

解决方案


您的代码存在很多问题。第一个是在将全局变量隐藏到本地范围之前引用全局变量,从而生成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

推荐阅读