要求:
1.輸入用戶名密碼
2.認證成功後顯示歡迎信息
3.輸錯三次後鎖定
實現的代碼如下:
# -*- coding: utf-8 -*-
"""
@Author:yhf1995
@time:2020/1/28 9:41
"""
from openpyxl import load_workbook
# 從openpyxl 導入 load_workbook
user_excel = load_workbook(r"user_password.xlsx")
# 導入整個excel工作簿,excel表格分爲工作簿、sheet表單和單元格
user_list = user_excel.get_sheet_by_name('Sheet1')
# 導入user_password.xlsx表格中的第一個表單sheet1的數據,存放到user_excel
# 該表格有三列,第一列是用戶名,第二列是密碼,第三列是登錄錯誤次數,其初始值爲0
user_number = user_list.max_row
# 調用user_list.max_row方法獲得表的最大行數,max_column爲獲取最大列數
#print(user_list.cell(row=6,column=3).value)
# 測試,打印第6行第3列的值
#print(user_list.cell(row=2,column=1).value)
#同上
count = 0
# 作爲用戶登錄成功的標誌位,登錄成功後count值變爲1,結束登錄循環
while count != 1:
username = input("username=")
password = input("password=")
# 輸入用戶名和密碼
for i in range(user_number):
if username == user_list.cell(row=i+2,column=1).value and user_list.cell(row=i+2,column=3).value == 3:
print("the user %s is locked" % (username))
break
# 本段是判斷該用戶是否登錄錯誤超過3次,被lock了
elif username == user_list.cell(row=i+2,column=1).value and password == user_list.cell(row=i+2,column=2).value:
print("Welcome user %s login..." %(username))
count = 1
break
# 判斷登錄成功,打印出“Welcome user XXX login...”
else:
print("Invalib name or password")
for j in range(user_number):
if username == user_list.cell(row=j + 2, column=1).value:
user_list.cell(row=j + 2,column=3).value += 1
user_excel.save('user_password.xlsx')
break
# 登錄錯誤,登錄錯誤的用戶次數加1
說明: Python的版本是3.6,運行前需在該.py文件夾裏新建一個名爲user_password.xlsx的表格,該表格有三列,第一列是用戶名,第二列是該行用戶的登陸密碼,第三列是登錄錯誤次數的記錄,第三列的初始值爲0。
在用戶名或密碼錯誤的情況下,和該用戶被鎖定的情況下,可以無限次數進行用戶登錄,在登錄成功的情況下,只打印歡迎語句,結束該程序的運行。
注題目來自:老男孩教育Python課程