def getUsername():
username = raw_input("Enter Your Username: ")
if not username[0].isalpha():
print "wrong"
getUsername()
else:
return username
我正在尝试检查字符串username的第一个字符是否是按字母顺序排列的字符,如果不是再次向用户询问他的用户名,并且是否将其设置为用户名。
但当我运行更多的功能时,我回到了值从用户界面,我的意思是,当我运行该功能并给它一个错误的值,一旦它工作正常,并再次问我一个值,但当我打印出值时,我会回到无。
你可以告诉我原因吗。当然如何修复它 谢谢你的进步:
答案 0 :(得分:2)
您在return
的递归通话中错过了getUsername()
:
def getUsername():
username = raw_input("Enter Your Username: ")
if not username[0].isalpha():
print "wrong"
return getUsername()
else:
return username
如果没有它,你的函数递归调用getUsername()
,退出if / else块并从函数中删除,隐式返回None
。
无
此类型具有单个值。有一个具有此值的对象。可以通过内置名称None访问此对象。它用于表示在许多情况下缺少值,例如,从未明确返回任何内容的函数返回。其真值为false。
return语句返回一个函数的值。没有表达式参数的
return
返回None。从函数末尾开始也会返回None。
答案 1 :(得分:0)
为什么甚至使用递归函数只需使用while循环。
def getUname():
while True:
username = raw_input("name:");
if not username[0].isalpha():
print "wrong";
else:
return username;
它应该返回相同的。