如何实现循环请求输入整数并累加?现有代码累加逻辑异常求排查
累计求和代码问题修正指南
现有代码问题原因
- 累计变量未在循环外初始化:每次循环都重新给
total_assignment_grade赋值为当前输入成绩,直接覆盖了之前的累计结果 - 累加逻辑错误:
complete = total_assignment_grade + assignment_grade实际仅将当前输入的成绩计算了两次,没有叠加历史输入的所有数值
固定输入次数版本(匹配你原有for循环逻辑)
你需要提前在循环外部初始化累计总和变量,每次循环将新输入的成绩叠加到该变量上即可,修正后代码如下:
# 提前定义作业总数量,可根据实际需求修改赋值 assignment_quantity = 5 # 循环外初始化累计总和为0,避免循环中被重置 total_assignment_grade = 0 for i in range(assignment_quantity): assignment_grade = int(input("What was your grade on assignment#" + str(i) + ":")) print(f"本次输入成绩:{assignment_grade}") # 累加当前成绩到总和变量 total_assignment_grade += assignment_grade # 输出当前累计结果 print(f"当前累计总成绩:{total_assignment_grade}") print(f"所有作业最终累计成绩:{total_assignment_grade}")
不限次数持续输入版本
如果需要不限制输入次数,直到用户主动终止输入,可以改用while循环实现:
total_assignment_grade = 0 i = 1 while True: input_str = input(f"What was your grade on assignment#{i}(输入-1结束输入):") assignment_grade = int(input_str) # 输入-1时终止循环 if assignment_grade == -1: break print(f"本次输入成绩:{assignment_grade}") total_assignment_grade += assignment_grade print(f"当前累计总成绩:{total_assignment_grade}") i += 1 print(f"所有输入成绩最终累计总和:{total_assignment_grade}")
内容的提问来源于stack exchange,提问作者DiggySP
相关产品推荐
相关产品推荐

