当前位置: 首页 > 知识库问答 >
问题:

如何将数字的位数相加?[副本]

司徒胤
2023-03-14

我在Python中有一个函数,它可以帮助我找到数字的总和:

def sum01(n):
    if n < 9 and n > 0:
        return n
    elif n > 9:
        s = sum01((n%10)+(n//10))
        return s
    else:
        return "ERROR, only natural numbers (N)!"

    print(sum01(22224))

这个函数给出的结果是:

3

然而,我希望看到的结果是:

12

我想使用递归函数得到这个答案,而不使用for循环和无列表,但是,我一直未能做到这一点。

谢谢

我无法添加我一直在寻找的解决方案作为答案,因此问题就在这里。

`def sum01(n):
   x = 0
   if n < 9 and n > 0:
       return n
   elif n > 9:
       x = (n%10) + x
       s = sum01(n//10)
       return s + x
   else:
       return "ERROR, only natural numbers (N)!"`

共有1个答案

邢博学
2023-03-14

这不是最好或最有效的解决方案,但如果您只需要快速完成,它会非常简短:

sum_of_digits = 0
for digit in str(22224):
  sum_of_digits += int(digit)

如果你想给别人留下深刻印象,你也可以用这个“一句话”:

from functools import reduce
reduce(lambda a, b: int(a) + int(b), str(22224))

但是@ekhumoro解决方案甚至更好(见评论)。

无论如何,这将有点像递归的reduce,不涉及循环:

def sum_of_digits(sum, digits):
    sum += int(digits.pop())
    if len(digits) == 0:
        return sum
    return sum_of_digits(sum, digits)

print(sum_of_digits(0, list(str(22224))))

我想这有点干净:

def sum_of_digits(sum, number):
    if number == "":
        return sum
    digits = str(number)
    return sum_of_digits(sum + int(digits[0]), digits[1:])

print(sum_of_digits(0, 22224))
 类似资料:
  • 问题内容: 我有两个仅包含数字的字符串: 我本来希望可以将它们加在一起,但是它们被串联起来了: 如何强制将这些字符串视为数字? 问题答案: 我将使用一元加号运算符先将其转换为数字。

  • 问题内容: 我有两个仅包含数字的字符串: 我本来希望可以将它们加在一起,但是它们被串联起来了: 如何强制将这些字符串视为数字? 问题答案: 我将使用一元加号运算符先将其转换为数字。

  • 如何将“4,250,000.40”转换为4,250,000.40,即通过保留逗号和点将字符串转换为数字?使用JavaScript

  • 我已经检测到一个数字上的位数。例如,有位。 但是,有没有一种最快的方法来计算数字上的数字呢?我必须多次使用此方法,所以我认为使用会影响性能。 谢了。

  • 我试图用java编写一个循环,它取一个3位数,并将这些数字相加在一起。例如,123等于6。我知道n%10会得到第一个数字3,然后n/10会得到23,然后可以再次是%10,得到第二个数字。然而,这对最后一个数字不起作用。我不知道怎么写循环。任何帮助都将不胜感激。

  • 我正在创建一个小琐碎的回文测试在Java。 我应该在某个时候检查用户输入的是多于还是少于三位数,如“1011”或“10”,并显示一条错误消息,如“错误输入”。但是,在Java中,我不能用检查数字的长度,相反,我可以用字符串()检查数字的长度。 我怎样才能解决这个问题呢?

  • 问题内容: 我有几根不同长度的琴弦 我需要将它们转换为相同大小的字符串,例如: 如何在每个字符串前自动添加正确的0数? 谢谢 问题答案: 用途:

  • 所有, 我有一个类似这样的df 要访问我要查找的号码,我执行了以下操作: 然而,输出是 但是我要找的是,没有列名和索引。 任何想法都是受欢迎的 谢谢