开发者学堂课程【Python入门 2020年版:注册功能实现】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10433
注册功能实现
内容介绍:
一.注册
二.定义字典
三.面向对象的使用
四.对密码进行加密
五.双重加密
一、注册的编码
def register():
while True:
teacher_name =input('请输入账号(3~6位):')
if not 3<=len(teacher_name)<=6:
print('账号不符合要求, 请重新输入!')
else:
break
while True:
password = input('请输入密码(6~12位):')
if not 6<=1en(password)<=12:
print('密码不符合要求,请重新输入!')
else:
break
运行结果:
**欢迎来到学生管理系统**
◆1.登录
◆2.注册
◆3.退出
请选择(1-3):2
请输入账号(3~6位): ho
账号不符合要求,请重新输入!
请输入密码(6~12位):helsodl
账号不符合要求,请重新输入!
请输入账号(3~6位):hello
请输入密码(6~12位):fergethiweoregisfkoerisf
密码不符合要求,请重新输入!
请输入密码(6~12位):34hreoeqrpwig
密码不符合要求,请重新输入!
请输入密码(6~12位):iqretfiojewfa
密码不符合要求,请重新输入!
请输入密码(6~12位):123456
**欢迎来到学生管理系统**◆1.登录
◆2.注册
◆3.退出
二.定义字典
(1)#用户名密码都已经输入正确以后{'zhangsan':'123456'}
teacher.={}..#定义一个空的字典,将老师添加到字典里
teacher[teacher_name] = password
print(teacher)
注:
注册一次就定义一次,所以只保留最后一次注册,存在覆盖现象,所以要将“teacher.={}..#定义一个空的字典,将老师添加到字典里”放在代码的最前端,保证每次注册都放在同一个字典里面。
(2) 将信息保存在文件夹里,编写以下程序
def write_ json(file_name,data):
with open(base__dir+file_name,'w',encoding='utf8')as file:import json
json.dump(data,file)}
注:在真正开发时不用文件输入数据而是数据库输入。
三.面向对象的使用
注:不要使用追加,会使代码错误,不是一个字典
import sys
# 定义一个空的字典,将老师添加到字典里
import file_ manager
teacher{}
def register():
while True:
teacher_name = input('请输入账号(3~6位):')
if not 3<=len(teacher_name)<=6:
print('账号不符合要求,请重新输入!')
else:
break
while True:
password = input('请输入密码(6~12位):')
if not 6 <= len(password) <= 12:
print('密码不符合要求, 请重新输入!')
else:
break
#用户名密码都已经输入正确以后{'zhangsan':'123456'}
teacher[teacher_ name] = password
file_ manager.write_json("teacher.json.teacher)
print (teacher)
运行结果**欢迎来到学生管理系统**
◆1.登录
◆2.注册
◆3.退出
请选择(1-3):2
请输入账号(3~6位):zhang
请输入密码(6~12位):132453435
请选择(1-3):2
请输入账号(3~6位):lisi
请输入密码(6~12位):1324rw4353
{'zhang':'132453435','lisi':'1324rw4353'}
四.对密码进行加密
import hashlib
def encrypt_password(passwd)
h=hashlib.sha256()
h.update(passwd.encode(‘utf8’))
return h.hexdigest()
Python3.7.6(tags/v3.7.6:43364a7ae0,Dec19 2019,00:42:30)[MSCv.1916In[2]:import hashlib
In[3]:h1=hashlib.md5()
In[4]:h1.update('hello'.encode('utf8'))
五.双重加密
import hashlib
def encrypt_password(passwd,x)
h=hashlib.sha256()
h.update(passwd.encode('utf8')
h.update(x.encode('utf8'))
return h.hexdigest()
Python3.7.6(tags/v3.7.6:43364a7ae0,Dec19 2019,00:42:30)[MSCv.1916In[2]:import hashlib
In[3]:h1=hashlib.md5()
In[4]:h1.update('hello'.encode('utf8'))
In[5]:h1.update('world'.encode('utf8'))
In[6]:h1.hexdigest()
0ut[6]:'fc5e038d38a57032085441e7fe7010b0'
In[7]:h2=Ihashlib.md5()
In[8]:h2.update('helloworld'.encode('utf8'))In[9]
In[9]:h2.hexdigest()
0ut[9]:'fc5e038d38a57032085441e7fe7010b0"
注:
(1)x 可以取任意值
(2)data 值不能为空
#读取文件,查看文件里是否有数据。如果文件不存在,默认是一个字典
data= file_manager.read_json('data.json')
(3)读取文件
def read_json(file_name):
try:
with open(base__dir + file_name,'r',encoding='utf8')asfile:
import json
return json.load(file)
except FileNotFoundError:
print('文件未找到')
注:
当文件未找到时则 data 为空,将确定一个默认值,读取不到就返回默认值 default_data,空的文件读取会出错,要满足 json 的格式才行。