我在格式化方面遇到问题,并且在课程方面理解列表和字符串。 所以我在这里有这个代码:
class User:
def __init__(self,title):
self.tile=tile
self.rank={}
def addCard(self,compID,number):
if compID in self.cards and number > self.cards[compID]:
self.cards[compID]=number
elif compID not in self.cards:
self.cards[compID]=number
def __str__(self):
self.cardList = []
for compID, number in self.cards.items():
final = compID + "-" + str(number)
self.cardList.append(temp)
self.cardList.sort()
return self.tile + ":" + " " + "Card scores:" + str(self.cardList)
所以我的结果如下:
OUTPUT 1:
Cpt.Fred: Card scores: ['diamond-22', 'hearts-4', 'spades-3']
Lt.Connor: Card scores: ['diamond-43']
我想让我的结果看起来像这样:
OUTPUT 2:
Cpt.Fred: Card scores: [ diamond-22, hearts-4, spades-3 ]
Lt.Connor: Card scores: [ diamond-43 ]
数据并不重要,它如何在结果的开头和结尾摆脱“'”。我认为它与我的上一个def()语句有关,但我一直试图以各种方式格式化它,没有运气。任何人都可以帮助将第一个输出看起来像第二个输出吗?
答案 0 :(得分:3)
您应该执行以下操作,而不是调用str(self.cardList)
:
return "%s: Card scores: [%s]" % (self.title, ", ".join(self.cardList))
问题是列表上的str
会在列表的元素上调用repr
(包括引号),而您只需要用逗号连接的str
元素
答案 1 :(得分:0)
您可能需要手动处理和打印列表。这是你可以做到的一种方式。
def printList(cardlist):
printstr = "[" # Start with [.
for card in cardlist:
printstr += card + ", " "card, "
printstr = printstr[:-2] + "]" # Remove the last ", " before adding the last ].
答案 2 :(得分:0)
问题出在“str(self.cardList)”中。它按原样打印出列表,这意味着它将字符串放入引号中以将它们与数字和其他对象区分开来。
def list_to_string(some_list):
str = "["
for i in range(len(some_list)):
str += some_list[i]
if i < len(some_list)-1:
str += ", "
str += "]"
return str
这会将您的列表解析为不带引号的字符串