为了账号安全,请及时绑定邮箱和手机立即绑定

为什么输出中没有 None ?

为什么输出中没有 None ?

POPMUISE 2021-07-20 21:43:36
帮助,我正在尝试创建一个函数,该函数使用模数打印可被整数整除的数字,在本例中为 17 的倍数:def nextDivisible(n):    if n % 17 == 0:        print n    else:        nextDivisible(n+1)但输出是例如:n: 93 next divisible:  102Nonen: 59 next divisible:  68None为什么没有?!以及如何删除它,谢谢!
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

我认为您的问题是您正在打印结果而不是从函数中返回它。


如果您将代码更改为这样,它应该修复它:


def nextDivisible(n):

    if n % 17 == 0:

        return n

    return nextDivisible(n + 1)

这与递归的工作原理是,您的函数nextDivisible将被重复调用,直到它达到n可被 整除的基本情况17。当这种情况发生时,它会n一直返回递归堆栈到最初第一次调用函数的位置。


您也不需要 else 语句,因为return语句脱离了函数代码。但有时else's 有利于可读性。


查看完整回答
反对 回复 2021-07-28
?
jeck猫

TA贡献1909条经验 获得超7个赞

你不需要:


print(nextDivisible(n))

我认为你被None打印出来是因为你的函数没有返回任何东西。打印函数的返回也是多余的,因为您在循环内打印数字。


所有你需要的是:


nextDivisible(n)

它将打印可整除的数字。


如果您nextDivisible()在其他函数中使用,根据您使用它的方式的性质,可能需要 return 语句可能毫无意义。


出于所有意图和目的,这应该可以正常工作。


和python 3.x:


x = [x for x in range(1000)]

def nextDivisible(x, mod=17):

    c = 0

    for n in x:

        if n % mod == 0:

            print(n)

            c += 1

        else: 

            #nextDivisible(n+1)

            pass

    print('{} numbers divisible by {} in {}'.format(c, mod, len(x)))

nextDivisible(x)

预期输出:


59 total numbers divisible by 17 in 1000


查看完整回答
反对 回复 2021-07-28
  • 2 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信