错误 - 元组索引超出范围

时间:2018-04-02 14:38:29

标签: python python-3.x

我正在尝试为节点定义c类,如下所示:3, [5,8,2] 我做错了什么?

--------------
# Node Class

class Node():

    def __init__(self,name, neighbors):
        self.name = name
        self.neighbors = []
        self.n_records = 0

    def __str__(self):
        s = "{} (#{}): name: {:3}, neighbors: {}"
        return s.format(self.name,self.neighbors)

    def add_record(self, rec):
        self.records.append(rec)
        self.n_records += 1 
IndexError                                Traceback (most recent call last)
<ipython-input-18-6d6c9b659eeb> in <module>()
      4 nodes = Node(1,[5,6])
      5 
----> 6 print(nodes)

<ipython-input-17-f3f5914a055f> in __str__(self)
     11     def __str__(self):
     12         s = "{} (#{}): name: {:3}, neighbors: {}"
---> 13         return s.format(self.name,self.neighbors)
     14 
     15     def add_record(self, rec):

IndexError: tuple index out of range

1 个答案:

答案 0 :(得分:0)

你的问题就在这一行

s = "{} (#{}): name: {:3}, neighbors: {}"

这为字符串格式化准备了一个字符串。 注意:每个&#34; {}&#34;没有数字或标识符在其中期望a 应该传递给format的新位置参数。 在你的情况下,有4个这样的标记,所以一个人期望一个电话 格式如下:

s.format(argument_brace1, argument_brace2, argument_brace3, argument_brace4)

但是,您的实际调用仅提供其中两个标记的参数:

return s.format(self.name, self.neighbors)

其余2个标记的附加访问会引发IndexError

有关详细信息,请参阅documentation onstring formatting