目前在列表、字符串和整数方面有问题

2024-04-25 13:56:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: theyourrandomlistintcardsprintace
3条回答

正如我在评论中所解释的,您错误地检查了列表包含,并且在if语句中设置了错误的变量。以下是您的代码:

import random
cardnum1 = " "
cardnum2 = " "

print("the dealer shuffles the cards and deals the first hand")
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 in ["2", "3", "4", "5", "6", "7", "8", "9", "10"]:
    cardnum1 = int(card1)


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 in ["2", "3", "4", "5", "6", "7", "8", "9", "10"]:
    cardnum2 = int(card2)

# 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)

上面提到的错误是因为在某些情况下,其中一个变量是字符串,另一个是整数。你知道吗

实际上你有几个错误的地方:

  1. list是python中内置的,不要使用list作为变量。你知道吗
  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. ^如果cardnum1" ",则{}没有意义。你可能把它们换了: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代替就可以了。你知道吗

您应该使用dict为一张卡分配数字,并且可以使用random.choices选择两张卡

import random

cards = {
    1: "Ace",
    2: "2",
    3: "3",
    4: "4",
    5: "5",
    6: "6",
    7: "7",
    8: "8",
    9: "9",
    10: "10",
    11: "Jack",
    12: "Queen",
    13: "King"
}

print("the dealer shuffles the cards and deals the first hand")

card_num1, card_num2 = random.choices(list(cards), k=2)
card1, card2 = cards[card_num1], cards[card_num2]

print("your first card is ",card1)

print("your second card is ",card2)

为了方便地将它们放在一个句子中,您可以在python3.6+中使用.format()或f字符串。你知道吗

print(f"Your cards combined are {card1} {card2}")

相关问题 更多 >