Python 我的函数不断返回变量的旧版本,即使我只需要最新版本
我有一个函数,要求用户输入一些信息,并对输入进行一些检查。如果输入不符合多个条件,它将再次运行该函数,并再次要求用户输入一些内容 但是,当我返回该函数时,它既返回最新的输入,也返回不正确的输入。我做错了什么?一些print语句纯粹用于调试Python 我的函数不断返回变量的旧版本,即使我只需要最新版本,python,recursion,Python,Recursion,我有一个函数,要求用户输入一些信息,并对输入进行一些检查。如果输入不符合多个条件,它将再次运行该函数,并再次要求用户输入一些内容 但是,当我返回该函数时,它既返回最新的输入,也返回不正确的输入。我做错了什么?一些print语句纯粹用于调试 def get_email(email): print('starting email is',email) while email == 'empty': print('the email we use now is',ema
def get_email(email):
print('starting email is',email)
while email == 'empty':
print('the email we use now is',email)
email = input()
print("your input email is",email)
if '@' not in email:
get_email('empty')
elif email[-1] == '@':
get_email('empty')
elif email[0] == '@':
get_email('empty')
print("the email we return is",email)
return email
get_email('empty')
您在两个方面误用了递归:首先,您没有使用递归调用的返回值:
def get_email(email):
print('starting email is',email)
while email == 'empty':
print('the email we use now is',email)
email = input()
print("your input email is",email)
if '@' not in email:
email = get_email('empty')
elif email[-1] == '@':
email = get_email('empty')
elif email[0] == '@':
email = get_email('empty')
print("the email we return is",email)
return email
print(get_email('empty'))
要么使用输入获取电子邮件,要么将其用作函数的参数,而不是两者都使用
def get_email(email):
print('starting email is', email)
# @ isn't in 'empty', so no need to check for empty specifically
while '@' not in email or email[-1] == '@' or email[0] == '@':
print('the email we use now is ', email)
email = input()
print('your input email is ', email)
print('the email we return is ', email)
return email