Python “调试问题”;列表索引超出范围“;甲板类中的错误
我这里有一门课,可以做一副牌。它有处理卡片并将卡片组重置为原始(有序且完整)状态的方法 当程序的分级器运行第23行时,我得到一个错误:索引器:列表索引超出范围 它说,当它试图“处理”超过52张卡时,它正在运行一个错误。但当我尝试运行超过52次时,它只返回一个None类型,就像它应该返回的那样 代码中未显示:卡类。这只是我写的一个类,它的Python “调试问题”;列表索引超出范围“;甲板类中的错误,python,Python,我这里有一门课,可以做一副牌。它有处理卡片并将卡片组重置为原始(有序且完整)状态的方法 当程序的分级器运行第23行时,我得到一个错误:索引器:列表索引超出范围 它说,当它试图“处理”超过52张卡时,它正在运行一个错误。但当我尝试运行超过52次时,它只返回一个None类型,就像它应该返回的那样 代码中未显示:卡类。这只是我写的一个类,它的类将卡(4,“C”)转换为卡(4个俱乐部”) import random class Deck: def __init__(self, shuffled
类将卡(4,“C”)
转换为卡(4个俱乐部”)
import random
class Deck:
def __init__(self, shuffled = False):
cards = []
for suit in ["C", "D", "H", "S"]:
for rank in range(2,15):
cards.append(Card(rank, suit))
self.cards = cards
self.shuffled = shuffled
self.dealt_cards = 0
if self.shuffled == True:
random.shuffle(self.cards)
def shuffle(self):
random.shuffle(self.cards)
pass
def deal_card(self):
if self.dealt_cards <= 51:
out_card = self.cards[0]
if self.dealt_cards <= 50:
self.cards.pop(0)
self.dealt_cards += 1
return(out_card)
else:
return(None)
def __repr__(self):
return("deck(dealt " + str(self.dealt_cards) + ", shuffled=" + str(self.shuffled) + ")")
def reset(self):
self.cards = []
for suit in ["C", "D", "H", "S"]:
for rank in range(2,15):
cards.append(Card(rank, suit))
self.shuffled = False
self.dealt_cards = 0
确保在从类方法中引用类属性时始终使用self
在reset()
中更改以下内容:
致:
你用这个类运行什么代码?如果你说的是调用了哪些代码行来引发错误,请检查文章底部的新编辑。该代码不会出错。可能是因为您之前调用了reset()
,它有cards.append()
,而不是self.cards.append()
。就是这样。谢谢你,保罗。我只需要调用self.cards.append(),很高兴您找到了解决方案。请接受答案,以便我们结束问题。
for i in range(55):
print(my_deck.deal_card())
cards.append(Card(rank, suit))
self.cards.append(Card(rank, suit))