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”行写代码,我不会再看下去了。。。