[英]Python : How to combine for loop and while loop together?
我试图创建一个注册 function ,它将提示用户少数信息。 下面的代码是 function 的部分代码。 我正在使用 while 循环来防止任何无效输入或特定输入来执行其他任务。 输入验证完成后,我使用 for 循环检查已注册的 email。 但是,当注册 email 已注册时,我正在使用递归 function ,有没有办法可以避免递归 ZC1C425268E68385D1AB5074C17A94F14 并将 for 循环放入循环中?
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.