Python實(shí)現(xiàn)用戶(hù)名和密碼登錄
本文實(shí)例為大家分享了Python實(shí)現(xiàn)用戶(hù)名和密碼登錄的具體代碼,供大家參考,具體內(nèi)容如下
功能
登錄及注冊(cè),密碼錯(cuò)誤多次后驗(yàn)證碼確認(rèn)
說(shuō)明
初次運(yùn)行,程序?qū)?huì)自動(dòng)生成一個(gè)名為user的文本文檔,是包含用戶(hù)名及密碼的字典
輸入用戶(hù)名,如果用戶(hù)名不存在,程序會(huì)自動(dòng)以輸入的用戶(hù)名進(jìn)行注冊(cè)
輸入密碼,當(dāng)輸錯(cuò)4次時(shí),程序會(huì)生成一個(gè)4位驗(yàn)證碼,并使用vbs方式彈出,如果驗(yàn)證碼輸錯(cuò),程序退出,否則重新執(zhí)行主循環(huán)
代碼
from os import system
from sys import exit
from random import randint
from time import sleep
user={'root':'88888888'}
error_time=4
mode=False
chack=[None,None]
user_name=''
user_passwd=[None,None]
#讀取用戶(hù)
try:
?? ?f=open('user.txt','r')
?? ?user=eval(f.read())
?? ?f.close()
except:
?? ?f=open('user.txt','w')
?? ?f.write("{'root':'88888888'}")
?? ?f.close
?? ?user={'root':'88888888'}
#main
while True:
?? ?user_name=str(input('請(qǐng)輸入用戶(hù)名>'))
?? ?#判斷用戶(hù)是否存在
?? ?if user_name not in user:#用戶(hù)不存在 -> 注冊(cè) -> 設(shè)置用戶(hù)名
?? ??? ?print('用戶(hù)不存在,將執(zhí)行注冊(cè)操作。')
?? ??? ?if ' ' in user_name:
?? ??? ??? ?print('\aErr: 用戶(hù)名中不能有空格')
?? ??? ?elif user_name=='':
?? ??? ??? ?print('\aErr: 用戶(hù)名不能為空')
?? ??? ?else:
?? ??? ??? ?#設(shè)置密碼
?? ??? ??? ?while True:
?? ??? ??? ??? ?user_passwd[0]=str(input('請(qǐng)?jiān)O(shè)置密碼>'))
?? ??? ??? ??? ?if ' ' in str(user_passwd[0]):
?? ??? ??? ??? ??? ?print('\aErr: 密碼中不能含有空格。')
?? ??? ??? ??? ?elif user_passwd[0]=='':
?? ??? ??? ??? ??? ?print('\aErr: 密碼不能為空。')
?? ??? ??? ??? ?elif len(user_passwd[0])<6:
?? ??? ??? ??? ??? ?print('\aErr: 密碼長(zhǎng)度太短,至少6位。')
?? ??? ??? ??? ?else:
?? ??? ??? ??? ??? ?#再次輸入密碼
?? ??? ??? ??? ??? ?user_passwd[1]=str(input('請(qǐng)?jiān)俅屋斎朊艽a>'))
?? ??? ??? ??? ??? ?if user_passwd[0]!=user_passwd[1]:
?? ??? ??? ??? ??? ??? ?print('\aErr: 兩次輸入的密碼不一致。')
?? ??? ??? ??? ??? ?else:
?? ??? ??? ??? ??? ??? ?print('注冊(cè)成功!\n\n請(qǐng)重新登錄:')
?? ??? ??? ??? ??? ??? ?user[user_name]=user_passwd[0]
?? ??? ??? ??? ??? ??? ?#寫(xiě)入文件
?? ??? ??? ??? ??? ??? ?f=open('user.txt','w')
?? ??? ??? ??? ??? ??? ?f.write(str(user))
?? ??? ??? ??? ??? ??? ?f.close()
?? ??? ??? ??? ??? ??? ?break
?? ?else: ? ?#用戶(hù)存在 -> 登錄 -> 確認(rèn)密碼是否正確
?? ??? ?#錯(cuò)4次后驗(yàn)證碼確認(rèn)
?? ??? ?while error_time!=0:
?? ??? ??? ?user_passwd[0]=input('請(qǐng)輸入密碼 4/'+str(error_time)+'>')
?? ??? ??? ?if user_passwd[0]!=user[user_name]:
?? ??? ??? ??? ?print('\aErr: 密碼錯(cuò)誤')
?? ??? ??? ??? ?error_time=error_time-1
?? ??? ??? ?else:
?? ??? ??? ??? ?mode=True
?? ??? ??? ??? ?break
?? ??? ?else:
?? ??? ??? ?#驗(yàn)證碼確認(rèn)
?? ??? ??? ?print('\n\a\a因錯(cuò)誤次數(shù)過(guò)多,進(jìn)行驗(yàn)證碼確認(rèn)')
?? ??? ??? ?chack[0]=str(randint(999,10000)) ? ?#生成驗(yàn)證碼
?? ??? ??? ?#寫(xiě)入到VBS文件,并彈出
?? ??? ??? ?f=open('chack.vbs','w') ? ?
?? ??? ??? ?f.write('msgbox("驗(yàn)證碼>'+str(chack[0])+'<")')
?? ??? ??? ?f.close()
?? ??? ??? ?system('start chack.vbs')
?? ??? ??? ?#驗(yàn)證驗(yàn)證碼
?? ??? ??? ?chack[1]=str(input('請(qǐng)輸入驗(yàn)證碼>'))
?? ??? ??? ?if chack[0]!=chack[1]:
?? ??? ??? ??? ?print('\aErr: 驗(yàn)證碼錯(cuò)誤!')
?? ??? ??? ??? ?#倒計(jì)時(shí)退出
?? ??? ??? ??? ?for i in range(3,-1,-1):
?? ??? ??? ??? ??? ?print('\b'*23+'程序?qū)⒃?'+str(i+1)+' 秒后退出...',end='',flush=True)
?? ??? ??? ??? ??? ?sleep(1)
?? ??? ??? ??? ?exit(0)
?? ??? ??? ?else:
?? ??? ??? ??? ?error_time=4
?? ?if mode==True:
?? ??? ?break
input('登錄成功...')以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python連接clickhouse的端口問(wèn)題及解決
這篇文章主要介紹了python連接clickhouse的端口問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
詳解python中的數(shù)據(jù)類(lèi)型和控制流
這篇文章主要介紹了詳解python中的數(shù)據(jù)類(lèi)型和控制流,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python詳解如何動(dòng)態(tài)給對(duì)象增加屬性和方法
python是動(dòng)態(tài)語(yǔ)?,動(dòng)態(tài)編程語(yǔ)?是?級(jí)程序設(shè)計(jì)語(yǔ)?的?個(gè)類(lèi)別,在計(jì)算機(jī)科學(xué)領(lǐng)域已被?泛應(yīng)?。它是?類(lèi)在?運(yùn)?時(shí)可以改變其結(jié)構(gòu)?的語(yǔ)??:例如新的函數(shù)、對(duì)象、甚?代碼可以被引進(jìn),已有的函數(shù)可以被刪除或是其他結(jié)構(gòu)上的變化2022-07-07
python與mysql數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)
這篇文章主要介紹了python與mysql數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

