python01作業思路:用戶登錄程序
阿新 • • 發佈:2018-10-27
是否 active 登錄程序 pre utf-8 pen 文件信息 計數 pla
一、基礎需求:
讓用戶輸入用戶名密碼
認證成功後顯示歡迎信息
輸錯三次後退出程序
作為長期從事運維工作的我來說,學習全棧開發是一個巨大的挑戰。看到一些大神寫的代碼不僅寫的代碼長,功能又復雜。對於自己第一次獨立編寫程序沒有經驗。看到這樣題目先不要著急寫,功能先一步一步去實現。接下來實現第一次用戶登錄的功能:
1 # 定義用戶名和密碼 2 user = "gao" 3 pwd = "123" 4 # 用戶輸入 5 username = input("Username:") 6 password = input("Password:") 7 # 判斷用戶輸入是否正確 8View Codeif username == user and password == pwd: 9 print(‘welcome to %s‘ % username) 10 else: 11 print(‘Wrong username or password ‘)
接下來實現三次用戶登錄:
1 # 用戶定義 2 user = "gao" 3 pwd = "123" 4 count = 0 5 6 # 判斷 7 while count < 3: 8 username = input("Username:") 9 password = input("View CodePassword:") 10 if user == username and pwd == password: 11 print(‘Welcome to %s‘ % user) 12 break 13 else: 14 print(‘Wrong username or password‘) 15 count += 1
二、升級需求:
可以支持多個用戶登錄 (提示,通過字典存多個賬戶信息)
用戶3次認證失敗後,退出程序,再次啟動程序嘗試登錄時,還是鎖定狀態(提示:需把用戶鎖定的狀態存到文件裏)
分析:鎖定用戶,可以使用文件來實現,把用戶的信息存放到文件裏面。下次登錄的時候從文件裏讀取信息,如果登錄的用戶在文件信息中就不讓他登錄,這樣就能實現了鎖定用戶禁止登錄了。
flag = False #標誌位,如果連續3次都輸入的用戶一致,就為True,否則改為False
last_input = alex # 最近輸入賬戶
if flase == False :輸入不一致,不鎖定
1. 設置flag = True, last_input = None;
2. 每次loop, 拿本次輸入的用戶名跟last_input對比,如果相等,什麽也不幹。否則,改為flag = False
3. 3次loop完畢,判斷flag == True,代表3次都一樣要鎖定。
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2018/10/24 19:35 4 # @Author : 郜江濤 5 # @File : 用戶登錄.py 6 # @Function : ---------------- 7 8 9 # f = open("account.txt", ‘w‘) 10 # account = { 11 # ‘gao‘: [‘123‘, 0], 12 # ‘liu‘: [‘123‘, 0] # 1 lock, 0 active. 13 # } 14 # f.write(str(account)) 15 # f.close() 16 # 用戶數據一般是提前建立好的,如果沒有提前創建好。需要執行上一步。 17 f = open("account.txt", ‘r‘) 18 account = eval(f.read()) 19 f.close() 20 count = 0 # 計數器 21 last_input = None 22 flag = True 23 global user 24 while count < 3: 25 user = input("Username:").strip() # 去掉用戶字符串兩邊的空格 26 password = input("Password:").strip() 27 if last_input is None: # 第一次輸入 28 last_input = user 29 if last_input != user: # 上一次與此次輸入的用戶不相等 30 flag = False 31 if user in account: 32 if account[user][1] == 1: # 用戶狀態是否鎖定 33 exit("用戶已鎖定,請聯系管理員") 34 elif password == account[user][0]: # 用戶沒有鎖定 35 print(‘Welcome to %s‘ % user) 36 break 37 else: 38 print(‘Wrong username or password‘) 39 else: 40 print(‘用戶不存在‘) 41 count += 1 42 else: 43 print(‘輸入的次數太多了‘) 44 if flag is True: 45 account[user][1] = 1 # 3次一致,鎖定 46 f = open("account.txt", ‘w‘) 47 f.write(str(account))View Code
python01作業思路:用戶登錄程序