员工管理系统+字符编码+Python代码文件操作
员工管理系统+字符编码+Python代码文件操作
1.员工管理系统
1.1 debug 代码调试
1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)
2.之后右键点击debug运行代码
1.2 员工管理系统
练习: # 2.定义一个空列表 用于存放用户字典数据 user_data_list = [] # 1.代码运行起来之后 可以循环提示用户有哪些功能编号可以选择 # 2.查看指定用户数据(格式化输出美化一下) # 3.修改用户的薪资的待遇(一通百通) 修改用户名 年龄 # 4.查看所有用户数据(for循环展示) while True: print(""" 1.添加用户 2.查看用户 3.删除用户 4.退出系统 """) choice = input('请输入您想要执行的功能编号>>>:') # 判断用户输入的编号 if choice == '1': # 3.先获取用户编号 user_id = input('请输入您的编号>>>:').strip() # 4.应该先校验用户编号是否已存在 # 4.1.循环获取每一个用户字典 for user_data_dict in user_data_list: # {'user_id': '1', 'name': 'jason', 'age': '18'} if user_data_dict['user_id'] == user_id: print('用户编号已存在') break # 结束for循环校验 else: # 5.获取用户相关信息 name = input('请输入您的用户名>>>:').strip() age = input('请输入您的年龄>>>:').strip() salary = input('请输入您的薪资>>>:').strip() # 6.构造一个用户字典 tmp_dict = {} # 7.创建键值对 tmp_dict["user_id"] = user_id tmp_dict["name"] = name tmp_dict["age"] = age tmp_dict["name"] = name # 8.添加到用户列表中 user_data_list.append(tmp_dict) # 9.提示用户添加成功 print('用户:%s添加成功' % name) elif choice == '2': print(user_data_list) elif choice == '3': print('删除用户功能') elif choice == '4': print('退出系统功能') else: print('很抱歉 暂时没有该功能选项')
2.字符编码
字符编码只跟文件和字符串有关,与视频文件、图片文件等无关
什么是字符编码?
由于计算机内部只识别二进制,但是用户在使用计算机的时候却可以看到各式各样的语言字符
字符编码:内部记录了人类字符与数字0和1之间相对应关系的数据
3.字符编码发展史
1.一家独大
计算机最初是由美国人发明的 美国人为了能够让计算机识别英文字符
ASCII码:里面记录了英文字符与数字的对应关系
用一个字节来是对应关系,所有的英文字符和符号加起来其实不超过127,之所以使用八位是为了后续发现新的语言
必须记住的对应关系有以下两组:A-Z:65-90 a-z:97-122 0-9:48 - 57
2.群雄割据
中国人
为了能够让计算机识别中文 我们需要发明另外一套编码表GBK码:记录了英文中文与数字的对应关系对于英文还是使用一个字节对应中文使用两个字节甚至更多字节。
两个字节其实也不够表示出所有的中文遇到生僻字可能需要更多位来表示
日本人
为了能够让计算机识别日文 也需要发明一套编码表
shift_JIS码:记录了日文英文与数字的对应关系
韩国人
为了能够让计算机识别韩文 也需要发明一套编码表Euc_kr码:记录了韩文英文与数字的对应关系
3.天下一统
为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一
unicode(万国码)
统一使用两个及以上字符记录字符与数字的对应关系
utf8(万国码的优化版本)
将英文还是用一个字节存储,将中文使用三个字节或更多字节存储
PS:现在默认使用的编码是utf8
4.字符编码实操
1.如何解决文件乱码的情况
文件当初以什么编码编的 打开的时候就以什么编码解
2.python解释器版本不同带来的编码差异
python2.X内部使用的编码默认是ASCII
# 文件头 coding:utf8
在python2中定义字符串前面要加一个小us = u'你'
python3.X内部使用utf8,自定义文件模板内容 file >>> settings >>> Editor >>> file and code templates >>> python script
3.编码与解码
编码
将人类能够读懂的字符安装指定的编码转换成数字
解码
将数字按照指定的编码转换成人类能够读懂的字符
s = '每天不要想太多 学就完事了 干就完了 奥利给!!!' 编码 res = s.encode('utf8') print(res, type(res)) # bytes 在python中直接将该类型看成二进制数据即可 解码 res1 = res.decode('utf8') print(res1)
1.什么是文件?
文件其实是操作系统暴露给用户操作硬盘的快捷方式(接口)
2.代码如何操作文件 关键字open() 三步走:
1.利用关键字open打开文件 2.利用其它方法操作文件 3.关闭文件
文件路径有哪几种?
1. 相对路径 2. 绝对路径
路径中出现了字母与斜杠的组合产生了特殊含义如何取消 , 在路径字符串前面加一个r , r'D:\py20\day08\a.txt'
open('a.txt') open(r'D:\py20\day08\a.txt') res = open('a.txt', 'r', encoding='utf8') print(res.read()) res.close() # 关闭文件释放资源
open(文件路径,读写模式,字符编码) 文件路径与读写模式是必须的,字符编码是可选的(有些模式需要编码)
with上下文管理(能够自动帮你close()
with open(r'a.txt','r',encoding='utf8') as f1: # f1=open() f1.close() print(f1.read())
6.文件读写模式
PS:补全语法结构 没有实际含义 pass
r 只读模式(只能看不能改)
路径不存在:直接报错 with open(r'b.txt', 'r', encoding='utf8') as f: pass 路径存在 with open(r'a.txt', 'r', encoding='utf8') as f: print(f.read()) # 读取文件内所有的内容 f.write('123') # 写文件内容
w 只写模式(只能写不能看)
路径不存在:路径不存在自动创建 with open(r'b.txt', 'w', encoding='utf8') as f: pass
路径存在:1.会先清空文件内容 2.再执行写入操作
with open(r'a.txt', 'w', encoding='utf8') as f:
f.read()
f.write('hello world!\n')
f.write('hello world!\n')
f.write('hello world!\n')
a 只追加模式(追加内容)
a:路径存在会将文件指针直接移动到文件末尾,在文件不存在时会创建空文档
1 #3. 以追加内容,写功能,utf8编码模式打开当前路径下的a.txt文件 2 res = open('a.txt', mode='a', encoding='utf8') 3 # 输入hello内容,清除了以前的我要坚持学python! 4 res.write(' world\n') 5 res.write('python\n') 6 # 对文件操作完必须关掉,释放资源 7 res.close() 8 9 #结果,在a.txt文件中追加world和python字符 10 world 11 python
小练习(员工操作系统)
1 print('''员工管理系统功能如下: 2 1.添加用户 3 2.查看用户 4 3.删除用户 5 4.退出系统\n''') 6 7 user_msg_list = [] 8 while True: 9 # 1获取用户编号 10 choice = input('输入功能编号:').strip() 11 choice = int(choice) 12 # 2判断用户是选择那个功能 13 if choice == 1: 14 # 3获取用户输入的个人编号号 15 user_id = input('请输入你的个人编号:').strip() 16 # 判断是否输入的正确 17 for full_dict in user_msg_list: 18 if full_dict['user_id'] == user_id: 19 print('该用户编号%s:已存在'%user_id) 20 break 21 else: 22 pass 23 else: 24 # 4获取用户信息 25 user_name = input('请输入姓名:').strip() 26 user_age = input('请输入年龄:').strip() 27 user_salary = input('请输入薪资:').strip() 28 # 5.建立一个空字典 29 null_dic = {} 30 # 6.把用户输入的信息添加到空字典中 31 null_dic['user_id'] = user_id 32 null_dic['user_name'] = user_name 33 null_dic['user_age'] = user_age 34 null_dic['user_salary'] = user_salary 35 # 8。把输入的信息 从字典添加到列表中,以便查询功能查询 36 user_msg_list.append(null_dic) 37 # 9.提示用户添加成功 38 print(f'用户{user_name}添加成功!') 39 elif choice == 2: 40 user_inp_id = int(input('用户信息查询,输入要查询的id数字:').strip()) 41 if user_inp_id != 1: 42 print('输入的id未注册用户,无法查到相关数据') 43 continue 44 second_dic = user_msg_list[user_inp_id - 1] 45 second_list = second_dic.keys() 46 for i in second_list: 47 print(f'{i}:{second_dic[i]}') 48 49 elif choice == 3: 50 user_id = input('按3删除全部数据:').strip() 51 if user_id == 3: 52 del user_msg_list 53 print('所有用户数据已删除') 54 if user_id != 3: 55 print('指令错误,请输入3以进行删除操作') 56 57 elif choice == 4: 58 user_id = input('按4退出系统:').strip() 59 if user_id == 4: 60 print('已退出系统') 61 exit() 62 if user_id != 4: 63 print('指令错误,请输入4以退出系统') 64 else: 65 print('暂时没有当前服务')