2017-06-24 134 views
0

我試圖在這裏完成我的程序,而一切都到位,但爲了endapp()函數,我不知道如何讓它打印「再見」以在沒有menu()函數或任何其他函數(如login())再次循環的情況下標記程序的結尾。其他一切都是按照它的方式工作的,但我不知道如何用打印信息來結束程序。我只需要程序在打印「再見」之後停止輸出任何內容,它會到達死衚衕,而不是使用sys.exit()退出整個應用程序。注意:函數viewapp(),addapp(),summary()都將循環回到logged(),我還沒有爲此添加代碼,而endapp()應該沒有循環,並且應該以「再見」,沒有其他功能應循環回來要求輸入。幫助將不勝感激,與代碼示例。Python:用打印語句停止程序

vault = {} 


def menu(): 
    mode = input("""Hello {}, below are the modes that you can choose from:\n 
    ########################################################################## 
    a) Login with username and password 
    b) Register as a new user 
    To select a mode, enter the corresponding letter of the mode below 
    ##########################################################################\n 
    > """.format(name)).strip() 
    return mode 

def login(): 
    if len(vault) > 0 : #user has to append usernames and passwords before it asks for login details 
     print("Welcome to the login console") 
     while True: 
      username = input ("Enter Username: ") 
      if username == "": 
       print("User Name Not entered, try again!") 
       continue 
      password = input ("Enter Password: ") 
      if password == "": 
       print("Password Not entered, try again!") 
       continue 
      try: 
       if vault[username] == password: 
        print("Username matches!") 
        print("Password matches!") 
        logged() #jumps to logged function and tells the user they are logged on 
      except KeyError: #the except keyerror recognises the existence of the username and password in the list 
       print("The entered username or password is not found!") 

    else: 
     print("You have no usernames and passwords stored!") 

def register(): #example where the username is appended. Same applies for the password 
    print("Please create a username and password into the password vault.\n") 

    while True: 
     validname = True 
     while validname: 
      username = input("Please enter a username you would like to add to the password vault. NOTE: Your username must be at least 3 characters long: ").strip().lower() 
      if not username.isalnum(): 
       print("Your username cannot be null, contain spaces or contain symbols \n") 
      elif len(username) < 3: 
       print("Your username must be at least 3 characters long \n") 
      elif len(username) > 30: 
       print("Your username cannot be over 30 characters \n") 
      else: 
       validname = False 
     validpass = True 

     while validpass: 
      password = input("Please enter a password you would like to add to the password vault. NOTE: Your password must be at least 8 characters long: ").strip().lower() 
      if not password.isalnum(): 
       print("Your password cannot be null, contain spaces or contain symbols \n") 
      elif len(password) < 8: 
       print("Your password must be at least 8 characters long \n") 
      elif len(password) > 20: 
       print("Your password cannot be over 20 characters long \n") 
      else: 
       validpass = False #The validpass has to be True to stay in the function, otherwise if it is false, it will execute another action, in this case the password is appended. 
     vault[username] = password 
     validinput = True 
     while validinput: 
      exit = input("\nEnter 'end' to exit or any key to continue to add more username and passwords:\n> ") 
      if exit in ["end", "End", "END"]: 
       return 
      else: 
       validinput = False 
       register() 
     return register 

#LOGGED ONTO THE PASSWORD AND WEBSITE APP ADDING CONSOLE---------------------------------------------------------------------------------- 

def logged(): 
    print("You are logged in!\n") 
    keeplooping = True 
    while keeplooping: 
     modea = input("""Below are the options you can choose: 
     ##########################################################################\n 
     1) Viewapp 
     2) Addapp 
     3) Summary 
     4) Exit 
     ##########################################################################\n 
     > """).strip() 

     if modea == "1": 
      viewapp() 

     elif modea == "2": 
      addapp() 

     elif modea == "3": 
      summary() 

     elif modea == "4": 
      keeplooping = False 
      print("Goodbye") 
     else: 
      print("That was not a valid option, please try again: ") 
      validintro = False 
    return modea 


def viewapp(): 
    print("*Insert viewapp*") 

def addapp(): 
    print("*Insert addapp*")  

def summary(): 
    print("*Insert summary*") 

#Main routine 
print("Welcome to the password vault program") 
print("In this program you will be able to store your usernames and passwords in password vaults and view them later on.\n") 
validintro = False 
while not validintro: 
    name = input("Hello user, what is your name?: ") 
    if len(name) < 1: 
     print("Please enter a name: ") 
    elif len(name) > 30: 
     print("Please enter a name no more than 30 characters: ") 
    else: 
     validintro = True 
     print("Welcome to the password vault program {}.".format(name)) 

#The main program to run in a while loop for the program to keep on going back to the menu part of the program for more input till the user wants the program to stop 
validintro = False 
while not validintro: 
     chosen_option = menu() #a custom variable is created that puts the menu function into the while loop 
     validintro = False 

     if chosen_option in ["a", "A"]: 
      login() 

     elif chosen_option in ["b", "B"]: 
      register() 

     else: 
      print("""That was not a valid option, please try again:\n """) 
      validintro = False 

回答

1

我可以建議ü做的是: 月1日 - 在記錄()函數:如果用戶選擇

elif modea == '4' keeplooping = False print('Goodbye') return keeplooping 2日 - 在login()函數:代替,而真正。你可以做的是,

def login(): 
if len(vault) > 0 : #user has to append usernames and passwords before it asks for login details 
    print("Welcome to the login console") 
    state = True 
    while state: 
     username = input ("Enter Username: ") 
     if username == "": 
      print("User Name Not entered, try again!") 
      continue 
     password = input ("Enter Password: ") 
     if password == "": 
      print("Password Not entered, try again!") 
      continue 
     try: 
      if vault[username] == password: 
       print("Username matches!") 
       print("Password matches!") 
       state = logged() #jumps to logged function and tells the user they are logged on 
       return state #return the state of user option (True/False) 
     except KeyError: #the except keyerror recognises the existence of the username and password in the list 
      print("The entered username or password is not found!") 

else: 
    print("You have no usernames and passwords stored!") 

3日 - 在主程序validintro應相應地更改

validintro = False 
while not validintro: 
    chosen_option = menu() #a custom variable is created that puts the menu function into the while loop 
    validintro = False 

    if chosen_option in ["a", "A"]: 
     validintro = not login() 

    elif chosen_option in ["b", "B"]: 
     register() 

    else: 
     print("""That was not a valid option, please try again:\n """) 
     validintro = False 

這是相當尖端的技巧,但它必須努力