python登录系统输错提示还有几次机会,Python 3 簡易用戶登錄系統,輸錯三次密碼鎖定賬號...

使用Python 3 實現簡易用戶登錄系統,輸錯三次密碼鎖定賬號。

文件結構:

lock.txt

保存被鎖定的用戶,一行一個

users.txt

保存用戶賬號密碼,按照以下格式

{"jack":"1234","tom":"123","alex":"12345"}

login.py

import getpass    # 使用getpass模塊,輸入密碼的時候是密文

import json

username = input("input username:")

with open("users.txt",'r') as f:  # 用戶表,保存用戶名和密碼

contents = f.read()

users = json.loads(contents) # convert to dict type

with open("lock.txt",'r') as lock_file:    # lock.txt保存被鎖定用戶,這里讀取出來用於判斷用戶輸入的賬號是否已經被鎖定

lock_users = lock_file.readlines()

lock_user_list=list()

for lock_user in lock_users:

lock_user_list.append(lock_user.strip()) # 轉換成列表,並去除每個元素后面的換行符

if username in lock_user_list:

print("your account {username} has been locked, please contact the administrator.".format(username=username)) # 字符串格式化,在lock.txt直接退出

exit()

count = 0      # 計數器,用於統計用戶輸入密碼次數

count_left = 3    # 還剩幾次

if username in users:    # 外層循環,判斷用戶是否存在,不存在直接退出,存在則進入密碼輸入環節

while count < 3:     # 計數3次

#password = input("input your password:")

password = getpass.getpass("input your password:") # getpass模塊

if password == users[username]:

print("welcome aboard, {username}!".format(username = username))

break

else:

count_left -= 1

while count_left:

print("invalid password, try again and {count_left} times left!".format(count_left=count_left))

break

count += 1

else:

print("invalid password, try maximum times, your account has been locked.") # 嘗試超過最大次數限制,鎖定賬戶,將username存進lock.txt,一行一個

block = open("lock.txt","a")

block.write(username+'\r')

block.close()

else:

print("no such username: {username}, exit.".format(username=username))

exit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值