如何编写Python程序实现动态获取成绩数量并计算加权期末成绩
解决动态成绩数量的期末成绩计算问题
我明白你现在的需求——把固定3个成绩的代码改成能根据用户输入的数量来动态收集成绩和占比的版本。其实核心就是用循环来替代重复的代码块,下面直接给你调整后的完整代码,再一步步解释关键部分:
# 询问用户已取得的成绩数量 num_grades = int(input("How many grades have you received? ")) # 初始化总加权分数 total_weighted = 0.0 # 根据数量循环收集成绩和占比 for i in range(num_grades): print(f"\n--- Grade {i+1} ---") grade = int(input("What was this grade? ")) percentage = float(input("What's the percentage of this grade (as a decimal, e.g. 0.2 for 20%)? ")) # 计算加权值并累加 total_weighted += grade * percentage # 计算并输出最终等级 if total_weighted < 2.9: print(f"\nYour final grade is 2") elif total_weighted < 5.4: print(f"\nYour final grade is 4") elif total_weighted < 8.4: print(f"\nYour final grade is 7") elif total_weighted < 10.9: print(f"\nYour final grade is 10") else: print(f"\nYour final grade is 12")
关键改动说明:
- 动态获取成绩数量:用
num_grades = int(input(...))拿到用户输入的成绩个数,作为循环的次数依据。 - 循环收集数据:用
for i in range(num_grades)循环执行指定次数,每次处理一个成绩的输入和加权计算,彻底告别重复写grade1、grade2这类冗余代码。 - 累加加权值:初始化
total_weighted为0,每次循环把当前成绩的加权值(grade * percentage)累加到这个变量里,最后直接用它判断最终等级,逻辑更清晰。
可选优化建议(提升用户体验):
- 加入输入验证:比如检查用户输入的是不是合法数字,或者百分比是否在0到1之间(防止输入大于1的数导致结果异常)。
- 强化提示:明确告诉用户百分比需要输入小数形式(比如20%要输0.2),避免误解。
内容的提问来源于stack exchange,提问作者Dokteré
相关产品推荐
相关产品推荐

