我是Python的新手。运行代码时出现索引错误。我已经在Stackoverflow中看到了相关的问题,但是我仍然看不到错误是什么。我非常感谢您的任何回应。谢谢你。这是代码:
class Card:
def __init__(self, suit = 0, rank = 2):
self.suit = suit
self.rank = rank
suit_names = ['Clubs', 'Diamonds', 'Hearts', 'Spades']
rank_names =[None,'Ace','2','3','4','5','6','7','9','10','Jack','Queen', 'King']
def __str__ (self):
return '%s of %s' % (Card.rank_names[self.rank], Card.suit_names[self.suit])
def __lt__(self,other):
t1 = self.suit, self.rank
t2 = other.suit, other.rank
return t1 < t2
class Deck:
def __init__(self):
self.cards = []
for suit in range(4):
for rank in range(1, 14):
card = Card(suit, rank)
self.cards.append(card)
def __str__(self):
res = [ ]
for card in self.cards:
res.append(str(card))
return '\n'.join(res)
deck1 = Deck()
print(deck1)
然后我得到以下错误:
Traceback (most recent call last):
File "/Users/Enze/Python/untitled/Inheritance.py", line 35, in <module>
print(deck1)
File "/Users/Enze/Python/untitled/Inheritance.py", line 30, in __str__
res.append(str(card))
File "/Users/Enze/Python/untitled/Inheritance.py", line 11, in __str__
return '%s of %s' % (Card.rank_names[self.rank], Card.suit_names[self.suit])
IndexError: list index out of range
您13
的rank_names
列表中有项目,因此最后一个元素的索引很有价值12
(列表以开头0
)-内部循环
for suit in range(4):
for rank in range(1, 14):
card = Card(suit, rank)
您尝试获取的最大索引是13
(range
正在按顺序逐个生成数字(不包括边框)),这就是为什么出现index out of range
异常的原因
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句