当前位置 : 主页 > 编程语言 > python >

Python初学第四段代码之注册登录升级版

来源:互联网 收集:自由互联 发布时间:2022-06-15
import json import time import hashlib import os # md5加密 + 盐 def get_md5_pass(password): md5_obj = hashlib.md5() salt1 = '兔子打老虎,打到小兔子' salt2 = '打到小兔子,哇哇哇哇哇!' md5_obj.update(salt1.encode('u
import json
import time
import hashlib
import os


# md5加密 + 盐
def get_md5_pass(password):
md5_obj = hashlib.md5()
salt1 = '兔子打老虎,打到小兔子'
salt2 = '打到小兔子,哇哇哇哇哇!'
md5_obj.update(salt1.encode('utf-8'))
md5_obj.update(str(password).encode('utf-8'))
md5_obj.update(salt2.encode('utf-8'))
return md5_obj.hexdigest()


# 注册功能
def register():
# 判断user_db.json是否存在,不存在自动创建
if not os.path.isfile('user_db.json'):
with open('user_db.json', 'w', encoding='utf-8') as f_w:
pass
print('没有user_db.json文件,正在创建中...\n')
time.sleep(1)

while True:
register_username = input('注册用户 ==> ').strip()
# 由于序列化需要一个初始列表,否则会报错
with open('user_db.json', 'r+', encoding='utf-8') as f_rw:
if not f_rw.read():
print('没有用户,正在初始化...\n')
time.sleep(1)
f_rw.write('{}')

# 指针已移动到末尾,需要重新开始
f_rw.seek(0)
user_data = json.load(f_rw)
if user_data.get(register_username):
print('该用户已存在,请重新注册!\n')
continue

register_password = input('注册密码 ==> ').strip()
re_register_password = input('确认密码 ==> ').strip()
if register_password != re_register_password:
print('两次密码不一致,请重新登录!\n')
continue

# 对密码进行加密操作
register_password = get_md5_pass(register_password)

# 将用户注册信息序列化到文件当中
with open('user_db.json', 'w', encoding='utf-8') as f_w:
import uuid
user_data.update(
{
register_username:
{
'user_uuid': str(uuid.uuid4()),
'password': register_password,
'balance': 0
}
}
)
json.dump(user_data, f_w)

print(f'[{register_username}] 注册成功!\n')


def login():
while True:
login_username = input('登录用户 ==> ').strip()

# 判断用户是否存在
with open('user_db.json', 'r', encoding='utf-8') as f_r:
user_data = json.load(f_r)
if login_username not in user_data:
print('该用户不存在请重新登录!\n')
continue

login_password = input('登录密码 ==> ').strip()
login_password = get_md5_pass(login_password)
if not user_data.get(login_username)['password'] == login_password:
print('密码错误,请重新登录!\n')
continue

print('登录成功!')


func_dic = {
'0': ['注册', register],
'1': ['登录', login],
}


def run():
while True:
for line in func_dic:
print(' ' * 10, line, func_dic[line][0])
number = input('请输入功能编号 ==> ').strip()

if number not in func_dic:
print('该功能不存在请重新输入!')
continue

func_dic[number][1]()


run()

可扩展,加油学,接下来是初学进阶了,三层架构已完毕,准备面向对象。。。对面向对象来讲,我有点坦克不安,因为太抽象了,虽然python的面向对象比其他语言简单很多,但对于没接触过编程的人来说,数学又掉渣,逻辑思维差点人来说很难很难得。。。。。。。。。。。。。。。。。

网友评论