我几乎有这个应用程序的工作需要,我不知道如何接近最终的结果。
问题
我想从用户那里接收输入,并在输入所有输入后计算结果。
这一切都是与数字打交道,过程是:
- 第一个输入是计算结果的测试次数
- 第二个输入是第一个测试所用的位数
- 第三个输入是用于计算的实际数字数组
- 第四个输入是第二个测试所用的数字
- 第五个输入是用于计算的实际数字数组
等等...
例如
*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
1条答案
按热度按时间nxowjjhe1#
这就是递归的本质。您正在获取结果,因为您正在收集和计算期间进行打印。如果你想最后打印结果,创建一个可变对象,比如列表,并在计算过程中追加结果。最后,把它们都打印出来。
此代码在输入收集期间计算结果,但在最后打印它们。如果你想让计算结束,如果收集,你可以保持数据在一个列表中相同的方式。