【发布时间】:2017-05-20 08:05:18
【问题描述】:
为澄清而编辑:我正在尝试做一个学校练习,要求我构建接收元素和元组的函数,如果元素在元组中,它会反向返回其位置,即:
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,不知道为什么。
附:如果您想评论我可以改进代码的方式,那就太棒了,对于断言部分也是如此!
【问题讨论】:
-
为什么?
ele in tuplo不工作? -
请修正您的代码缩进。
-
请修正缩进。编写的程序在语法上不正确。
-
是什么让您认为这段代码中的任何内容都会导致您捕获 KeyError?
-
你为什么期待
KeyError?哦,是的:你确定你真的理解了练习的描述吗?您不应该在函数中引发异常并在函数调用之外捕获它吗?