我是一名正在学习计算机科学的学生,我们正在学习尝试:除了:我在这个问题上遇到了障碍,我只是想弄清楚。
在本练习中,您应该定义一个名为
add_list_values()
的函数,该函数传递一个值列表以及两个索引位置。该函数应返回指定索引位置的两个值的总和。例如,如果列表是:
myList = [4,2,6,7,8,1]
然后是函数调用:
add_list_values(myList, 2, 4)
应该返回值14.
这里可能会出现一些问题。首先,如果序列下标超出范围,则将生成
IndexError
。当然,除非两个操作数都是数字,否则会出现TypeError
,表示无法完成添加。定义
add_list_values()
函数,同时考虑这些可能的异常。请注意:
- 如果发生
IndexError
,则该函数应返回0- 如果发生
TypeError
,则该函数应返回两个值的字符串连接
出于某种原因,当我到达第二个列表而不是抛出错误时,我得到答案(24)?
我想知道如何检查列表中的字符串,因此我可以识别此字符串并调用TypeError
。
def add_list_values(myList, p1, p2):
try:
print (myList[p1])
print (myList[p2])
answer = myList[p1] + myList[p2]
return answer
except IndexError:
return 0
except TypeError:
return str(p1)+str(p2)
#myList = [4,2,6,7,-2,100]
#print(add_list_values(myList, 2, 4))
myList = [4,2,6,7,"a",100]
print(add_list_values(myList, 2, 4))
#myList = [4,2,6,7,-6,100]
#print(add_list_values(myList, 2, -400))
答案 0 :(得分:2)
当您catch
中的TypeError
时,您正在连接两个作为字符串强制转换的索引:
return str(p1) + str(p2)
p1
为2,p2
为4,因此str(2) + str(4)
返回字符串24
如果要返回错误:
except TypeError as e:
return e
如果您想加注,则需要使用raise
不返回
try / except的整个想法是捕获TypeError
而不是引发异常,这正是发生的事情,尝试将字符串"a"
添加到int 6
确实会导致您捕获的TypeError并返回强制转换为连续的两个索引。