我有这段自称的代码:
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
正确的值,但函数由于某种原因不返回该值.
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
我创建了这个函数来将最接近的素数返回到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
为素数).
谢谢.