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()
改动说明
- 替换递归为循环:将原递归的
do_work改为循环遍历所有测试组,更易读且避免递归深度限制问题 - 结果收集而非即时打印:去掉原代码中的
print语句,把每一组的计算结果存入列表results - 统一输出:在
main函数中拿到所有结果后,循环打印列表中的每一项
验证效果
输入所有内容后:
3 4 4 51 6 1 3 7 10 9 5 45 2 6 7 9
程序会一次性输出所有结果:
2654 230 2195
内容的提问来源于stack exchange,提问作者DebPepDevuan
相关产品推荐
相关产品推荐

