【问题标题】:Python Blackjack game - referenced before assignmentPython Blackjack 游戏 - 分配前参考
【发布时间】:2014-08-01 09:54:24
【问题描述】:

所以,我个人的挑战是用 python 制作一个简单的二十一点游戏。这就是我的做法:

singlePlayerCard = random.choice(availableCards)
singlePlayerCard2 = random.choice(availableCards)

if(singlePlayerCard == [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCardValue = singlePlayerCard

if(singlePlayerCard2 == [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCard2Value = singlePlayerCard2


singlePlayerCardValueTotal = singlePlayerCardValue+singlePlayerCard2Value
print ("The total of your card values is %i"%singlePlayerCardValueTotal)

在打印singlePlayerCardValueTotal 时,它告诉我singlePlayerCardValuesinglePlayerCard2Value 在分配之前已被引用。这让我有点困惑,因为我过去曾在我制作的另一个简单程序中遇到过这个问题,但这里的结构不同。除了上述问题,它工作正常。另外,如果您有时间,请在必要时告诉我某些领域的任何更好的解决方案。

一如既往,提前致谢! :)

【问题讨论】:

  • 你明白“赋值前引用”是什么意思吗?
  • @Blorgbeard 从过去对其他程序的尝试中,我了解到这意味着我已经在代码中提到了它,但实际上它还没有被赋予价值
  • 是的,所以看起来你的if 语句没有命中,所以你从来没有为singlePlayerCardValue 分配任何东西。
  • @Blorgbeard 嗯,我明白为什么会出现错误(因为 if 语句不起作用),但我不确定为什么 if 语句不起作用.写的时候我有点犹豫,我之前从来没有一个接一个if声明,通常我有一个elifelse之后。
  • @Blorgbeard 现在检查你的答案。

标签: python python-3.4 blackjack


【解决方案1】:

正如您在评论中指出的那样,“在赋值之前引用”意味着您在变量被赋予值之前已经提到了它。

看起来你的问题是这样的:

if(singlePlayerCard == [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCardValue = singlePlayerCard

由于您的singlePlayerCard 永远不会等于列表[1,2,3,4,5,6,7,8,9,10],因此当它是数字卡时,您不会为变量赋值。

== 运算符不是检查列表是否包含值的方法。试试这个吧:

if(singlePlayerCard in [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCardValue = singlePlayerCard

【讨论】:

  • 非常感谢,现在您已经解释过了,我明白为什么它不起作用了。非常感谢您的解决方案,也感谢您在分配前测试我对所引用的知识的了解。我想如果在做出答案之前让你知道我的知识渊博。好主意!再次感谢您的解决方案!打勾!
猜你喜欢
  • 1970-01-01
  • 2016-03-08
  • 2020-09-02
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
相关资源
最近更新 更多