我试图通过编写一个纸牌游戏21的版本来挑战自己,但是我在字符串和整数方面遇到了问题。我的柜台也坏了,这是我无法理解的
我试过把一切都定义为整数
cardnum1 = " "
cardnum2 = " "
print("the dealer shuffles the cards and deals the first hand")
import random
list = ["2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"]
#1st card
card1 = random.choice(list)
print("your first card is ",card1)
#numbers
if card1 == ["2","3","4","5","6","7","8","9","10"]:
card1=int(cardnum1)
elif card1 == "Jack":
cardnum1=int(10)
elif card1 == "Queen":
cardnum1=int(10)
elif card1 == "King":
cardnum1=int(10)
elif card1 == "Ace":
cardnum1=input("do you want your Ace to be a 1 or a 11?")
card2 = random.choice(list)
print("your second card is ",card2)
#numbers 1 - 10
if card2 == ["2","3","4","5","6","7","8","9","10"]:
card1=int(cardnum1)
#special cards
elif card2 == "Jack":
cardnum2=int(10)
elif card2 == "Queen":
cardnum2=int(10)
elif card2 == "King":
cardnum2=int(10)
elif card2 == "Ace":
cardnum2=input("do you want your Ace to be a 1 or a 11?")
print ("your cards combined are ",cardnum1 + cardnum2)
我试着随机得到2张卡,让程序告诉我我离21还有多远,我是否破产了。 cardnum1和cardnum2似乎不能正确相加。你知道吗
我收到错误消息:
TypeError: can only concatenate str (not "int") to str
正如我在评论中所解释的,您错误地检查了列表包含,并且在if语句中设置了错误的变量。以下是您的代码:
上面提到的错误是因为在某些情况下,其中一个变量是字符串,另一个是整数。你知道吗
实际上你有几个错误的地方:
list
是python中内置的,不要使用list
作为变量。你知道吗if card1 == ["2","3","4","5","6","7","8","9","10"]
是错误的。要检查变量是否在列表中,请执行:if card1 in ["2","3","4","5","6","7","8","9","10"]
。注意in
而不是==
。你知道吗cardnum1
是" "
,则{cardnum1 = int(card1)
。你知道吗cardnum1=int(10)
没有错,但是10已经是整数了。int()
是多余的,完全不需要。你知道吗cardnum2=input("do you want your Ace to be a 1 or a 11?")
我想这里您希望用户键入1或11。如果您使用的是python3,input
总是返回一个字符串,因此必须将其转换为整数:cardnum2=int(input("do you want your Ace to be a 1 or a 11?"))
。如果你用python2代替就可以了。你知道吗您应该使用dict为一张卡分配数字,并且可以使用
random.choices
选择两张卡为了方便地将它们放在一个句子中,您可以在python3.6+中使用
.format()
或f字符串。你知道吗相关问题 更多 >
编程相关推荐