python 程序引发异常

python program raising exceptions

我正在使用 python 从 Guttag Intro to computer science and programming 进行手指练习,我正在做以下手指练习:

手指练习:实现一个满足规范的函数 def findAnEven(l): """假设l是一个整数列表 Returns 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 语句非常粗糙。提前致谢。

您的代码的问题在于 exit() 的使用。一般return会给你退出。要修复代码,只需将其删除:

def isEven(l): 
        for i in l: 
                if i % 2 == 0: 
                        return i 
        raise ValueError("No even numbers in list!") 

我正在使用 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。此错误允许执行异常块。希望它能帮助处于相同情况的其他人。

我也在做这部分。这是我的代码:

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,IDLEShell会先显示ZeroDivisionError,然后再显示这一行

During handling of the above exception, another exception occurred: