Python 使用列表处理索引器异常
我目前正在学习Python,我有一个练习,您必须处理异常。这个函数的目标是当给定键的值不在列表“self.data”的范围内时引发异常 这是我应该在函数中输入的内容来测试它:Python 使用列表处理索引器异常,python,python-3.x,Python,Python 3.x,我目前正在学习Python,我有一个练习,您必须处理异常。这个函数的目标是当给定键的值不在列表“self.data”的范围内时引发异常 这是我应该在函数中输入的内容来测试它: v = Vecteur(-9, -6, 2, 3, -2) v[-1] 现在我应该找一个索引器 你们中有谁能在这个问题上给我指点一下吗 提前谢谢 您的问题源于这样一个事实:您正在捕获索引器,然后打印,然后让执行失败 我会这样做: class Vecteur: def __init__(self, *valeurs
v = Vecteur(-9, -6, 2, 3, -2)
v[-1]
现在我应该找一个索引器
你们中有谁能在这个问题上给我指点一下吗
提前谢谢 您的问题源于这样一个事实:您正在捕获索引器,然后打印,然后让执行失败 我会这样做:
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
是一个有效的索引。因此,您可能需要更改您的\uuu getitem\uuu
:
def __getitem__(self, key):
if key < 0:
raise ValueError("Index has to be greater than 0")
# the rest of your __getitem__ here
def\uuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如果键<0:
提升值错误(“索引必须大于0”)
#剩下的_ugetItem在这里
为什么要解包*valeurs
然后用列表(valeurs)
再次打包?…直接将其传递给self.data
,您在这里的具体问题是什么?感谢您这么快的回复,我将编辑我的帖子以澄清这一点:)记住,负面索引在Python中是有效的,所以您的代码工作正常
def __getitem__(self, key):
if key < 0:
raise ValueError("Index has to be greater than 0")
# the rest of your __getitem__ here