Python作业:最小值输出错误与利息计算异常问题求助
Python作业问题:最小值与利息计算错误排查
作业要求:
编写一个使用循环从用户输入读取5个浮点数值的程序。提示用户输入数值,然后输出以下数据:总和、平均值、最大值、最小值、每个输入原始值的20%利息。使用公式:Interest_Value = Original_value + Original_value*0.2
我提交了其他作业,但这个问题一直卡着,找不到最小值输出错误、利息计算不正确的原因。附上代码和示例输出,求解决建议。
原代码
entered_number = 0 sum = 0 average = 0 max_number = 0 min_number = 0 interest = 0.2 for entered_number in range(5): entered_number = float(input('Enter a number: ')) if entered_number > max_number: max_number = entered_number if entered_number < min_number: min_number = entered_number sum = sum + entered_number average = sum / 5 interest = entered_number + (entered_number * interest) # removing the () didn't solve print('Total:', sum) print('Average:', average) print('Maximum number:', max_number) print('Minimum number:', min_number) print('Interest at 20% for each entered number is: ', interest)
示例输出
Enter a number: 20 Enter a number: 30 Enter a number: 40 Enter a number: 50 Enter a number: 60 Total: 200.0 Average: 40.0 Maximum number: 60.0 Minimum number: 0 Interest at 20% for each entered number is: 90123060.0
错误点分析
- 最小值初始化错误:
min_number初始设为0,若输入的所有数值都大于0,最小值永远不会更新,始终显示0。 - 总和计算逻辑错误:
sum = sum + entered_number放在循环外部,只会累加最后一个输入的数值,前面的数都没被计入总和(示例输出的总和200.0应为手动写错,实际运行会得到60.0)。 - 利息变量冲突:用同一个
interest变量既存利率0.2,又存计算后的利息值,第二次循环时interest已不是初始的0.2,导致后续计算完全混乱;且只计算了最后一个数的利息,不符合“每个输入值的利息”要求。 - 平均值计算时机错误:平均值基于错误的总和计算,结果自然不准确。
修正后的代码
total_sum = 0 max_number = float('-inf') min_number = float('inf') interest_rate = 0.2 interest_values = [] for _ in range(5): num = float(input('Enter a number: ')) total_sum += num if num > max_number: max_number = num if num < min_number: min_number = num current_interest = num * (1 + interest_rate) interest_values.append(current_interest) average = total_sum / 5 print('Total:', total_sum) print('Average:', average) print('Maximum number:', max_number) print('Minimum number:', min_number) print('Interest at 20% for each entered number is:') for i, val in enumerate(interest_values, 1): print(f' 第{i}个输入值的利息: {val}')
修正说明
- 变量命名更清晰,避免和Python内置函数(如
sum)冲突 - 最大值初始化为负无穷、最小值初始化为正无穷,确保第一个输入的数值能正确更新极值
- 总和累加放在循环内部,每个输入值都被计入总和
- 拆分利率和利息存储:用
interest_rate固定存0.2,用列表interest_values保存每个数的利息,最后逐个输出 - 平均值在循环结束后基于正确的总和计算
内容的提问来源于stack exchange,提问作者delaireman
相关产品推荐
相关产品推荐

