You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术问题:不使用list与max(),修正三输入最大偶数输出错误

修正获取三个整数中最大偶数的代码

原代码的问题在于,当最大值为奇数时,后续判断偶数是否大于其他数的逻辑有误。比如输入11、11、8时,最大值11是奇数,而唯一的偶数8并不大于另外两个数,导致触发else分支返回None,不符合需求。

正确的思路是:

  • 先筛选出所有输入中的偶数
  • 若无偶数,直接返回None
  • 若有偶数,手动比较找出其中最大的那个

修正方案一(使用列表收集偶数)

def getLargestEven(x, y, z):
    # 收集所有偶数
    evens = []
    if x % 2 == 0:
        evens.append(x)
    if y % 2 == 0:
        evens.append(y)
    if z % 2 == 0:
        evens.append(z)
    
    # 没有偶数返回None
    if not evens:
        return None
    
    # 手动找出偶数中的最大值
    largest_even = evens[0]
    for num in evens[1:]:
        if num > largest_even:
            largest_even = num
    return largest_even

x = int(input("Enter x: "))
y = int(input("Enter y: "))
z = int(input("Enter z: "))

print("Largest Even:", getLargestEven(x, y, z))

修正方案二(无列表直接比较)

def getLargestEven(x, y, z):
    # 初始化最大偶数为None
    largest_even = None
    
    # 逐个检查并更新最大偶数
    if x % 2 == 0:
        largest_even = x
    if y % 2 == 0:
        if largest_even is None or y > largest_even:
            largest_even = y
    if z % 2 == 0:
        if largest_even is None or z > largest_even:
            largest_even = z
    
    return largest_even

x = int(input("Enter x: "))
y = int(input("Enter y: "))
z = int(input("Enter z: "))

print("Largest Even:", getLargestEven(x, y, z))

两种方案都能正确处理输入11、11、8的情况,返回8;当没有偶数时返回None,完全符合需求。

内容的提问来源于stack exchange,提问作者lmrnc587

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:57:26