【发布时间】:2018-04-22 19:23:09
【问题描述】:
我写了一个程序找到问题的超级数字,IE:9876 = 9+8+7+6 = 30 = 3+0 = super digit = 3 每当程序不调用自身时,这都可以正常工作,但在上述情况下,我会得到一个最终的整数值 3,它会这样打印,但是当我返回它时,它返回 None。我想知道为什么会这样?
代码如下:
def super_digit(n):
sup_Digit = 0
intArray = [int(i) for i in str(n)]
for i in range(len(intArray)):
sup_Digit += intArray[i]
if sup_Digit and sup_Digit < 10:
return int(sup_Digit)
else:
super_digit(sup_Digit)
这是我的测试用例:
from unittest import TestCase
tc = TestCase()
tc.assertEqual(super_digit(5), 5)
tc.assertEqual(super_digit(30), 3)
tc.assertEqual(super_digit(9876), 3)
tc.assertEqual(super_digit(11111111111111), 5)
tc.assertEqual(super_digit(12345678901234567890), 9)
【问题讨论】:
-
应该是
return super_digit(sup_Digit) -
呃,菜鸟的错误。做到了,谢谢。
-
旁注,第2-5行可以替换为
sup_Digit = sum(int(c) for c in str(n))
标签: python python-3.x