解决 TypeError:只能将元组(不是“str”)连接到元组
Posted
技术标签:
【中文标题】解决 TypeError:只能将元组(不是“str”)连接到元组【英文标题】:Resolving TypeError: can only concatenate tuple (not "str") to tuple 【发布时间】:2022-01-11 01:01:38 【问题描述】:所以我试图在 python 中创建一个二十一点游戏,但我收到一个我不知道如何解决的类型错误。我为卡片创建了一个类,可以让我轻松打印出单张卡片的名称,但我也希望能够打印卡片组内卡片的名称。为此,我想我会使用我在 Card 类中使用的字符串方法。
import random
symbols = ('Spades','Diamonds','Hearts',"Clubs")
ranks = ('Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace')
values = 'Two':2, 'Three':3, 'Four':4, 'Five':5, 'Six':6, 'Seven':7, 'Eight':8,
'Nine':9, 'Ten':10, 'Jack':11, 'Queen':12, 'King':13, 'Ace':14
playing = True
class Card:
def __init__(self,symbol=0,rank=0):
self.rank = ranks
self.symbol = symbol
value = values [rank]
def __str__(self):
return self.rank + "of" + self.symbol
class Deck:
def __init__(self):
self.deck = [] # start with an empty list
for symbol in symbols:
for rank in ranks:
self.deck.append(Card(symbol,rank)) # build Card objects,add to list
def __str__(self):
deck_comp = '' # start with an empty string
for Card in self.deck:
deck_comp += '\n'+ Card.__str__() # add each Card object's print string
return 'The deck has:' + deck_comp
def shuffle(self):
random.shuffle(self.deck)
def deal(self):
single_card = self.deck.pop()
return single_card
test_deck = Deck()
print(test_deck)
这是我收到的错误消息。我知道 Card.str() 可能保存为元组,但我该如何解决这个问题?
错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-41-1bfc314b8e70> in <module>
1 test_deck = Deck()
----> 2 print(test_deck)
<ipython-input-40-36ad41485748> in __str__(self)
10 deck_comp = '' # start with an empty string
11 for Card in self.deck:
---> 12 deck_comp += '\n' + Card.__str__() # add each Card object's print string
13 return 'The deck has:' + deck_comp
14
<ipython-input-31-543b708a921e> in __str__(self)
7
8 def __str__(self):
----> 9 return self.rank + "of" + self.symbol
TypeError: can only concatenate tuple (not "str") to tuple
【问题讨论】:
【参考方案1】:在变量 self.rank 中有元组,在变量 self.symbol 中有字符串
需要将元组转为字符串,可以使用python join方法:
return ', '.join(self.rank) + "of" + self.symbol
【讨论】:
【参考方案2】:我认为您的卡片 __init__()
有错字。试试self.rank = rank
而不是self.rank = ranks
。
我想这不是您代码的唯一问题,但它应该是您的解决方法。
【讨论】:
是的,你是对的! self.rank=ranks 插入了整个元组,而不是只在元组中插入一个值,因此出现错误。现在一切正常。谢谢!以上是关于解决 TypeError:只能将元组(不是“str”)连接到元组的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:元组索引必须是整数,而不是使用 pyspark 和 RDD 的 str
TypeError:在使用 Python 进行网络抓取时,只能将 str(而不是“列表”)连接到 str 错误
将当前url写入csv TypeError时:只能将列表(不是“元组”)连接到列表