python 024课后作业(10进制转2进制)疑问
def ddd(n):
odd=" "
while n:
zjl=str(ddd(n//2))
odd=zjl+str(n%2)
return odd
输出结果前有个“None”,为什么出现这个情况 本帖最后由 jackz007 于 2020-11-25 16:55 编辑
函数在无返回值时返回的就是 None,一个函数不可以有些时候有返回值,而另一些时候却没有,必须始终如一,有就始终有,没有就始终没有。
你的递归函数写的很有问题,已经帮你改正
def ddd(n):
if n:
return ddd(n // 2) + str(n % 2)
else:
return "" jackz007 发表于 2020-11-25 16:48
函数在无返回值时返回的就是 None,一个函数不可以有些时候有返回值,而另一些时候却没有,必须始 ...
感谢
n=1时,n//2=0,这时ddd(n//2)无返回值,会返回None
是这样的吧 扫雷僧 发表于 2020-11-25 17:20
感谢
n=1时,n//2=0,这时ddd(n//2)无返回值,会返回None
是这样的吧
你的代码是 while 的死循环,如果你要写 while n 的话,那就必须在循环体内修改 n,并确保 n 一定有等于 0 的时候,否则,就一定是死循环。
你的代码还有一个问题,就是把 return 语句写进了 while 循环内部,在 Python 中,代码块是严格按缩进进行分级的,所以,一定要把握好代码的缩进层次。
页:
[1]