網(wǎng)站首頁 編程語言 正文
本文實(shí)例為大家分享了Python實(shí)現(xiàn)用戶名和密碼登錄的具體代碼,供大家參考,具體內(nèi)容如下
功能
登錄及注冊,密碼錯誤多次后驗(yàn)證碼確認(rèn)
說明
初次運(yùn)行,程序?qū)詣由梢粋€名為user的文本文檔,是包含用戶名及密碼的字典
輸入用戶名,如果用戶名不存在,程序會自動以輸入的用戶名進(jìn)行注冊
輸入密碼,當(dāng)輸錯4次時,程序會生成一個4位驗(yàn)證碼,并使用vbs方式彈出,如果驗(yàn)證碼輸錯,程序退出,否則重新執(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] #讀取用戶 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('請輸入用戶名>')) ?? ?#判斷用戶是否存在 ?? ?if user_name not in user:#用戶不存在 -> 注冊 -> 設(shè)置用戶名 ?? ??? ?print('用戶不存在,將執(zhí)行注冊操作。') ?? ??? ?if ' ' in user_name: ?? ??? ??? ?print('\aErr: 用戶名中不能有空格') ?? ??? ?elif user_name=='': ?? ??? ??? ?print('\aErr: 用戶名不能為空') ?? ??? ?else: ?? ??? ??? ?#設(shè)置密碼 ?? ??? ??? ?while True: ?? ??? ??? ??? ?user_passwd[0]=str(input('請?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: 密碼長度太短,至少6位。') ?? ??? ??? ??? ?else: ?? ??? ??? ??? ??? ?#再次輸入密碼 ?? ??? ??? ??? ??? ?user_passwd[1]=str(input('請?jiān)俅屋斎朊艽a>')) ?? ??? ??? ??? ??? ?if user_passwd[0]!=user_passwd[1]: ?? ??? ??? ??? ??? ??? ?print('\aErr: 兩次輸入的密碼不一致。') ?? ??? ??? ??? ??? ?else: ?? ??? ??? ??? ??? ??? ?print('注冊成功!\n\n請重新登錄:') ?? ??? ??? ??? ??? ??? ?user[user_name]=user_passwd[0] ?? ??? ??? ??? ??? ??? ?#寫入文件 ?? ??? ??? ??? ??? ??? ?f=open('user.txt','w') ?? ??? ??? ??? ??? ??? ?f.write(str(user)) ?? ??? ??? ??? ??? ??? ?f.close() ?? ??? ??? ??? ??? ??? ?break ?? ?else: ? ?#用戶存在 -> 登錄 -> 確認(rèn)密碼是否正確 ?? ??? ?#錯4次后驗(yàn)證碼確認(rèn) ?? ??? ?while error_time!=0: ?? ??? ??? ?user_passwd[0]=input('請輸入密碼 4/'+str(error_time)+'>') ?? ??? ??? ?if user_passwd[0]!=user[user_name]: ?? ??? ??? ??? ?print('\aErr: 密碼錯誤') ?? ??? ??? ??? ?error_time=error_time-1 ?? ??? ??? ?else: ?? ??? ??? ??? ?mode=True ?? ??? ??? ??? ?break ?? ??? ?else: ?? ??? ??? ?#驗(yàn)證碼確認(rèn) ?? ??? ??? ?print('\n\a\a因錯誤次數(shù)過多,進(jìn)行驗(yàn)證碼確認(rèn)') ?? ??? ??? ?chack[0]=str(randint(999,10000)) ? ?#生成驗(yàn)證碼 ?? ??? ??? ?#寫入到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('請輸入驗(yàn)證碼>')) ?? ??? ??? ?if chack[0]!=chack[1]: ?? ??? ??? ??? ?print('\aErr: 驗(yàn)證碼錯誤!') ?? ??? ??? ??? ?#倒計(jì)時退出 ?? ??? ??? ??? ?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('登錄成功...')
原文鏈接:https://blog.csdn.net/weixin_45447477/article/details/113376242
相關(guān)推薦
- 2022-07-28 Python常用Web框架Django、Flask與Tornado介紹_python
- 2021-12-05 C++11?關(guān)鍵字?const?使用小結(jié)_C 語言
- 2022-06-01 C語言?柔性數(shù)組的使用詳解_C 語言
- 2022-05-20 ElasticSearch 7.X系列之:查詢分析索引磁盤使用空間_disk_usage
- 2022-08-10 淺談Redis變慢的原因及排查方法_Redis
- 2022-03-20 Android四大組件之Activity詳細(xì)介紹_Android
- 2022-06-30 python神經(jīng)網(wǎng)絡(luò)MobileNet模型的復(fù)現(xiàn)詳解_python
- 2022-10-01 React構(gòu)建簡潔強(qiáng)大可擴(kuò)展的前端項(xiàng)目架構(gòu)_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支