1. 程式人生 > >python01作業思路:用戶登錄程序

python01作業思路:用戶登錄程序

是否 active 登錄程序 pre utf-8 pen 文件信息 計數 pla

一、基礎需求:

  讓用戶輸入用戶名密碼
  認證成功後顯示歡迎信息
  輸錯三次後退出程序

  作為長期從事運維工作的我來說,學習全棧開發是一個巨大的挑戰。看到一些大神寫的代碼不僅寫的代碼長,功能又復雜。對於自己第一次獨立編寫程序沒有經驗。看到這樣題目先不要著急寫,功能先一步一步去實現。接下來實現第一次用戶登錄的功能:

技術分享圖片
 1 # 定義用戶名和密碼
 2 user = "gao"
 3 pwd = "123"
 4 # 用戶輸入
 5 username = input("Username:")
 6 password = input("Password:")
 7 # 判斷用戶輸入是否正確
 8
if username == user and password == pwd: 9 print(welcome to %s % username) 10 else: 11 print(Wrong username or password )
View Code

  接下來實現三次用戶登錄:

技術分享圖片
 1 # 用戶定義
 2 user = "gao"
 3 pwd = "123"
 4 count = 0
 5 
 6 # 判斷
 7 while count < 3:
 8     username = input("Username:")
 9     password = input("
Password:") 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
View Code

二、升級需求:

  可以支持多個用戶登錄 (提示,通過字典存多個賬戶信息)
  用戶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作業思路:用戶登錄程序