python如何分离数字divmod方法

需求来自于202. 快乐数

比如我有一个173,我想把每一位都算一个平方,再相加返回。

结果应该是sum = 12+7+ 32 = 1 + 49 + 9 = 59

利用divmod方法:

def get_sum(n: int) -> int:
    new_num = 0
    while n:# n最终会变为0,就会跳出循环
        print(f"分离前:{n}")
        n, r = divmod(n, 10)
        print(n, r)
        new_num += r ** 2
    return new_num


if __name__ == '__main__':
    n = 173
    print(get_sum(n))

 

效果:

去掉注释后:

def get_sum(n: int) -> int:
    res_sum = 0
    # 每次计算末尾,并相加到res_sum中
    while n:
        n, r = divmod(n, 10)
        res_sum += r ** 2
    return res_sum


if __name__ == '__main__':
    print(get_sum(n=457))  # 16 + 25 + 49 = 90

posted @ 2024-01-02 14:38  o蹲蹲o  阅读(17)  评论(0编辑  收藏  举报