【发布时间】:2021-06-10 12:46:47
【问题描述】:
首先,如果我的问题被认为是愚蠢的,或者我的帖子中有任何错误,我深表歉意 - 这是我的第二篇帖子,我仍然很难在这个平台上提出适当的问题。
其次,我尝试使用 Python 文档网站 (https://docs.python.org/3/tutorial/errors.html) 和 Stackoverflow 上的另一篇文章 (Raise statement) 中的示例查找“raise”语句背后的逻辑,但我仍然无法理解这个“提高”声明。
我正在尝试回答电子书Introduction to Computing and Programming using Python中的以下问题:“实现满足规范的函数。” (请参阅下面的功能说明)。
def findAnEven(L):
"""
ASSUMES: L is a list of integers
RETURNS: the first even number in L
Raises ValueError if L does not contain an even number
"""
下面是我尝试解决这个问题:
def findAnEven(L):
"""
ASSUMES: L is a list of integers
RETURNS: the first even number in L
Raises ValueError if L does not contain an even number
"""
try:
evenNumbers = []
for i in L:
if i % 2 == 0:
evenNumbers.append(i)
break
return(evenNumbers)
except ValueError:
raise ValueError("ValueError exception thrown")
findAnEven([1,2,3,4]) # RETURNS: [2]
findAnEven([1,1,1,1]) # RETURNS: [] - THIS SHOULD EXECUTE RAISE STATEMENT, NOT RETURN AN EMPTY LIST
我试图理解为什么我的代码块只返回一个空列表,而不是执行我的“raise”语句?
如果有人能解释(用外行的话)为什么我的代码块将一个空列表返回到最后一个函数调用(即 findAnEven([1,1,1,1]) 而不是执行我的“raise”语句,我将不胜感激 - 再次为这个愚蠢的问题道歉!
【问题讨论】:
-
您好,感谢您的回复。我试图回答以下规范,如我的帖子中所述: def findAnEven(L): """ 假设:L 是整数列表返回:如果 L 不包含偶数,则 L 中的第一个偶数引发 ValueError number """ Python 电子书中的章节与“异常”相关,如果 L(应该是一个列表)不包含偶数,则与“引发 ValueError”相关的具体练习。我试图用我目前学到的知识来回答电子书中的问题,但发现它很棘手!
标签: python-3.x raise