【问题标题】:Summing elements inside tuple of tuples with recursion用递归对元组的元组内的元素求和
【发布时间】:2020-01-25 18:14:33
【问题描述】:

所以我的问题如下:

我有一个包含 1 个或多个元组的元组,我想对元组内的所有数字求和。但是缺少一些东西,因为当你有一个带有元素的元组的元组时,它甚至不检查它们。

例如:

def soma_els_atomicos(tup):
    if tup == ():
        return 0
    if isinstance(tup[0],int):
        return tup[0] + soma_els_atomicos(tup[1:])
    if isinstance(tup[0],tuple):
        return 0 + soma_els_atomicos(tup[1:])

输入:

>>>tup = (3, ((((((6, (7, ))), ), ), ), ), 2, 1)

输出:

>>>soma_els_atomicos(tup)
>>> 6

输出应该是 19,但我似乎没有注意到缺少什么。

【问题讨论】:

  • 我试试谢谢

标签: python recursion tuples


【解决方案1】:

你这部分代码有逻辑错误:

    if isinstance(tup[0],tuple):
        return 0 + soma_els_atomicos(tup[1:])

假设tup[0] 是一个元组,那么递归和应该等于tup[0] 中的数字之和加上tup[1:] 中的数字之和。您的代码使用0 而不是tup[0] 中数字的总和。你可以这样修复它:

    if isinstance(tup[0],tuple):
        return soma_els_atomicos(tup[0]) + soma_els_atomicos(tup[1:])

例子:

>>> tup = (3, ((((((6, (7, ))), ), ), ), ), 2, 1)
>>> soma_els_atomicos(tup)
19

顺便说一句,我建议使用 if/elif/elif 而不是单独的 if 语句编写代码,并使用 else 大小写来处理无效的输入类型(例如,通过提高 @ 987654334@).

【讨论】:

    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多