相关疑难解决方法(0)

为什么我的递归python函数返回None?

我有这段自称的代码:

def get_input():
    my_var = input('Enter "a" or "b": ')

    if my_var != "a" and my_var != "b":
        print('You didn\'t type "a" or "b". Try again.')
        get_input()
    else:
        return my_var

print('got input:', get_input())
Run Code Online (Sandbox Code Playgroud)

现在,如果我输入"a"或"b",一切都很好.输出是:

Type "a" or "b": a
got input: a
Run Code Online (Sandbox Code Playgroud)

但是,如果我输入其他内容然后输入"a"或"b",我会得到:

Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
Run Code Online (Sandbox Code Playgroud)

我不知道为什么get_input()要回来None,因为它应该只返回my_var.print语句显示None正确的值,但函数由于某种原因不返回该值.

python recursion return function

46
推荐指数
2
解决办法
7万
查看次数

带有列表的Python递归返回None

def foo(a):
    a.append(1)
    if len(a) > 10:
        print a
        return a
    else:
        foo(a)
Run Code Online (Sandbox Code Playgroud)

为什么这个递归函数返回None(参见下面的记录)?我不太明白我做错了什么.

In [263]: x = []

In [264]: y = foo(x)
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

In [265]: print y
None

python recursion list

12
推荐指数
1
解决办法
3004
查看次数

函数未返回值(在大多数情况下)

我创建了这个函数来将最接近的素数返回到x(等于或大于):

def primo(x):
i=2
prime=True
if x>=0:
    while i<=x**(1/2) and prime==True:
        if x%i==0:
            prime=False
        else:
            i+=1
    if (prime==True or x==2 or x==3) and x>1:
        return x
    else:
        primo(x+1)

else:
    primo(x+1)
Run Code Online (Sandbox Code Playgroud)

但它只有在x已经素数时才会返回.

我试图print(x)在返回的同一行上放置,但如果x不是素数(例如12),它只打印最后的数字,它不会返回值.

我希望代码在每种情况下返回素数,尤其是如果x不是素数(它会绕过代码直到x为素数).

谢谢.

python return function

0
推荐指数
1
解决办法
31
查看次数

标签 统计

python ×3

function ×2

recursion ×2

return ×2

list ×1