首页 > 解决方案 > 为什么输出中没有None?

问题描述

帮助,我正在尝试创建一个函数,该函数使用模数来打印可被整数整除的数字,在本例中为 17 的倍数:

def nextDivisible(n):
    if n % 17 == 0:
        print n
    else:
        nextDivisible(n+1)

但输出例如:

n: 93 next divisible:  102
None
n: 59 next divisible:  68
None

为什么没有一个?!以及如何删除它,谢谢!

标签: pythonrecursionoutput

解决方案


你不需要:

print(nextDivisible(n))

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

所有你需要的是:

nextDivisible(n)

它将打印可整除的数字。

如果您nextDivisible()在其他函数中使用,根据您使用它的性质,可能需要返回语句可能毫无价值。

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

和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

推荐阅读