修改个人信息 python_python函数练习——个人信息修改

#!/usr/bin/env python3#-*- coding: utf-8 -*-#@Time : 2018/3/21 10:33#@Author : hyang#@File : Person_manage.py#@Software: PyCharm

DB_FILE= 'account.txt'COLUMN_NAME=['Username','Password','Name','Age','Job','Dept','Phone']

MENU= '''1. 打印个人信息

2. 修改个人信息

3. 修改密码'''

#打印信息

def print_log(msg, log_type="info"):if log_type == 'info':print("\033[32;1m%s\033[0m" %msg)elif log_type == 'error':print("\033[31;1m%s\033[0m" %msg)defload_db():"""载入人员信息

:return:"""staff_data={}#构建字典空列表

#{'Username': ['username','Password','Name','Age','Job','Dept','Phone'}

#for d in COLUMN_NAME:

#staff_data[d] = []

with open(DB_FILE,'r', encoding='utf-8') as f:for line inf:

datas= line.split(",")#构建员工信息字典

datas[-1] = datas[-1].strip() #去掉回车

staff_data[datas[0]]=datasreturnstaff_datadefprint_user_info(p_user):"""打印用户信息

:param user: 用户名

:return:"""person_data=STAFF_INFO[p_user]#使用切片把username,Password过滤掉

#相当于深拷贝,如果数据量大,会占用大量内存空间

#person_data = person_data[COLUMN_NAME.index('Name'):]

for i in range (0, COLUMN_NAME.index('Name')):

person_data.pop(0)#print(person_data)

info = '''------------------

Name: {}

Age : {}

Job : {}

Dept: {}

Phone: {}

------------------''' .format(*person_data)

print_log(info)defsave_db():"""保存到文件中

:return:"""f= open(DB_FILE, "r+", encoding='utf-8')

f.seek(0)

f.truncate()#清空文件

for v_data inSTAFF_INFO.values():

row_data= ','.join(v_data)

f.write('%s\n'%row_data)

f.close()defchange_user_info(p_user):"""修改用户信息

:param p_user: 用户名

:return:"""user_info=STAFF_INFO[p_user]for ind, val inenumerate(user_info):if ind > 1:

msg= '%s, %s, %s'%(ind, COLUMN_NAME[ind], val)

print_log(msg)whileTrue:

choice= input("输入要修改的列的序号").strip()ifchoice.isdigit():

choice=int(choice)#if choice > len(user_info) and choice < 2:

if 2 < choice

print_log('输入要的序号不存在', 'error')else:

curr_val=user_info[choice]

print_log('当前值为'+curr_val)

new_val= input('input new_value->').strip()

user_info[choice]=new_val

STAFF_INFO[p_user]=user_info

save_db()

msg= '%s修改成功'%COLUMN_NAME[choice]

print_log(msg)break

else:

print_log('输入错误,请输入2-6的数字', 'error')defchange_user_pwd(p_user):"""修改密码

:param p_user:

:return:"""

whileTrue:

pwd1= input("输入新密码->").strip()

pwd2= input("再输一次新密码->").strip()if pwd1 ==pwd2:

pwd_ind= COLUMN_NAME.index('Password') #得到密码索引

STAFF_INFO[user][pwd_ind] =pwd2

save_db()

print_log('密码修改成功')break

else:

print_log('密码两次输入不一致','error')deflogin_auth(username, pwd):"""用户名密码验证

:param username:

:param pwd:

:return:"""

if username inSTAFF_INFO:if pwd == STAFF_INFO[username][1]:returnTrueelse:

print_log('用户名与密码不一致','error')returnFalseelse:

print_log('用户名不存在','error')returnFalseif __name__ == '__main__':

STAFF_INFO=load_db()#print(STAFF_INFO)

count =0while count < 3:

user= input('用户名:->')

pwd= input('密码:->')iflogin_auth(user, pwd):print('welcome %s'.center(50,'-') %user)while True: #用户停留这一层

print(MENU)

user_choice= input(">>>").strip()ifuser_choice.isdigit():

user_choice=int(user_choice)if user_choice == 1:#用户登录成功打印用户信息

print_user_info(user)elif user_choice == 2:

change_user_info(user)elif user_choice == 3:

change_user_pwd(user)elif user_choice == 'q':break

else:

count+= 1

else:

print_log("Too many attempts.", 'error')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值