我试图创建一个注册功能,它将提示用户少信息。下面的代码是函数的一部分。我正在使用 while 循环来防止任何无效输入或特定输入来执行其他任务。输入验证完成后,我使用 for 循环来检查注册的电子邮件。但是,当注册电子邮件已被注册时,我正在使用递归函数,有没有办法可以避免递归函数并将 for 循环放在 while 循环中?
user = [['a','a.gmail.com'],['b','b.gmail.com'],['c','c.gmail.com']]
def signup():
print("\ Enter '0' to return mainpage")
emailAddress = input("Please enter your email address : ")
while True:
if emailAddress == '0':
print('mainpage returned')
signup()
elif emailAddress == '':
emailAddress = input("Please enter your email address : ")
else:
break
# check if email address is registered or not
for item in user:
if emailAddress == item[1]:
print("This Email address has been registered")
signup()
else:
print("email registering:",emailAddress)
signup()
不要使用递归。像这样的事情会做。您的主要问题是for
-loop。
user = [['a','a.gmail.com'],['b','b.gmail.com'],['c','c.gmail.com']]
def signup():
emailAddress = None
#---
while True:
print("\ Enter '0' to return mainpage")
desiredEmailAddress = input("Please enter your email address : ")
if desiredEmailAddress == '0':
print('Ok, will return to mainpage')
break # <---- BREAK OUT OF THE WHILE LOOP
elif desiredEmailAddress == '':
pass # let the while-loop iterate again
else:
# check if email address is registered or not
emailIsAlreadyRegistered = False
for item in user:
if desiredEmailAddress == item[1]:
emailIsAlreadyRegistered = True
break # we can break out of the for loop
if emailIsAlreadyRegistered:
print("This Email address has been registered")
pass # let the while-loop iterate again
else:
emailAddress = desiredEmailAddress
break # <---- BREAK OUT OF THE WHILE LOOP
#---
if emailAddress is None:
# User wanted to return to mainpage
return None
else:
print("email registering:", emailAddress)
return emailAddress
signup()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句