python-3.x 在收到所有输入后运行计算

k3fezbri  于 2023-05-30  发布在  Python
关注(0)|答案(1)|浏览(160)

我几乎有这个应用程序的工作需要,我不知道如何接近最终的结果。

问题

我想从用户那里接收输入,并在输入所有输入后计算结果。
这一切都是与数字打交道,过程是:

  • 第一个输入是计算结果的测试次数
  • 第二个输入是第一个测试所用的位数
  • 第三个输入是用于计算的实际数字数组
  • 第四个输入是第二个测试所用的数字
  • 第五个输入是用于计算的实际数字数组

等等...

例如
*3-要运行的测试数
*4-第一次测试中使用的位数
*4 51 6 1-用于计算的数字
*3-第二次测试中使用的位数
*7 10 9-用于计算的数字
*5-第三次测试中使用的位数
*45 2 6 7 9-用于计算的数字

我的目标是在收集了用户的所有输入后,我想展示测试的结果,如下所示:

*2654
*230
*2195

以下是我的代码片段:

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
nxowjjhe

nxowjjhe1#

这就是递归的本质。您正在获取结果,因为您正在收集和计算期间进行打印。如果你想最后打印结果,创建一个可变对象,比如列表,并在计算过程中追加结果。最后,把它们都打印出来。

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, results):
    """ get inpute and calculate the numbers"""
    count_input = int(input())
    results.append(run_sum_squared(input().split()))
    if input_num > 1:
        do_work(input_num - 1, results)

def main():
    """ Run the Application"""
    input_num = int(input())
    results = []
    do_work(input_num, results)
    for result in results:
        print(result)

此代码在输入收集期间计算结果,但在最后打印它们。如果你想让计算结束,如果收集,你可以保持数据在一个列表中相同的方式。

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

def main():
    """ Run the Application"""
    input_num = int(input())
    inputs = []
    do_work(input_num, inputs)
    results = list(map(run_sum_squared,inputs))
    for result in results:
        print(result)

相关问题