Codewars_Sum of Digits / Digital Root

​​在这里插入图片描述

digital_root(16)
=> 1 + 6
=> 7

digital_root(942)
=> 9 + 4 + 2
=> 15 ...
=> 1 + 5
=> 6

digital_root(132189)
=> 1 + 3 + 2 + 1 + 8 + 9
=> 24 ...
=> 2 + 4
=> 6

digital_root(493193)
=> 4 + 9 + 3 + 1 + 9 + 3
=> 29 ...
=> 2 + 9
=> 11 ...
=> 1 + 1
=> 2

就是给定一个自然数,然后又返回每个位置值的和,刚开始我写的是:

def digital_root(n):
    while(n > 9):
        n = n/10 + n%10
    return n
    

结果:
在这里插入图片描述
没有小数的情况,只考虑了整数下的情况,之后修改了代码为:

def digital_root(n):
    if n < 10:
        return n
    else:
        return digital_root(sum(map(int, str(n)))) 

完美解决
在这里插入图片描述
给大家看一下map()函数的用法。先贴图。
在这里插入图片描述
先用str()函数将输入值转换为string,使用map()函数返回列表,一一映射为int类型,然后再用个sum就好啦。
简单如斯。


版权声明:本文为qq_28058691原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。