尝试除了不捕获 IndexError
Try Except not catching IndexError
我正在尝试为练习创建一个链表。
到目前为止,这是我的代码:
class Node:
def __init__(self, data, _next):
self.data = data
self._next = _next
test_list = [1,4,9]
def Linked(nodes):
try:
linked = []
for i in range(len(nodes)-1):
j = Node(nodes[i], nodes[i+1])
linked.append(j)
return linked
except IndexError:
print('Tail Found')
test = Linked(test_list)
test[2].data
我试图用 try/except 捕获索引错误,但我仍然收到以下错误:
IndexError Traceback (most recent call last)
<ipython-input-193-5fa4e0d033a1> in <module>
20
21
---> 22 test[2].data
IndexError: list index out of range
为什么不打印 'Tail Found'?
编辑:
我把代码改成这样:
class Node:
def __init__(self, data, _next):
self.data = data
self._next = _next
test_list = [1,4,9]
def Linked(nodes):
linked = []
for i in range(len(nodes)-1):
j = Node(nodes[i], nodes[i+1])
linked.append(j)
return linked
test = Linked(test_list)
try:
print(test[2].data)
except IndexError:
print('Tail Found: '+test[1]._next)
现在可以使用了。
如果 test[2] 不存在,那么我知道 test_list[2] 是列表中的最后一个(即尾部)。
您的错误在第 22 行。您的 try catch 块中没有发生索引错误
为什么 "Tail Found"?如果将长度大于 2 的列表传递给函数 Linked,则不会有任何异常,所以没有 "Tail Found" !
你给出了一个长度为 3 的列表,然后你得到了一个长度为 3-1 的测试。
索引文本只允许为0或1,test[2]肯定得到结果
IndexError: list index out of range
如果你print(Linked(test_list))
,你将得到:
[<__main__.Node object at 0x02A62220>, <__main__.Node object at 0x02AC1220>]
看到了吗?列表中只有2个元素,所以不能调用index 2
(第三个元素).
我正在尝试为练习创建一个链表。
到目前为止,这是我的代码:
class Node:
def __init__(self, data, _next):
self.data = data
self._next = _next
test_list = [1,4,9]
def Linked(nodes):
try:
linked = []
for i in range(len(nodes)-1):
j = Node(nodes[i], nodes[i+1])
linked.append(j)
return linked
except IndexError:
print('Tail Found')
test = Linked(test_list)
test[2].data
我试图用 try/except 捕获索引错误,但我仍然收到以下错误:
IndexError Traceback (most recent call last)
<ipython-input-193-5fa4e0d033a1> in <module>
20
21
---> 22 test[2].data
IndexError: list index out of range
为什么不打印 'Tail Found'?
编辑:
我把代码改成这样:
class Node:
def __init__(self, data, _next):
self.data = data
self._next = _next
test_list = [1,4,9]
def Linked(nodes):
linked = []
for i in range(len(nodes)-1):
j = Node(nodes[i], nodes[i+1])
linked.append(j)
return linked
test = Linked(test_list)
try:
print(test[2].data)
except IndexError:
print('Tail Found: '+test[1]._next)
现在可以使用了。
如果 test[2] 不存在,那么我知道 test_list[2] 是列表中的最后一个(即尾部)。
您的错误在第 22 行。您的 try catch 块中没有发生索引错误
为什么 "Tail Found"?如果将长度大于 2 的列表传递给函数 Linked,则不会有任何异常,所以没有 "Tail Found" !
你给出了一个长度为 3 的列表,然后你得到了一个长度为 3-1 的测试。 索引文本只允许为0或1,test[2]肯定得到结果
IndexError: list index out of range
如果你print(Linked(test_list))
,你将得到:
[<__main__.Node object at 0x02A62220>, <__main__.Node object at 0x02AC1220>]
看到了吗?列表中只有2个元素,所以不能调用index 2
(第三个元素).