python實(shí)現(xiàn)簡(jiǎn)單登陸系統(tǒng)
新手,雖然比較簡(jiǎn)單的東西,但是弄了我很久。
很多不完善的地方,比如鎖定用戶,同一用戶輸入錯(cuò)三次密碼就會(huì)鎖定,但是如果在第二第三次換了用戶再輸入原來(lái)的用戶,則計(jì)數(shù)會(huì)重新計(jì)算。
另外不存在的用戶輸入密碼錯(cuò)誤次數(shù)過(guò)多也會(huì)被鎖定,然后還能創(chuàng)建一個(gè)被鎖定的用戶,這個(gè)就不搞了,只要檢測(cè)一下是否存在用戶名就可以了。
暫時(shí)想到了解決辦法是在一個(gè)專用的文件里面增加一個(gè)專用的計(jì)數(shù)變量,舍棄blocklist這個(gè)文件,但是不懂怎么操作,先留著。
雖然python沒(méi)有像C一樣的main函數(shù)作為程序入口,姑且弄了一個(gè),方便看懂
'''登陸系統(tǒng)
要求:
1、可以選擇創(chuàng)建新的用戶
2、可以登陸原有的用戶
3、輸入密碼錯(cuò)誤三次后用戶則被鎖定'''
flag=True #循環(huán)控制符
def createuser():
f=open('userlist.txt','r')#打開已存在用戶的文件,假設(shè)文件已經(jīng)存在
flag=True
name=f.readlines()
f.close()
while flag:
username=input('username:')
flag2=False#用戶名已存在的標(biāo)記符
for line in name:
if(username==line.split('*')[0]):
flag2=True
print("用戶名已存在,請(qǐng)重新輸入")
if flag2!=True:
f=open('userlist.txt','a')#創(chuàng)建新的用戶
f.write('\n'+username)
f.write('*')
password=input('password:')
f.write(password)
f.close()
break
main()
def login():#登入函數(shù),輸入密碼錯(cuò)誤三次則鎖定用戶
count=0#密碼錯(cuò)誤計(jì)數(shù),3次則鎖定
f=open('userlist.txt','r')
info=f.readlines()
f.close()
user=None#重復(fù)用戶標(biāo)記符
while flag:
flag2=False
f2=open('blocklist.txt', 'r')
block_name=f2.readlines()
f2.close()
username=input('username:')
if user==None:#user沒(méi)有使用過(guò),則直接賦予輸入的用戶名
user=username
elif user!=username:#如果下一次輸入的用戶名不一樣,則記錄上一次的用戶名,同時(shí)計(jì)數(shù)清零
user=username
count=0;
for line in block_name:#檢查用戶名是否被鎖定,鎖定則返回主菜單
if username==line.strip('\n'):
print('該用戶已經(jīng)被鎖定,請(qǐng)聯(lián)系管理員')
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("用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入")
if count==3:#錯(cuò)誤三次,把用戶名添加到鎖定列表中
print('密碼錯(cuò)誤次數(shù)過(guò)多,該用戶已被鎖定')
f3=open('blocklist.txt','a')
f3.write('\n'+username)
f3.close()
count=0#加入黑名單后重置計(jì)數(shù)
main()#加入黑名單后退回主菜單
info='''
------請(qǐng)輸入相關(guān)數(shù)字-----
1.創(chuàng)建新的用戶
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("請(qǐng)輸入正確的數(shù)字.")
main()#程序入口
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python模擬新浪微博登陸功能(新浪微博爬蟲)
- python使用paramiko模塊實(shí)現(xiàn)ssh遠(yuǎn)程登陸上傳文件并執(zhí)行
- Python爬蟲利用cookie實(shí)現(xiàn)模擬登陸實(shí)例詳解
- python實(shí)現(xiàn)帶驗(yàn)證碼網(wǎng)站的自動(dòng)登陸實(shí)現(xiàn)代碼
- python實(shí)現(xiàn)多線程暴力破解登陸路由器功能代碼分享
- python3.3教程之模擬百度登陸代碼分享
- Python實(shí)現(xiàn)SSH遠(yuǎn)程登陸,并執(zhí)行命令的方法(分享)
- 基于python的Tkinter編寫登陸注冊(cè)界面
- 利用selenium 3.7和python3添加cookie模擬登陸的實(shí)現(xiàn)
- python實(shí)現(xiàn)的登陸Discuz!論壇通用代碼分享
相關(guān)文章
Python使用matplotlib的pie函數(shù)繪制餅狀圖功能示例
這篇文章主要介紹了Python使用matplotlib的pie函數(shù)繪制餅狀圖功能,結(jié)合實(shí)例形式分析了Python使用matplotlib的pie函數(shù)進(jìn)行餅狀圖繪制的具體操作技巧,注釋中對(duì)pie函數(shù)的用法進(jìn)行了詳細(xì)的說(shuō)明,便于理解,需要的朋友可以參考下2018-01-01
python實(shí)現(xiàn)手機(jī)銷售管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)手機(jī)銷售管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
對(duì)tf.reduce_sum tensorflow維度上的操作詳解
今天小編就為大家分享一篇對(duì)tf.reduce_sum tensorflow維度上的操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
對(duì)tensorflow中cifar-10文檔的Read操作詳解
今天小編就為大家分享一篇對(duì)tensorflow中cifar-10文檔的Read操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python中tkinter+MySQL實(shí)現(xiàn)增刪改查
這篇文章主要介紹了Python中tkinter+MySQL實(shí)現(xiàn)增刪改查,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

