求一个数字的数根

背景介绍

实现一个算法求一个数字的数根。介绍如下:

class Solution(object):
    def add_digits(self, val):
        ''' 补充代码 '''
  • 将一正整数的各个位数相加(即横向相加)后,若加完后的值大于等于 10 的话,则继续将各位数进行横向相加直到其值小于 10 为止所得到的数,即为数根。
  • 例如对于数字 567,就要依次计算 5+6+7=181+8=9,所以 567 的数根为 9
  • 挑战步骤

    本次挑战中,你需要在 digits.py 文件中补充类 Solution 的空缺部分。

  • Solution 中的 add_digits 方法用于求一个数字的数根。
  • add_digits 函数的参数 val 用于指定传入的数字。
  • add_digits 函数需要返回找到的数根。
  • 如果传入的 val 为 None,需要使用 raise 语句抛出 TypeError 异常。
  • 如果传入的 val 为负数,需要使用 raise 语句抛出 ValueError 异常。
  • 请完善下面的代码:

要求规定

  • 本次挑战必须使用 Python 3 实现。
  • 请勿修改现有代码。
  • 文件路径为 /home/project/digits.py
  • 代码必须写入 digits.py 文件中,且不能修改示例代码中出现的类名和函数名。
  • 最终实现效果:
    • 当 val 为 567,则 add_digits 函数返回 9。
    • 当 val 为 2021,则 add_digits 函数返回 5。

 

 

def getSum(val):
    sum = 0
    while val > 0:
        sum = sum + val % 10
        val = val // 10
    return sum

class Solution(object):
    def add_digits(self, val):
        if val == None:
            raise TypeError
        elif val < 0:
            raise ValueError
        else:
            while getSum(val) >= 10:
                val = getSum(val)
            return getSum(val)

if __name__ == '__main__':
    n = int(input())
    s = Solution()
    print(s.add_digits(val=n))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值