我正在进行从Guttag Intro到计算机科学和使用python编程的手指练习,我正在进行以下手指练习:
手指练习:实现满足规范的功能 def findAnEven(l): “”假设l是一个整数列表 返回l中的第一个偶数 如果l不包含偶数“”“
,则引发ValueError这是我到目前为止写的,它完成了工作,但绝对不是Guttag想要的答案。
def isEven(l):
"""Assumes l is a list of integars
returns the first even number in list
raises an exception if no even number in list"""
for i in l:
if i % 2 == 0:
print i, " is the first even number in the list"
exit()
raise ValueError("No even numbers in list!")
我非常感谢关于Guttag教授如何看待代码的任何意见。我假设我应该在某处使用try语句,并且在此上下文中使用exit语句非常粗略。提前谢谢。
答案 0 :(得分:1)
您的代码存在的问题是exit()
的使用。通常return
将退出给您。要修复代码,只需删除它:
def isEven(l):
for i in l:
if i % 2 == 0:
return i
raise ValueError("No even numbers in list!")
答案 1 :(得分:0)
我正在使用try-except:
回答这个问题def findEven(L):
try:
for num in L:
if num%2==0:
return num
else:
num/0
except:
raise ValueError
要输入except块,try块中需要有错误。我专心地在try块中添加了一个零除法运算,以便在没有找到偶数的情况下产生ZeroDivisionError。此错误允许执行异常块。希望它在同样的情况下帮助其他人。
答案 2 :(得分:0)
我也在研究这部分。这是我的代码:
def findEven(L):
try:
for num in L:
if num%2==0:
return num
else:
num/0
except ZeroDivisionError:
print("No even numbers in list!")
except:
raise ValueError("findEven called with bad arguments")
我发现如果不使用ZeroDivisionError
,IDLE Shell会先显示ZeroDivisionError
,然后再显示这一行
During handling of the above exception, another exception occurred: