網站首頁 編程語言 正文
用Python寫個注冊登錄功能,供大家參考,具體內容如下
本文是用Python寫一個注冊登錄功能,難度不大,很適合練手
主要就是用列表和字典,以及邏輯判斷
用到的第3方庫模塊是time模塊,以及re(正則表達式)模塊
這里使用time模塊就是為了通過sleep方法,讓程序運行有進程感,不是一下子蹦出所有信息
使用re模塊就是用于判斷密碼的復雜性,我們注冊軟件系統判斷我們的密碼是否足夠復雜就是通過正則表達式去判斷的
首先第1步就是導入這2個模塊,即
import time import re
之后需要1個列表用于存儲注冊的id,需要一個字典,來將ID與密碼綁定在一起,因為字典是key:value格式,以ID作為key,密碼(password)作為value,就實現了綁定
代碼可表示為
user_id=[] #存儲用戶id user_dict={} #將id與密碼綁定
之后就要詢問用戶是否注冊過賬號,如果沒注冊,就提示用戶注冊賬號,可以通過一個變量接收用戶的選擇,然后進行對應的操作
choice=input('您是否注冊過賬號 沒有請注冊 1:注冊 2:登錄 3:退出系統')
輸入1,就進入到注冊界面,注冊首先需要輸入用戶名,輸入密碼,最后提示用戶注冊成功
然后需要將用戶的id加入到user_id中,用字典存儲用戶的id和密碼,即
user_name=input('請輸入用戶名') password=input('請輸入密碼') user_id.append(user_name) for item in user_id: ?? ?if item not in user_dict: ?? ??? ?user_dict[item]=password print('注冊成功!)
注冊好就需要登錄了,這個過程相比于注冊稍稍麻煩些
首先,需要判斷用戶輸入的id是否注冊過(也就是輸入的id是否在user_id中)
之后,若存在,還需匹配密碼正確與否,正確才可登錄。
但是,可能用戶會忘記密碼,雖然我們可以通過字典查看密碼并打印給用戶,但是一般不建議這么做,盡量建議用戶修改密碼,以及用戶輸入了未注冊的ID,需要建議用戶注冊,提高效率。
判斷元素是否在列表中只需要i in list即可,若為真,則元素存在于列表中,反之不在
while 1: ?? ?name=input('請輸入用戶名') ?? ?key=input('請輸入密碼') ?? ?if name in user_id: ?? ??? ?if user_dict[name]==key: ?? ??? ??? ?print('登錄成功') ?? ??? ??? ?break ?? ??? ?else: ?? ??? ??? ?print('密碼錯誤 請檢查好輸入') ?? ??? ??? ?q=input('您是否選擇更改密碼 輸入y更改 輸入其他退出') ?? ??? ??? ?if q=='y': ?? ??? ??? ??? ?new_password=input('請輸入新密碼') ? ? ? ? ? ? ? ? user_dict[name]=new_password ?? ??? ??? ??? ?print('密碼修改成功!') ?? ??? ??? ?else: ?? ??? ??? ??? ??? ?break ?? ?else: ?? ??? ?print('用戶名不存在 請檢查好輸入') ?? ??? ?r=input('您是否需要注冊賬號 輸入1注冊 其他退出') ?? ??? ?if r=='1': ?? ??? ??? ?user_login=input('請輸入要注冊的用戶名') ? ? ? ? ? ? password_login=input('請輸入您的登錄密碼') ? ? ? ? ? ? user_id.append(user_login) ? ? ? ? ? ? for num in user_id: ?? ??? ??? ??? ?if num not in user_dict: ??? ??? ??? ??? ??? ?user_dict[user_login]=password_login ? ? ? ? ? ? ? ? ? ? print('注冊成功') ? ? ?? ? else: ? ? ? ? ??? ?break
值得注意的是,一定要先判斷id是否存在,而不是直接判斷密碼,因為沒注冊的id在字典中沒有對應的鍵,會報錯誤Keyerror
之后就是退出程序了,建議5s緩沖在退出,不至于太突然 可以使用time.sleep()方法
print('感謝您的使用,程序將在5秒后退出') for i in range(5): ?? ?time.sleep(1) ?? ?print('程序將在{}秒后退出'.format(5-i))
至此,項目功能就全部完成了,下面是項目的源代碼:
上面沒有講正則表達式,源代碼中帶有正則表達式判斷是否含有字母
import time print('----------感謝您使用本系統------------') user_id=[] user_dict={} time.sleep(1) while 1: ? ? choice=input('您是否注冊過賬號 沒有請注冊 1:注冊 2:登錄 3:退出系統') ? ? if choice=='1': ? ? ? ? user_name=input('請輸入用戶名') ? ? ? ? while 1: ? ? ? ? ?? ?password=input('請輸入密碼 需要包含字母') ? ? ? ? ?? ?p=re.compile('^.*[A-Z a-z]+.*$') ? ? ? ? ?? ?if p.match(password): ? ? ? ? ?? ??? ?break ? ? ? ? ?? ?else: ? ? ? ? ?? ??? ?print('密碼不夠復雜 重新輸入') ? ? ? ? user_id.append(user_name) ? ? ? ? for item in user_id: ? ? ? ? ? ? if item not in user_dict: ? ? ? ? ? ? ? ? user_dict[item]=password ? ? elif choice=='2': ? ? ? ? while 1: ? ? ? ? ? ? name=input('請輸入用戶名') ? ? ? ? ? ? key=input('請輸入密碼') ? ? ? ? ? ? if name in user_id: ? ? ? ? ? ? ? ? if user_dict[name]==key: ? ? ? ? ? ? ? ? ? ? print('登錄成功') ? ? ? ? ? ? ? ? ? ? break ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? print('密碼錯誤 請檢查好輸入') ? ? ? ? ? ? ? ? ? ? q=input('您是否選擇更改密碼 輸入y更改 輸入其他退出') ? ? ? ? ? ? ? ? ? ? if q=='y': ? ? ? ? ? ? ? ? ? ? ?? ?while 1: ? ? ? ? ? ? ? ? ? ? ? ? ?? ?new_password1=input('請輸入新密碼') ? ? ? ? ? ? ? ? ? ? ? ? ?? ?new_password2=input('請確認新密碼') ? ? ? ? ? ? ? ? ? ? ? ? ?? ?if new_password_1==new_password2: ? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ?user_dict[name]=new_password1 ? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ?break ? ? ? ? ? ? ? ? ? ? ? ? ?? ?else: ? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ?print('兩次密碼輸入不一致,請重新輸入') ? ? ? ? ? ? ? ? ? ? ? ? print('密碼修改成功!') ? ? ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? ? ? break ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? print('用戶名不存在 請檢查好輸入') ? ? ? ? ? ? ? ? r=input('您是否需要注冊賬號 輸入1注冊 其他退出') ? ? ? ? ? ? ? ? if r=='1': ? ? ? ? ? ? ? ? ? ? user_login=input('請輸入要注冊的用戶名') ? ? ? ? ? ? ? ? ? ? password_login=input('請輸入您的登錄密碼') ? ? ? ? ? ? ? ? ? ? user_id.append(user_login) ? ? ? ? ? ? ? ? ? ? for num in user_id: ? ? ? ? ? ? ? ? ? ? ? ? if num not in user_dict: ? ? ? ? ? ? ? ? ? ? ? ? ? ? user_dict[user_login]=password_login ? ? ? ? ? ? ? ? ? ? print('注冊成功') ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? break ? ? ? ? ? ? ? ? ? ?? ? ? else: ? ? ? ? print('感謝您的使用,程序將在5秒后退出') ? ? ? ? for i in range(1,5): ? ? ? ? ? ? time.sleep(1) ? ? ? ? ? ? print('程序將在{}秒后退出'.format(5-i)) ? ? ? ? break
原文鏈接:https://blog.csdn.net/weixin_45939558/article/details/112711843
相關推薦
- 2022-05-26 基于Python實現將列表數據生成折線圖_python
- 2022-05-18 Python中的turtle畫箭頭,矩形,五角星_python
- 2022-06-23 分布式醫療掛號系統整合Gateway網關解決跨域問題_其它綜合
- 2023-02-18 React錯誤的習慣用法分析詳解_React
- 2024-04-04 springboot整合mongodb批量修改和添加索引,與設置mongodb保存更新超時時間
- 2022-04-26 python?moviepy?的用法入門篇_python
- 2022-05-08 一文教你向Pandas?DataFrame添加行_python
- 2022-08-18 win10同網段/跨網段訪問虛擬機samba服務器的過程記錄_服務器其它
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支