繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM