天天看點

用Python寫個注冊登入功能

用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與密碼綁定
           

之後就要詢問使用者是否注冊過賬号,如果沒注冊,就提示使用者新增賬號,可以通過一個變量接收使用者的選擇,然後進行對應的操作

輸入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
           

創作不易,如果對您有幫助請點贊或者關注作者,後期會出很多優質文章