【问题标题】:python - Unresolved reference and I don' know why?python - 未解决的参考,我不知道为什么?
【发布时间】:2020-01-19 12:35:13
【问题描述】:

我正在尝试制作一个小程序,告诉您获得特定卡片的机会是多少,并询问您抽到了哪些卡片。 当它询问绘制了哪张卡片时,它会在代码中显示未解决的引用,我不确定它的含义或为什么会这样说

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

【问题讨论】:

  • 你能复制准确的错误吗?
  • 而且你甚至没有重现完整的代码。
  • 我去粘贴整个代码,但是 stackoverflow 说我的帖子主要是代码所以我删除了几行以便我可以发布
  • 谢谢乔丹,如果有帮助,我会尝试获取更新代码和错误的全屏截图
  • 我只想说,如果我在工作面试中看到有人用“six = 4”这行代码编写代码,我就不会再看了......

标签: python python-3.x function playing-cards


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我发现了问题所在。 在使 python 发疯的函数中设置和更改了变量。 首先将所有变量设置为 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
    

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 1970-01-01
      • 2022-10-15
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多