Python中接收多个输入后如何输出所有对应结果?
问题分析与代码修复
原代码存在两个核心问题:
- 全局变量
sum1未在每个测试用例开始时重置,导致多个用例的结果被累加; - 仅在所有用例处理完成后输出一次结果,无法分别返回每个输入对应的答案。
修改后的基础版本代码
将sum1的初始化移至外层循环内部,确保每个测试用例的总和从零开始计算,并在每个用例处理完成后立即输出结果:
t = int(input().strip()) for t_itr in range(t): sum1 = 0 n = int(input().strip()) for i in range(n): if i % 3 == 0 or i % 5 == 0: sum1 += i print(sum1)
优化版本(数学公式替代循环)
对于较大的n,循环遍历会降低效率,可通过数学公式直接计算小于n的3、5倍数之和(需排除重复计算的15倍数):
t = int(input().strip()) def get_sum(n): def sum_of_multiples(m): count = (n - 1) // m return m * count * (count + 1) // 2 return sum_of_multiples(3) + sum_of_multiples(5) - sum_of_multiples(15) for _ in range(t): n = int(input().strip()) print(get_sum(n))
内容的提问来源于stack exchange,提问作者Pranali Hemane
相关产品推荐
相关产品推荐

