Python 如何避免使用太多,如果其他?

Python 如何避免使用太多,如果其他?,python,if-statement,Python,If Statement,这就是我试图用代码实现的概念。我希望用户能够在按下“0”时离开登录部分,下面的代码可以工作,但我是否可以缩短这些代码,因为我觉得如果使用其他代码,则会有太多的代码 def signup(): print("Press '0' to return mainpage") firstname = input("Please enter your first name : ") if firstname == "0"

这就是我试图用代码实现的概念。我希望用户能够在按下“0”时离开登录部分,下面的代码可以工作,但我是否可以缩短这些代码,因为我觉得如果使用其他代码,则会有太多的代码

def signup():
     print("Press '0' to return mainpage")
     firstname = input("Please enter your first name : ")
     if firstname == "0":
          print("Mainpage returned")
          mainpage()
     else:
          lastname  = input("Please enter your last name  : ")
          if lastname == "0":
               print("Mainpage returned")
               mainpage()
          else:
               username = firstname+lastname
               print("Welcome", username)

def mainpage():
     option = input("Press '1' to signup: ")
     if option == '1':
          print("Sign up page accessed")
          signup()
mainpage()

您可以使用早期返回来删除一些嵌套

def signup():
     print("Press '0' to return mainpage")
     firstname = input("Please enter your first name : ")
     if firstname == "0":
          print("Mainpage returned")
          mainpage()
          return
 
     lastname  = input("Please enter your last name  : ")
     if lastname == "0":
         print("Mainpage returned")
         mainpage()
         return

     username = firstname+lastname
     print("Welcome", username)

您可以使用早期返回来删除一些嵌套

def signup():
     print("Press '0' to return mainpage")
     firstname = input("Please enter your first name : ")
     if firstname == "0":
          print("Mainpage returned")
          mainpage()
          return
 
     lastname  = input("Please enter your last name  : ")
     if lastname == "0":
         print("Mainpage returned")
         mainpage()
         return

     username = firstname+lastname
     print("Welcome", username)

首先,编写符合真实逻辑的代码。这种潜在的无限递归是不合适的。这是一个嵌套的过程,而不是固有的递归过程

当用户输入0时,您说要离开注册区域。如果是这样的话,那就离开吧——不要再进入另一个兔子洞:删除那些对主页的调用,然后正常返回。毕竟,主页是你的来源

至于使用较少的if语句,如果不对程序中的交互进行太多的泛化,就不能减少这么多。您要在两个位置检查0,在另一个位置检查1。这需要3个if检查或一个足够通用的流程,以便在给定合法移动列表的情况下进行所有转换。如果您需要,请查看如何实现有限状态机

然而,有一个简单的经济问题:您的用户界面过于冗长。只需立即询问全名:

def signup():
     print("Press '0' to return mainpage")
     username = input("Please enter your name : ")
     if name == "0":
         print("Mainpage returned")
     else:
         username.replace(' ', '')    # remove space(s)
         print("Welcome", username)

无论哪种方式,该例程都会自然返回主页。

首先,编写符合您真实逻辑的代码。这种潜在的无限递归是不合适的。这是一个嵌套的过程,而不是固有的递归过程

当用户输入0时,您说要离开注册区域。如果是这样的话,那就离开吧——不要再进入另一个兔子洞:删除那些对主页的调用,然后正常返回。毕竟,主页是你的来源

至于使用较少的if语句,如果不对程序中的交互进行太多的泛化,就不能减少这么多。您要在两个位置检查0,在另一个位置检查1。这需要3个if检查或一个足够通用的流程,以便在给定合法移动列表的情况下进行所有转换。如果您需要,请查看如何实现有限状态机

然而,有一个简单的经济问题:您的用户界面过于冗长。只需立即询问全名:

def signup():
     print("Press '0' to return mainpage")
     username = input("Please enter your name : ")
     if name == "0":
         print("Mainpage returned")
     else:
         username.replace(' ', '')    # remove space(s)
         print("Welcome", username)
无论哪种方式,该例程都会自然返回到主页面