python - 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()
解决方案
您的代码存在很多问题。第一个是在将全局变量隐藏到本地范围之前引用全局变量,从而生成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
推荐阅读
- json - JSON 响应格式奇数
- reactjs - 由于未连接表单而取消表单提交 - 控制台错误
- java - cf2016 上的 cfcollection/org.apache.poi 错误,带有一些 .ppsx 文件
- django - 将对象转换为查询集
- python - 如何在 Python 中正确地将非常小的数字从字符串转换为浮点数?
- signal-processing - 将收敛标准转换为 L1 范数
- java - 如何将多个 log4j xml 文件添加到单个项目
- php - 如何在 Laravel 中批量更新多对多相关表?
- linux - sqoop 导入中的 -bindir 参数始终作为 Unrecognized 参数给出:–bindir
- java - 我可以在 spring 控制器的一张地图中获取包含文本和文件的表单数据吗?