Python 挑战练习-进阶挑战56
编写一个程序来查找列表中最大的偶数。如果列表中没有偶数,则返回-1
。
-
定义一个名为
find_largest_even()
的函数,该函数接受一个列表作为参数。 -
在函数内部,遍历列表并找到最大的偶数。
-
如果没有找到偶数,则返回
-1
。
def find_largest_even(lst):
# 此处编写你的代码
large_even=-1
for num in lst:
if num%2==0 and num>large_even:
large_even=num
return large_even
# 获取输入转为整数列表
input_list = list(map(int, input().split()))
# 调用函数
print(find_largest_even(input_list))
解释:
-
首先初始化变量
largest_even
为-1
,这个变量用于记录找到的最大偶数,初始化为-1
是因为按照题目要求,如果列表中没有偶数,就返回-1
。 -
通过
for num in lst:
循环遍历输入的列表lst
中的每一个数字。在循环中,使用if num % 2 == 0 and num > largest_even:
判断当前数字是否为偶数(通过num % 2 == 0
判断),并且是否比当前记录的最大偶数还要大(通过num > largest_even
判断),如果这两个条件都满足,就说明找到了一个更大的偶数,将largest_even
的值更新为当前数字num
。 -
当整个列表遍历结束后,
largest_even
变量中存储的值就是列表中最大的偶数,如果列表中没有偶数,它依然保持初始值-1
,最后通过return largest_even
返回这个值,符合题目要求的功能。
方法二:使用内置函数筛选后取最大值(简洁版)
def find_largest_even(lst):
evens = [num for num in lst if num % 2 == 0]
if evens:
return max(evens)
return -1
解释:
-
首先使用列表推导式
[num for num in lst if num % 2 == 0]
从输入的列表lst
中筛选出所有的偶数,将这些偶数组成一个新的列表evens
。 -
接着通过
if evens:
判断evens
列表是否为空,如果不为空,说明找到了偶数,此时使用max(evens)
函数获取evens
列表中的最大值,也就是列表lst
中最大的偶数,然后返回这个最大值;如果evens
列表为空,说明没有找到偶数,按照题目要求返回-1
。