为澄清而编辑:我正在尝试做一个学校练习,要求我构建接收一个元素和一个元组的函数,如果元素在元组中,它会反向返回它的位置,即:
findInTupleA (1 , (1,2,3,1)
打印
[3, 0]
但是如果元组中不存在该元素,则应发送一个 KeyError,提示“元素不在元组中”。
def findInTupleA(elem,tuplo):
lista_indices = []
i = 0
while i < len(tuplo):
try:
if tuplo[i] == elem:
lista_indices.append(i)
i = i + 1
except KeyError:
return "element not in tuple"
if len(lista_indices)>=1:
return lista_indices[::-1]
else:
return lista_indices
它仍然没有按预期工作,因为如果我给它元素 1 和元组 (2,3) 它返回一个空列表而不是键错误,而当我问的时候,reverse() 在第二个 if 上不起作用,不知道为什么。
附言如果您想对我可以改进代码的方式发表评论,那就太棒了,对于断言部分也是如此!
请您参考如下方法:
我觉得你误解了你的任务。我认为您不需要使用 try 和 except 来捕获函数内部的异常,而是您应该自己引发异常(并可能在函数外使用 try/except 来处理它)。
尝试更多类似的东西,看看它是否满足您的需要:
def findInTupleA(elem,tuplo):
lista_indices = []
i = 0
while i < len(tuplo):
if tuplo[i] == elem:
lista_indices.append(i)
i = i + 1
if len(lista_indices) >= 1:
return lista_indices
else:
raise IndexError("element not in tuple")
