Python多整数输入求均值与最大值程序报错求助
代码错误排查:整数平均值与最大值计算问题
你的代码有两个核心问题导致输出不符合预期:
1. 最大值判断逻辑完全错误
你把最大值的比较代码写在了for循环外面,这意味着程序只会拿最后一个输入的数字和初始的max值比较,根本没遍历所有数字找最大值。比如输入15 20 0 5时,循环结束后n的值是'5',完全没对前面的20做比较判断,自然得不到正确最大值。
2. 最大值初始值设置不合理
你把max初始化为-1,如果输入的所有数字都是负数(比如-3 -4 -5),那-1会比这些数都大,最终输出的最大值会是错误的-1,而不是实际的最大值-3。
修正后的代码(两种写法)
写法1:利用Python内置函数(简洁高效)
input_str = input() num_list = [int(num) for num in input_str.split()] total = sum(num_list) average = total / len(num_list) max_num = max(num_list) # 按照示例要求取平均值的整数部分 print(int(average), max_num)
写法2:手动遍历实现(更直观展示逻辑)
input_str = input() num_strs = input_str.split() # 处理空输入的边界情况 if not num_strs: print("请输入至少一个整数") exit() total = 0 # 用第一个数字初始化最大值,避免负数问题 max_num = int(num_strs[0]) for s in num_strs: num = int(s) total += num # 每次循环都比较更新最大值 if num > max_num: max_num = num average = total / len(num_strs) print(int(average), max_num)
修正说明
- 把字符串转整数的操作统一处理,避免重复转换;
- 最大值的比较逻辑放到
for循环内部,确保每个数字都参与比较; - 用输入的第一个数字初始化最大值,解决负数输入的错误;
- 增加了空输入的边界处理,让程序更健壮。
内容的提问来源于stack exchange,提问作者Emily
相关产品推荐
相关产品推荐

