我目前正在学习Python,并且在本练习中您必须处理异常。此目标的目的是在给定键的值不在列表“ self.data”的范围内时引发异常。
我应该在函数中输入以下内容对其进行测试:
v = Vecteur(-9, -6, 2, 3, -2)
v[-1]
现在我应该得到一个IndexError
class Vecteur:
def __init__(self, *valeurs):
self.data = list(valeurs)
def __getitem__(self,key):
try:
erreur = self.data[key]
except IndexError:
print('indice invalide pour ce vecteur')
return self.data[key]
def __setitem__(self,key,item):
self.data[key] = item
你们中的一个能启发我这个话题吗?
提前致谢!
最佳答案
您的问题源于以下事实:您正在捕获IndexError,然后print
ing,并让执行失败。
我会这样做:
class Vecteur:
def __init__(self, *valeurs):
self.data = list(valeurs)
def __getitem__(self,key):
try:
return self.data[key]
except IndexError:
raise IndexError('indice invalide pour ce vecteur')
def __setitem__(self,key,item):
self.data[key] = item
顺便说一句,
-1
是有效索引。因此,您可能需要更改__getitem__
:def __getitem__(self, key):
if key < 0:
raise ValueError("Index has to be greater than 0")
# the rest of your __getitem__ here
关于python - 使用列表处理IndexError异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34998973/