接收返回无值

2024-04-26 04:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做书中的练习,我应该写一个程序,可以取一个大于2的正整数,并写出在得到一个小于2的值之前,必须反复将这个数除以2的次数。你知道吗

def inStr():
n = -1
while n<2:
    try:
        n = int(input('Enter a positive integer greater than 2: '))
    except:
        pass
print(positive(n)) # prints None


def positive(n, step=0):
    if n < 2:
        # print(step) #it prints correct answer
        return step   #but why it returns None?
    positive(n//2, step+1)


inStr()

我不明白为什么def positive(n, step=0)返回None?你知道吗


Tags: 程序noneinputdefstepitprints次数
2条回答

似乎您忘记在positive(n//2, step+1)之前添加return。所以函数positive有时不返回任何内容(即None)。你知道吗

试试这个:

def inStr():
    n = -1
    while n<2:
        try:
            n = int(input('Enter a positive integer greater than 2: '))
        except:
            pass
    print(positive(n)) # prints None


def positive(n, step=0):
    if n < 2:
        # print(step) #it prints correct answer
        return step   #but why it returns None?
    return positive(n//2, step+1)

inStr()

因为你不让它归还任何东西。你需要把return放进去:

def positive(n, step=0):
    if n < 2:
        # print(step) #it prints correct answer
        return step   #but why it returns None?
    return positive(n//2, step+1)

有时函数会调用自身,但不希望返回结果。您需要告诉Python,这次您想这样做。因为您没有告诉Python返回什么,所以它默认返回None。你知道吗

相关问题 更多 >