所以,我个人的挑战是在python中制作一个简单的Blackjack游戏。这就是我做这件事的方式:
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
时,它告诉我在分配之前已引用singlePlayerCardValue
或singlePlayerCard2Value
。这让我很困惑,因为我过去曾经遇到过这个问题,我做了另一个简单的程序,但结构在这里有所不同。除上述问题外,它运作良好。如果您有时间,如有必要,请告知我某些方面的更好解决方案。
一如既往,提前谢谢! :)
答案 0 :(得分:2)
正如您在评论中指出的那样,"在转让之前被引用"表示您在变量被赋予值之前已经提到了变量。
看起来你的问题是:
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