Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “调试问题”;列表索引超出范围“;甲板类中的错误_Python - Fatal编程技术网

Python “调试问题”;列表索引超出范围“;甲板类中的错误

Python “调试问题”;列表索引超出范围“;甲板类中的错误,python,Python,我这里有一门课,可以做一副牌。它有处理卡片并将卡片组重置为原始(有序且完整)状态的方法 当程序的分级器运行第23行时,我得到一个错误:索引器:列表索引超出范围 它说,当它试图“处理”超过52张卡时,它正在运行一个错误。但当我尝试运行超过52次时,它只返回一个None类型,就像它应该返回的那样 代码中未显示:卡类。这只是我写的一个类,它的类将卡(4,“C”)转换为卡(4个俱乐部”) import random class Deck: def __init__(self, shuffled

我这里有一门课,可以做一副牌。它有处理卡片并将卡片组重置为原始(有序且完整)状态的方法

当程序的分级器运行第23行时,我得到一个错误:索引器:列表索引超出范围

它说,当它试图“处理”超过52张卡时,它正在运行一个错误。但当我尝试运行超过52次时,它只返回一个None类型,就像它应该返回的那样

代码中未显示:卡类。这只是我写的一个类,它的
类将
卡(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))