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()               
               
丹尼尔·F

不要使用递归。像这样的事情会做。您的主要问题是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将Axios调用循环与等待功能结合在一起?

如何将原位转换和复制转换结合在一起?

如何将PrettyPrintingJsonGeneratorDecorator和MaskingJsonGeneratorDecorator结合在一起?

如何将RequireJS路径和require-css结合在一起?

如何将JavaScript代码和html代码结合在一起?

如何将python asyncio与线程结合在一起?

如何将操作员输入和延迟操作的结果结合在一起

如何将ggplot(具有lon,lat和fill值)与ggmap结合在一起?

项目反应堆-如何将Mono和Flux结合在一起?

如何将react-hooks,redux和打字稿结合在一起?

如何将固定的月份和日期与sql year函数结合在一起?

如何将typedef的结构与实例创建结合在一起?

如何将“最终形式计算”与“最终形式数组”结合在一起

如何将5个以上的PDF与imagemagick转换结合在一起?

如何将聚合查询与不同联接结合在一起?

如何将数据框总结为与ID结合在一起的列表?

如何将Bash的流程替换与HERE文档结合在一起?

如何将EventEmitter与动态组件结合在一起?

如何将back_inserter与转换结合在一起,C ++

如何将时基轮询与等待的任务结合在一起

如何将分组的输入与对齐的表单结合在一起?

如何将文字信息与系统信息结合在一起?

如何将输入与字符串结合在一起?

如何将.toggleClass()与.appendTo()结合在一起?

如何将这两个查询结合在一起?(MySQL)

如何将列与R中的条件结合在一起?

如何将DataTables与其他匹配器结合在一起?

R:如何将几个数据集结合在一起

如何将NavigationDrawerPageSlidingTabStrip与StickyListHeaders库结合在一起?