下面的代码示例是对昨天的《json格式存储数据》最后的重构示例的一个改写,是在学习这个模块的一个自我的思考和结合运用。
# -*- encoding: utf-8 -*-
import json
#在原有基础上进行修改
#进行用户注册,如果检查到用户名已存在就提示用户名已存在,询问是否进行登录
#用户名不存在则进行密码输入,保存在josn文件中,并显示注册成功,询问是否进行登录
#登录操作,输入用户名并进行密码验证
filename = "username.json" #存储字典的json文件
def get_username():
"""如果存储了用户名,就提示是否登录"""
input_name=input("please input your name:\n")
filename = "username.json"
with open(filename) as f_obj:
username_dic = json.load(f_obj)
#判断用户是否存在
is_exsit=0
for name in username_dic.keys():
if input_name==name:
is_exsit=1
break
# 如果存在用户
if is_exsit==1:
print("User name already exists,Do you log in directly?\n")
bool=input("y or n ?\n")
if bool=='y':
password = input('please input your password:\n')
if password==username_dic[input_name]:
print("Login successful!\n")
else:
print("Password error,exited!\n")
if bool=='n':
print("Exited!\nBye Bye!")
return input_name
else:
print("User does not exist !")
def get_new_username():
"""提示用户输入用户名进行注册"""
# 在josn文件中追加内容(要json文件已存在)
filename = "username.json"
temp_dic = {}
input_name = input("Please set your user name\n")
temp_dic[input_name] = input('please input your password!\n')
try:
with open(filename) as f_obj:
username_dic = json.load(f_obj)
for i in temp_dic:
username_dic[i] = temp_dic[i]
with open(filename, "w") as f_obj:
json.dump(username_dic, f_obj)
except:
with open(filename, 'w') as f_obj:
json.dump(temp_dic, f_obj)
return input_name
def greet_user():
"""问候用户,并指出其名字"""
username=get_username()
if username:
print( username + "!")
else:
username=get_new_username()
print("we'll remember your name when you come back," + username + "!")
greet_user()
运行该程序:
1、提示用户不存在进行用户注册:
用户不存在
2、用户已存在,进行登录:
登录成功
3、用户已存在,不进行登录:
不登录
4、用户已存在,密码错误:
密码错误
看看username.json文件:
username.json
网友评论