考慮到看這個代碼的人羣多是一些入門的新手同窗作一些練習,因此決定多加一些註釋python
以前的代碼有bug,sry, 就是無論選擇哪一個都是:showmenu()—>newuser()—>olduser() 改了一點,邏輯順了數據庫
#coding:utf-8 ''' @version:Python 2.7.14 這個程序管理用於登陸系統的用戶信息:登陸名字和密碼。登陸用戶賬號創建後,已存在用戶 能夠用登陸名字和密碼重返系統。新用戶不能用別人的登陸名創建用戶賬號。 ''' # 這裏建立的db字典就是爲了充當簡單的數據庫 db = {} # 新用戶用於建立用戶名及密碼並保存到db def newuser(): prompt = 'login desired: ' while True: # 輸入用戶名 name = raw_input(prompt) # 校驗db中是否存在你輸入的用戶名 if db.has_key(name): prompt = 'name taken, try another: ' continue else: break # 輸入密碼 pwd = raw_input('passwd: ') # 用戶名及密碼保存到db中 db[name] = pwd # 老用戶登陸 def olduser(): name = raw_input('login: ') pwd = raw_input('passwd: ') # 取出你輸入的用戶名在db中的密碼 passwd = db.get(name) # 對你輸入的密碼和db中對應存在的密碼進行對比 if passwd == pwd: print 'welcome back', name else: print 'login incorrect, pls go login desired\n' newuser() def showmenu(): # 運行時出現,選擇‘n’‘e’‘q’其中一個選擇,不區分大小寫 prompt = """ (N)ew User Login (E)xisting User Login (Q)uit Example 7.1 Dictionary Example (userpw.py) (continued) Enter choice: """ # ‘done’是個關鍵字,當爲真,循環中止 done = False while not done: # ‘chosen’同‘done’ chosen = False while not chosen: # 加try語句,是爲了不其餘錯誤的出現 try: # 這裏就簡單了只判斷了輸入字母的第一個是否知足條件,形成了只要是以這三個字母開頭就能夠 choice = raw_input(prompt).strip()[0].upper() except (EOFError, KeyboardInterrupt): choice = 'Q' print '\nYou picked: [%s]\n' % choice if choice not in 'NEQ': print 'invalid option, try again' elif choice == 'N': newuser() olduser() chosen = True # 這裏會由於,程序剛開始db無內容,而進入else elif choice == 'E': olduser() elif choice == 'Q': print 'bye' chosen = True if chosen: done = True if __name__ == '__main__': showmenu()