Python實(shí)現(xiàn)注冊(cè)登錄功能
用Python寫(xiě)個(gè)注冊(cè)登錄功能,供大家參考,具體內(nèi)容如下
本文是用Python寫(xiě)一個(gè)注冊(cè)登錄功能,難度不大,很適合練手
主要就是用列表和字典,以及邏輯判斷
用到的第3方庫(kù)模塊是time模塊,以及re(正則表達(dá)式)模塊
這里使用time模塊就是為了通過(guò)sleep方法,讓程序運(yùn)行有進(jìn)程感,不是一下子蹦出所有信息
使用re模塊就是用于判斷密碼的復(fù)雜性,我們注冊(cè)軟件系統(tǒng)判斷我們的密碼是否足夠復(fù)雜就是通過(guò)正則表達(dá)式去判斷的
首先第1步就是導(dǎo)入這2個(gè)模塊,即
import time import re
之后需要1個(gè)列表用于存儲(chǔ)注冊(cè)的id,需要一個(gè)字典,來(lái)將ID與密碼綁定在一起,因?yàn)樽值涫莐ey:value格式,以ID作為key,密碼(password)作為value,就實(shí)現(xiàn)了綁定
代碼可表示為
user_id=[] #存儲(chǔ)用戶(hù)id
user_dict={} #將id與密碼綁定之后就要詢(xún)問(wèn)用戶(hù)是否注冊(cè)過(guò)賬號(hào),如果沒(méi)注冊(cè),就提示用戶(hù)注冊(cè)賬號(hào),可以通過(guò)一個(gè)變量接收用戶(hù)的選擇,然后進(jìn)行對(duì)應(yīng)的操作
choice=input('您是否注冊(cè)過(guò)賬號(hào) 沒(méi)有請(qǐng)注冊(cè) 1:注冊(cè) 2:登錄 3:退出系統(tǒng)')輸入1,就進(jìn)入到注冊(cè)界面,注冊(cè)首先需要輸入用戶(hù)名,輸入密碼,最后提示用戶(hù)注冊(cè)成功
然后需要將用戶(hù)的id加入到user_id中,用字典存儲(chǔ)用戶(hù)的id和密碼,即
user_name=input('請(qǐng)輸入用戶(hù)名')
password=input('請(qǐng)輸入密碼')
user_id.append(user_name)
for item in user_id:
?? ?if item not in user_dict:
?? ??? ?user_dict[item]=password
print('注冊(cè)成功!)注冊(cè)好就需要登錄了,這個(gè)過(guò)程相比于注冊(cè)稍稍麻煩些
首先,需要判斷用戶(hù)輸入的id是否注冊(cè)過(guò)(也就是輸入的id是否在user_id中)
之后,若存在,還需匹配密碼正確與否,正確才可登錄。
但是,可能用戶(hù)會(huì)忘記密碼,雖然我們可以通過(guò)字典查看密碼并打印給用戶(hù),但是一般不建議這么做,盡量建議用戶(hù)修改密碼,以及用戶(hù)輸入了未注冊(cè)的ID,需要建議用戶(hù)注冊(cè),提高效率。
判斷元素是否在列表中只需要i in list即可,若為真,則元素存在于列表中,反之不在
while 1:
?? ?name=input('請(qǐng)輸入用戶(hù)名')
?? ?key=input('請(qǐng)輸入密碼')
?? ?if name in user_id:
?? ??? ?if user_dict[name]==key:
?? ??? ??? ?print('登錄成功')
?? ??? ??? ?break
?? ??? ?else:
?? ??? ??? ?print('密碼錯(cuò)誤 請(qǐng)檢查好輸入')
?? ??? ??? ?q=input('您是否選擇更改密碼 輸入y更改 輸入其他退出')
?? ??? ??? ?if q=='y':
?? ??? ??? ??? ?new_password=input('請(qǐng)輸入新密碼')
? ? ? ? ? ? ? ? user_dict[name]=new_password
?? ??? ??? ??? ?print('密碼修改成功!')
?? ??? ??? ?else:
?? ??? ??? ??? ??? ?break
?? ?else:
?? ??? ?print('用戶(hù)名不存在 請(qǐng)檢查好輸入')
?? ??? ?r=input('您是否需要注冊(cè)賬號(hào) 輸入1注冊(cè) 其他退出')
?? ??? ?if r=='1':
?? ??? ??? ?user_login=input('請(qǐng)輸入要注冊(cè)的用戶(hù)名')
? ? ? ? ? ? password_login=input('請(qǐng)輸入您的登錄密碼')
? ? ? ? ? ? user_id.append(user_login)
? ? ? ? ? ? for num in user_id:
?? ??? ??? ??? ?if num not in user_dict:
??? ??? ??? ??? ??? ?user_dict[user_login]=password_login
? ? ? ? ? ? ? ? ? ? print('注冊(cè)成功')
? ? ?? ? else:
? ? ? ? ??? ?break值得注意的是,一定要先判斷id是否存在,而不是直接判斷密碼,因?yàn)闆](méi)注冊(cè)的id在字典中沒(méi)有對(duì)應(yīng)的鍵,會(huì)報(bào)錯(cuò)誤Keyerror
之后就是退出程序了,建議5s緩沖在退出,不至于太突然 可以使用time.sleep()方法
print('感謝您的使用,程序?qū)⒃?秒后退出')
for i in range(5):
?? ?time.sleep(1)
?? ?print('程序?qū)⒃趝}秒后退出'.format(5-i))至此,項(xiàng)目功能就全部完成了,下面是項(xiàng)目的源代碼:
上面沒(méi)有講正則表達(dá)式,源代碼中帶有正則表達(dá)式判斷是否含有字母
import time
print('----------感謝您使用本系統(tǒng)------------')
user_id=[]
user_dict={}
time.sleep(1)
while 1:
? ? choice=input('您是否注冊(cè)過(guò)賬號(hào) 沒(méi)有請(qǐng)注冊(cè) 1:注冊(cè) 2:登錄 3:退出系統(tǒng)')
? ? if choice=='1':
? ? ? ? user_name=input('請(qǐng)輸入用戶(hù)名')
? ? ? ? while 1:
? ? ? ? ?? ?password=input('請(qǐng)輸入密碼 需要包含字母')
? ? ? ? ?? ?p=re.compile('^.*[A-Z a-z]+.*$')
? ? ? ? ?? ?if p.match(password):
? ? ? ? ?? ??? ?break
? ? ? ? ?? ?else:
? ? ? ? ?? ??? ?print('密碼不夠復(fù)雜 重新輸入')
? ? ? ? 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('請(qǐng)輸入用戶(hù)名')
? ? ? ? ? ? key=input('請(qǐng)輸入密碼')
? ? ? ? ? ? if name in user_id:
? ? ? ? ? ? ? ? if user_dict[name]==key:
? ? ? ? ? ? ? ? ? ? print('登錄成功')
? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? print('密碼錯(cuò)誤 請(qǐng)檢查好輸入')
? ? ? ? ? ? ? ? ? ? q=input('您是否選擇更改密碼 輸入y更改 輸入其他退出')
? ? ? ? ? ? ? ? ? ? if q=='y':
? ? ? ? ? ? ? ? ? ? ?? ?while 1:
? ? ? ? ? ? ? ? ? ? ? ? ?? ?new_password1=input('請(qǐng)輸入新密碼')
? ? ? ? ? ? ? ? ? ? ? ? ?? ?new_password2=input('請(qǐng)確認(rèn)新密碼')
? ? ? ? ? ? ? ? ? ? ? ? ?? ?if new_password_1==new_password2:
? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ?user_dict[name]=new_password1
? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ?break
? ? ? ? ? ? ? ? ? ? ? ? ?? ?else:
? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ?print('兩次密碼輸入不一致,請(qǐng)重新輸入')
? ? ? ? ? ? ? ? ? ? ? ? print('密碼修改成功!')
? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print('用戶(hù)名不存在 請(qǐng)檢查好輸入')
? ? ? ? ? ? ? ? r=input('您是否需要注冊(cè)賬號(hào) 輸入1注冊(cè) 其他退出')
? ? ? ? ? ? ? ? if r=='1':
? ? ? ? ? ? ? ? ? ? user_login=input('請(qǐng)輸入要注冊(cè)的用戶(hù)名')
? ? ? ? ? ? ? ? ? ? password_login=input('請(qǐng)輸入您的登錄密碼')
? ? ? ? ? ? ? ? ? ? user_id.append(user_login)
? ? ? ? ? ? ? ? ? ? for num in user_id:
? ? ? ? ? ? ? ? ? ? ? ? if num not in user_dict:
? ? ? ? ? ? ? ? ? ? ? ? ? ? user_dict[user_login]=password_login
? ? ? ? ? ? ? ? ? ? print('注冊(cè)成功')
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ??
? ? else:
? ? ? ? print('感謝您的使用,程序?qū)⒃?秒后退出')
? ? ? ? for i in range(1,5):
? ? ? ? ? ? time.sleep(1)
? ? ? ? ? ? print('程序?qū)⒃趝}秒后退出'.format(5-i))
? ? ? ? break以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 用Python實(shí)現(xiàn)web端用戶(hù)登錄和注冊(cè)功能的教程
- Python實(shí)現(xiàn)注冊(cè)登錄系統(tǒng)
- Python登錄注冊(cè)驗(yàn)證功能實(shí)現(xiàn)
- Python實(shí)現(xiàn)注冊(cè)、登錄小程序功能
- Python制作簡(jiǎn)易注冊(cè)登錄系統(tǒng)
- Python +Selenium解決圖片驗(yàn)證碼登錄或注冊(cè)問(wèn)題(推薦)
- python實(shí)現(xiàn)登錄與注冊(cè)系統(tǒng)
- Python3 Tkinkter + SQLite實(shí)現(xiàn)登錄和注冊(cè)界面
- python應(yīng)用文件讀取與登錄注冊(cè)功能
- Python?+?Tkinter連接本地MySQL數(shù)據(jù)庫(kù)簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄
相關(guān)文章
一篇文章帶你了解Python的進(jìn)程,線(xiàn)程和協(xié)程
這篇文章主要為大家介紹了Python的進(jìn)程,線(xiàn)程和協(xié)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01
Django JSONField的自動(dòng)轉(zhuǎn)換思路詳解(django自定義模型字段)
如果想實(shí)現(xiàn)JSONField的自動(dòng)轉(zhuǎn)換,可以使用Django REST framework的JSONField,或者自定義一個(gè)字段類(lèi)并覆蓋from_db_value()和get_prep_value()方法來(lái)實(shí)現(xiàn)這個(gè)功能,這篇文章主要介紹了Django JSONField的自動(dòng)轉(zhuǎn)換(django自定義模型字段)問(wèn)題,需要的朋友可以參考下2023-06-06
python?配置uwsgi?啟動(dòng)Django框架的詳細(xì)教程
這篇文章主要介紹了python?配置uwsgi?啟動(dòng)Django框架,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
python中time tzset()函數(shù)實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于python中time tzset()函數(shù)實(shí)例用法內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-02-02

