编辑澄清:我正在尝试进行学校练习,这需要我构建接收元素和元组的函数,如果元素在元组中,它会以相反的方式返回其位置,即:
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
工作,不知道为什么。
P.S。如果您想评论我可以改进代码的方法,它会很棒,对于断言部分也是如此!
答案 0 :(得分:4)
听起来你好像误解了你的任务。我不认为您需要使用try
和except
来捕获函数内部的异常,而是您应该自己提升异常(并且可能使用{{1在处理它的函数之外的/ try
。)
尝试更类似的内容,看看它是否符合您的要求:
except
答案 1 :(得分:3)
如何检查元素index
是否在元组中。如果该元素不存在,则返回element not in tuple
异常ValueError
,如下所示:
def in_tuple(elem, tuplo):
try:
return tuplo.index(elem)
except ValueError:
return 'element not in tuple'
print in_tuple(1, (2, 3))
答案 2 :(得分:2)
我认为你的问题在于缩进。我认为你的目标是......
def findInTupleA(elem,tuplo):
lista_indices = []
i = 0
while i < len(tuplo):
try:
if tuplo[i] == elem:
lista_indices.append(i)
except KeyError:
return "element not in tuple"
i = i + 1
if len(lista_indices)>=1:
return lista_indices[::-1]
else:
return lista_indices