我编写了一个Python函数,它接受一个整数作为输入,并返回所有该数字的总和:
def digit_sum(n):
n_lst = list( str(n) )
n_sum = 0
for i in range( len(n_lst) ):
n_sum += int( n_lst[i] )
return n_sum
print( digit_sum(1234) ) # 10
现在我想知道是否有更简洁的方法可以使用内置函数或列表推导来做到这一点?
答案 0 :(得分:2)
你的意思是这样的吗?
sum( [int(x) for x in list(str(n))] )
答案 1 :(得分:2)
您可以将数字转换为字符串,然后添加单个数字,例如
sum(int(num) for num in str(n))
这使用生成器表达式,sum
函数迭代生成器表达式以继续添加数字。
答案 2 :(得分:2)
我更喜欢sum(map(int, str(n)))
。
答案 3 :(得分:1)
虽然所有最近的答案都有利于"保证"整数输入,考虑到 " raw" 输入,我将留下一个消毒的方法(作为替代方案):
import re
def digit_sum(sequence):
return sum(int(d) for d in re.findall('\d', sequence))
print(digit_sum(input("enter some digits")))
print(digit_sum("123werwer13!-")) # 10
print(digit_sum("abbc")) # 0
re.findall('\d', sequence)
- 将在输入序列中找到所有数字