Python知识七及大作业

昨日内容回顾

  • 列表补充方法

    sort()  # 排序
    	默认是升序 可以通过括号内指定参数改为降序 reverse=True
    reverse()  # 颠倒顺序
    count()  # 统计元素个数
    ...
    
  • 字典内置方法

    # 语言表达字字典主要特征
    
    1.按key取值
    	d['name']  # 不推荐使用
        d.get('name')  # 推荐使用
        	get(key,key如果不存在自定义的提示信息)
    2.修改值信息
    	d['存在的key'] = '新值'
    3.新增键值对
    	d['不存在的key'] = '值'
    4.统计键值对的个数
    	len()
    5.更新字典
    	update()  # 键存在则修改 不存在则创建
    6.初始化字典
    	fromkeys()  # 快速产生一个字典  注意值如果是相同列表的情况
    7.修改字典
    	setdefault()  # 键存在不修改而是返回该键对应的值 不存在则创建
    8.三兄弟
    	keys()  values()  items()
    9.删除元素
    	pop(key)
        popitem()
    
  • 元组内置方法

    # 语言表达出元组具体描述
    
    注意元组内各索引指向的元素的内存地址不能被修改
    	t = (1, 2, [11, 22])
    在定义元组的时候如果内部只有一个元素那么需要加逗号
    	以后在定义容器类型元素的时候内部如果只有一个元素都加逗号
    
  • 集合内置方法

    # 语言表达出集合描述
    '''集合内元素是无序多的'''
    1.去重
    	set()
    2.关系运算
    	& | ^ - >= > < <=
    

今日内容概要

  • 默写题讲解

  • 员工管理系统

    巩固之前所学的主要内容
    	流程控制
        数据类型内置方法(列表 字典)
    
  • 字符编码

    理论多 结论少  一点都不难
    
  • 文件操作

    python代码操作文件
    

今日内容详细

默写题讲解

s1 = 'jason say hello hello hello big baby baby baby sb sb jason jason'
# 统计每个单词的个数
# 1.定义一个空字典
data_dict = {}
# 2.如果是拿每个单词 则使用切割
new_list = s1.split(' ')  # ['jason','say',...]
# 3.for循环列表中每个单词
for i in new_list:  # jason say hello hello ...
    if i in data_dict:  # i=jason  {}
        # 取出i对应的值自增1即可
        data_dict[i] += 1
    else:
        # 新增一组键值对
        data_dict[i] = 1  # data_dict['jason'] = 1   {'jason':1}
print(data_dict)  # {'jason': 3, 'say': 1, 'hello': 3, 'big': 1, 'baby': 3, 'sb': 2}

s2 = 'jasonsayhello'
# 统计每个字符
data_dict = {}
# # 直接循环字符串
for i in s2:
    if i in data_dict:
        data_dict[i] += 1
    else:
        data_dict[i] = 1
print(data_dict)

debug代码调试

1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)
2.之后右键点击debug运行代码

员工管理系统

"""
目前仅用于学习练习使用 内部存在很多不合理的地方不要钻牛角尖
"""
# 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('很抱歉 暂时没有该功能选项')

字符编码

# 只跟文本文件和字符串有关 与视频文件 图片文件等无关

# 什么是字符编码
	由于计算机内部只识别二进制 但是用户在使用计算机的时候却可以看到各式各样的语言字符
	字符编码:内部记录了人类字符与数字对应关系的数据

字符编码发展史

# 1.一家独大
    计算机最初是由美国人发明的 美国人为了能够让计算机识别英文字符
    	ASCII码:里面记录了英文字符与数字的对应关系
            用一个字节来是对应关系
            	"""
            		所有的英文字符和符号加起来其实不超过127
            		之所以使用八位是为了后续发现新的语言
            	"""
                必须记住的对应关系有以下两组
    				A-Z:65-90
                 	 a-z:97-122
# 2.群雄割据
	中国人
    	为了能够让计算机识别中文 我们需要发明另外一套编码表
        	GBK码:记录了英文中文与数字的对应关系
                对于英文还是使用一个字节
                对应中文使用两个字节甚至更多字节
                	"""两个字节其实也不够表示出所有的中文
                		遇到生僻字可能需要更多位来表示
                	"""
    日本人
    	为了能够让计算机识别日文 也需要发明一套编码表
			shift_JIS码:记录了日文英文与数字的对应关系
    韩国人
    	为了能够让计算机识别韩文 也需要发明一套编码表
			Euc_kr码:记录了韩文英文与数字的对应关系
# 3.天下一统
	为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一
  		unicode(万国码) 
        	统一使用两个及以上字符记录字符与数字的对应关系
         utf8(万国码的优化版本)
        	将英文还是用一个字节存储
            将中文使用三个字节或更多字节存储
'''现在默认使用的编码是utf8'''

字符编码实操

1.如何解决文件乱码的情况
	文件当初以什么编码编的 打开的时候就以什么编码解
 
2.python解释器版本不同带来的编码差异
	python2.X内部使用的编码默认是ASCII
   		# 文件头
        	coding:utf8
         # 在python2中定义字符串前面要加一个小u
             s = 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.关闭文件
        
"""
文件路径
	相对路径与绝对路径
	路径中出现了字母与斜杠的组合产生了特殊含义如何取消
		在路径字符串前面加一个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())
"""以后代码操作文件 推荐使用with语法"""

文件读写模式

"""
补全语法结构 没有实际含义
	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   只追加模式(追加内容)

作业

1.整理今日内容及博客
2.练习员工管理系统
3.自我探索a模式特点并预习明日内容
	https://blog.sholdboyedu.com/?p=3336

大作业

"""
目前仅用于学习练习使用 内部存在很多不合理的地方不要钻牛角尖
"""
# 2.定义一个空列表 用于存放用户字典数据
user_data_list = []
# 1.代码运行起来之后 可以循环提示用户有哪些功能编号可以选择
# 2.查看指定用户数据(格式化输出美化一下)
# 3.修改用户的薪资的待遇(一通百通) 修改用户名 年龄
# 4.查看所有用户数据(for循环展示)
while True:
    print("""
1.添加用户
2.查看用户
3.删除用户
4.修改用户
5.退出系统
    """)
    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["salary"] = salary
            # 8.添加到用户列表中
            user_data_list.append(tmp_dict)
            # 9.提示用户添加成功
            print('用户:%s添加成功' % name)
    elif choice == '2':  # 查找用户
        lookuser_id = input('输入你的编号').strip()
        for user_data_dict in user_data_list:
            # lookuser_id = input('输入你的编号')
            if lookuser_id == user_data_dict['user_id']:
                print(user_data_dict)
            else:
                print('没有该用户')
    elif choice == '3':  # 删除用户
        deluser_id = input('输入你要删除的编号').strip()
        for user_data_dict in user_data_list:
            if user_data_dict['user_id'] == deluser_id:
                del user_data_dict['user_id']
                print('已经删除该用户')
            else:
                print('没有该用户')
        print('已经删除用户功能')
    elif choice == '4':  # 修改用户
        change_user_id = input('输入你要修改的编号').strip()
        for user_data_dict in user_data_list:
            if user_data_dict['user_id'] == change_user_id:
                print(user_data_dict)
                user_data_dict["user_id"] = input("输入修改之后的编号:")
                user_data_dict["name"] = input("输入修改之后的名字:")
                user_data_dict["age"] = input("输入修改之后的年龄:")
                user_data_dict["salary"] = input("输入修改之后的薪资:")
            else:
                pass
    elif choice == '5':
        print('退出系统功能')
        break
    else:
        print('很抱歉 暂时没有该功能选项')

posted @ 2021-11-10 19:06  弑悟  阅读(25)  评论(0)    收藏  举报