鱼C论坛

 找回密码
 立即注册
查看: 1712|回复: 3

[已解决]python 024课后作业(10进制转2进制)疑问

[复制链接]
发表于 2020-11-25 16:44:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


def ddd(n):
    odd=" "
    while n:                        
        zjl=str(ddd(n//2))
        odd=zjl+str(n%2)
        return odd

输出结果前有个“None”,为什么出现这个情况
最佳答案
2020-11-25 16:48:15
本帖最后由 jackz007 于 2020-11-25 16:55 编辑

        函数在无返回值时返回的就是 None,一个函数不可以有些时候有返回值,而另一些时候却没有,必须始终如一,有就始终有,没有就始终没有。
        你的递归函数写的很有问题,已经帮你改正
def ddd(n):
    if n:                        
        return ddd(n // 2) + str(n % 2)
    else:
        return ""
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-25 16:48:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-11-25 16:55 编辑

        函数在无返回值时返回的就是 None,一个函数不可以有些时候有返回值,而另一些时候却没有,必须始终如一,有就始终有,没有就始终没有。
        你的递归函数写的很有问题,已经帮你改正
def ddd(n):
    if n:                        
        return ddd(n // 2) + str(n % 2)
    else:
        return ""
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-25 17:20:04 | 显示全部楼层
jackz007 发表于 2020-11-25 16:48
函数在无返回值时返回的就是 None,一个函数不可以有些时候有返回值,而另一些时候却没有,必须始 ...

感谢
n=1时,n//2=0,这时ddd(n//2)无返回值,会返回None
是这样的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-25 17:53:55 | 显示全部楼层
扫雷僧 发表于 2020-11-25 17:20
感谢
n=1时,n//2=0,这时ddd(n//2)无返回值,会返回None
是这样的吧


      你的代码是 while 的死循环,如果你要写 while n 的话,那就必须在循环体内修改 n,并确保 n 一定有等于 0 的时候,否则,就一定是死循环。
      你的代码还有一个问题,就是把 return 语句写进了 while 循环内部,在 Python 中,代码块是严格按缩进进行分级的,所以,一定要把握好代码的缩进层次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 21:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表