python登录系统的实现方法_python实现简单登陆系统
新手,雖然比較簡單的東西,但是弄了我很久。
很多不完善的地方,比如鎖定用戶,同一用戶輸入錯三次密碼就會鎖定,但是如果在第二第三次換了用戶再輸入原來的用戶,則計數會重新計算。
另外不存在的用戶輸入密碼錯誤次數過多也會被鎖定,然后還能創建一個被鎖定的用戶,這個就不搞了,只要檢測一下是否存在用戶名就可以了。
暫時想到了解決辦法是在一個專用的文件里面增加一個專用的計數變量,舍棄blocklist這個文件,但是不懂怎么操作,先留著。
雖然python沒有像C一樣的main函數作為程序入口,姑且弄了一個,方便看懂
'''登陸系統
要求:
1、可以選擇創建新的用戶
2、可以登陸原有的用戶
3、輸入密碼錯誤三次后用戶則被鎖定'''
flag=True #循環控制符
def createuser():
f=open('userlist.txt','r')#打開已存在用戶的文件,假設文件已經存在
flag=True
name=f.readlines()
f.close()
while flag:
username=input('username:')
flag2=False#用戶名已存在的標記符
for line in name:
if(username==line.split('*')[0]):
flag2=True
print("用戶名已存在,請重新輸入")
if flag2!=True:
f=open('userlist.txt','a')#創建新的用戶
f.write('\n'+username)
f.write('*')
password=input('password:')
f.write(password)
f.close()
break
main()
def login():#登入函數,輸入密碼錯誤三次則鎖定用戶
count=0#密碼錯誤計數,3次則鎖定
f=open('userlist.txt','r')
info=f.readlines()
f.close()
user=None#重復用戶標記符
while flag:
flag2=False
f2=open('blocklist.txt', 'r')
block_name=f2.readlines()
f2.close()
username=input('username:')
if user==None:#user沒有使用過,則直接賦予輸入的用戶名
user=username
elif user!=username:#如果下一次輸入的用戶名不一樣,則記錄上一次的用戶名,同時計數清零
user=username
count=0;
for line in block_name:#檢查用戶名是否被鎖定,鎖定則返回主菜單
if username==line.strip('\n'):
print('該用戶已經被鎖定,請聯系管理員')
main()
password=input('password:')
for line in info:
if(username==line.split('*')[0]and password==line.split('*')[1].strip('\n')):
print('登入成功!')
flag2=True
if flag2==False:
count+=1
print("用戶名或密碼錯誤,請重新輸入")
if count==3:#錯誤三次,把用戶名添加到鎖定列表中
print('密碼錯誤次數過多,該用戶已被鎖定')
f3=open('blocklist.txt','a')
f3.write('\n'+username)
f3.close()
count=0#加入黑名單后重置計數
main()#加入黑名單后退回主菜單
info='''
------請輸入相關數字-----
1.創建新的用戶
2.登陸已有用戶
3.退出程序
'''
def main():
print(info)
while flag:
i=input()
if i=='1':
createuser()
break
elif i=='2':
login()
break
elif i=='3':
exit()
else:
print("請輸入正確的數字.")
main()#程序入口
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
總結
以上是生活随笔為你收集整理的python登录系统的实现方法_python实现简单登陆系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方程组的直接解法和迭代法 python_
- 下一篇: centos7 python3.7 ss