当for循环遇到try except应该如何正确使用呢?有些同学在写程序的时候懒省事直接把try语句写在了for循环的外层,这样一来可能造成程序运行并非你的预期。

比如现在有个变量num,有个列表lis,需求:把列表所有的元素减去1以后在用num除以它。

考虑到列表元素减1之后可能是0,而除以0会有异常。于是为了避免程序停止就做了异常处理,但是就用了下面的写法:

# -*- coding: utf-8 -*-

num = 10

lis = [1,2,3,4,5]

new_lis = [i-1 for i in lis]

try:

for i in new_lis:

print(num/i)

except Exception as e:

print(e)

division by zero

以上写法并没有错误,但是不是你想要的处理结果。因为你写在外部,整个for循环体内一旦出现异常就直接被捕捉到从而跳到except代码段执行,正确的写法应该是把try except语句写到循环内部判断除以每一个元素是否异常。

# -*- coding: utf-8 -*-

num = 10

lis = [1,2,3,4,5]

new_lis = [i-1 for i in lis]

for i in new_lis:

try:

print(num/i)

except Exception as e:

print(e)

division by zero

10.0

5.0

3.3333333333333335

2.5