首页 > 解决方案 > 目前在列表、字符串和整数方面遇到问题

问题描述

我试图通过编写纸牌游戏 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

标签: python

解决方案


提到的错误是由于在某些情况下,其中一个变量是字符串,另一个是整数。

其实你有几个错误的事情:

  1. list是python内置的,不要用wordlist作为变量。
  2. if card1 == ["2","3","4","5","6","7","8","9","10"]是错的。要检查变量是否在列表中,请执行以下操作if card1 in ["2","3","4","5","6","7","8","9","10"]:请注意,in而不是==.
  3. card1=int(cardnum1)cardnum1如果is没有意义" "。您可能已将它们切换:cardnum1 = int(card1).
  4. cardnum1=int(10)没错,但10已经是一个整数了。这int()是多余的,完全不需要。
  5. 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 就可以了。

推荐阅读