1. 程式人生 > 實用技巧 >實現三次登入

實現三次登入

三次登入

寫一個函式完成三次登入,三次不成功則登入失敗,失敗返回False,登陸成功返回True

使用者的使用者名稱和密碼儲存在檔案中,該檔案包含多個使用者名稱以及對應的密碼,

形式為:name|password,每個人佔用檔案的一行

實現程式碼:

def login():
    flag = 0  # 用於三次迴圈
    while 1:
        flag += 1  # 進行一次,flag加一次
        if flag > 3:
            print("\n登入已失敗三次,結束!")
            return False

        print(f"\n正在進行第 {flag} 次登入:")
        user_name = input("請輸入使用者: ").strip()  # 避免使用者多輸入空格
        user_pwd = input("請輸入密碼: ").strip()

        userDict = {}  # 使用者字典
        f = open('users.txt', mode='r')
        for user in f.readlines():
            user = user.strip()  # 去掉每行後面的換行符
            # user.split('|')返回的是一個列表['admin', 'admin_pwd']
            user = user.split('|')
            userDict[user[0]] = user[1]
        f.close()
        # userDict:{'admin': 'admin_pwd', 'Tom': 'Tom_pwd', 'Jack': 'Jack_pwd'}
        # userDict.get(user_name) 不存在返回None,存在則返回的是鍵對應的值(密碼)
        if user_pwd != userDict.get(user_name):
            print("使用者名稱或密碼輸入錯誤!")
            continue  # 進行下一次登入操作
        else:
            # 成功登入
            return True
login()  # 呼叫函式

測試結果1:
正在進行第 1 次登入:
請輸入使用者: admin
請輸入密碼: admin_pwd
True

測試結果2:
正在進行第 1 次登入:
請輸入使用者: ad
請輸入密碼: ad
使用者名稱或密碼輸入錯誤!

正在進行第 2 次登入:
請輸入使用者: a
請輸入密碼: ss
使用者名稱或密碼輸入錯誤!

正在進行第 3 次登入:
請輸入使用者: admin
請輸入密碼: 123
使用者名稱或密碼輸入錯誤!

登入已失敗三次,結束!
False