You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python程序如何实现收集全部输入后统一输出计算结果?

问题:Python多组平方和计算统一输出结果

我开发了一个Python程序用于计算多组数值的平方和,流程是先输入测试组数,每组依次输入数字个数及数字数组。当前代码计算正确,但每组输入后会立即输出结果,需要修改为收集完所有输入后统一输出所有测试的计算结果。

现有代码片段:

def run_sum_squared(dta):
    """ run the sum squared calculation"""
    if not dta:
        return 0
    value = int(dta[0])
    if value < 0:
        value = 0
    return value**2 + run_sum_squared(dta[1:])


def do_work(input_num):
    """ get inpute and calculate the numbers"""
    count_input = int(input())
    print(run_sum_squared(input().split()))
    if input_num > 1:
        do_work(input_num - 1)


def main():
    """ Run the Application"""
    input_num = int(input())
    do_work(input_num)


if __name__ == "__main__":
    main()

当前输出(边输入边输出):

3
4
4 51 6 1
2654
3
7 10 9
230
5
45 2 6 7 9
2195

期望输出(收集完所有输入后输出):

2654
230
2195

解决方案

核心思路是将每一组的计算结果先收集到列表中,待所有输入处理完成后再统一打印,具体修改如下:

修改后的代码

def run_sum_squared(dta):
    """ 计算数组中所有非负数的平方和 """
    if not dta:
        return 0
    value = int(dta[0])
    if value < 0:
        value = 0
    return value**2 + run_sum_squared(dta[1:])


def do_work(input_num):
    """ 读取所有输入并计算,返回结果列表 """
    results = []
    for _ in range(input_num):
        # 读取每组的数字个数(可忽略,因为split后能获取所有数字)
        int(input())
        data = input().split()
        results.append(run_sum_squared(data))
    return results


def main():
    """ 程序主入口 """
    input_num = int(input())
    all_results = do_work(input_num)
    # 统一输出所有结果
    for res in all_results:
        print(res)


if __name__ == "__main__":
    main()

改动说明

  1. 替换递归为循环:将原递归的do_work改为循环遍历所有测试组,更易读且避免递归深度限制问题
  2. 结果收集而非即时打印:去掉原代码中的print语句,把每一组的计算结果存入列表results
  3. 统一输出:在main函数中拿到所有结果后,循环打印列表中的每一项

验证效果

输入所有内容后:

3
4
4 51 6 1
3
7 10 9
5
45 2 6 7 9

程序会一次性输出所有结果:

2654
230
2195

内容的提问来源于stack exchange,提问作者DebPepDevuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:34:56