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
相关产品推荐
相关产品推荐

