好的,我已经实现了下面的代码。想要的结果是:
Card Q Hearts, Card 9 Hearts, Card 7 Spades
相反,结果是:
Card 12 Hearts, Card 9 Hearts, Card 7 Spades
我知道错误在if
语句中的某个地方,但我不知道该如何修复它。有人能帮我吗?谢谢
import random
class Card:
ranks = range(1, 14)
suits = ['Diamonds', 'Spades', 'Clubs', 'Hearts']
def __init__(self):
self.rank = random.choice(Card.ranks)
self.suit = random.choice(Card.suits)
def change(self):
self.rank = random.choice(Card.ranks)
self.suit = random.choice(Card.suits)
def __repr__(self):
letters = {1:'A', 11:'J', 12:'Q', 13:'K'}
if self.rank in letters:
rank_show = self.rank
else:
rank_show = self.rank
return "Card " + str(rank_show) + " " + self.suit
random.seed(1235)
card_1 = Card()
print(card_1)
card_2 = Card()
print(card_2)
card_2.change()
print(card_2)
这是一个小错误。您正在访问self.rank的数值,即使您有一个映射相应字母表的字典。要解决这个问题,只需使用self.rank作为字典的键
另一种方法是使用dictionary数据类型的get()方法
您忘记更改显示值:在两个分支中执行相同的操作。相反
更好的是,确保返回值的类型一致:只需将它们全部设置为字符:
注意缺乏“如果”陈述;您只需为值列表编制索引。如果希望包含“10”而不是“T”,则可以使用字符串列表:
相关问题 更多 >
编程相关推荐