Python:如何将for循环和while循环组合在一起



我试图创建一个注册函数,该函数将提示用户较少的信息。下面的代码是函数的一部分。我使用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-循环。

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()

最新更新