Python重复录入数值统计奇数总和及均值时报类型错误如何解决
错误原因分析
- 逻辑顺序错误:代码优先对输入内容执行
int(input())强制转整数操作,再判断输入是否为空。空字符串无法被转为整数,会直接触发类型异常;且已经转为整数的变量永远不可能等于空字符串,循环终止条件永远无法生效。 - 运算符误用风险:如果输入内容未正常转为整数就执行
% 2运算,%会被识别为Python字符串格式化运算符而非取模运算符,就会触发你遇到的not all arguments are converted during string formatting报错。 - 变量名冲突:使用Python内置函数名
sum、len作为自定义变量,会覆盖内置函数功能,属于代码隐患。 - 缺少异常处理:未校验输入内容是否为有效整数,输入非数字内容时会直接报错;未判断奇数计数是否为0,无奇数录入时计算平均值会触发除零错误。
修复方案
调整逻辑顺序:先读取输入字符串,判断为空直接终止循环,再做整数转换;添加输入有效性校验,更换合法变量名,增加除零防护逻辑。
修复后完整代码
odd_sum = 0 odd_count = 0 while True: input_str = input() # 空输入结束录入 if input_str.strip() == "": break # 校验输入是否为整数 try: number = int(input_str) except ValueError: print("请输入合法整数") continue # 统计奇数 if number % 2 == 1: print(number) odd_sum += number odd_count += 1 # 计算平均值 if odd_count == 0: print("未录入任何奇数,无法计算平均值") else: avg = odd_sum / odd_count print(f"奇数平均值为:{avg}")
内容的提问来源于stack exchange,提问作者rajan
相关产品推荐
相关产品推荐

