我写了一个找到问题超级数字的程序,IE:9876 = 9 + 8 + 7 + 6 = 30 = 3 + 0 =超级数字= 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)
答案 0 :(得分:2)
return语句会导致函数退出并返回a 对其来电者的价值。一般来说,功能的关键在于接受 输入并返回一些内容。
好的,默认情况下&#39;返回&#39;给出无,所以在您的情况下,您将返回&#39;如果&#39;条件为True
时条件的第一部分,但条件为何时返回的地方为“其他”条件。一部分?
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:
return super_digit(sup_Digit)
print(super_digit(9876))
输出:
3
答案 1 :(得分:1)
你忘记了回复声明:
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:
return super_digit(sup_Digit)