python-9days

发布时间 2023-09-01 15:46:15作者: 拆尼斯、帕丁顿

1. 统计一个字符串中得单词个数
s1 = 'kevin say hello hello hello sb sb sb jerry jerry handsome handsome handsome'

# 返回的结果:{'单词':3}

# 统计单词的个数
s1 = 'kevin say hello hello hello sb sb sb jerry jerry handsome handsome handsome sb sb sb jerry jerry handsome handsome handsome'

## 写任何的功能都不要上来就写代码,写代码一定是最后的操作
"""
1. 先分析我们需要做哪些功能(需求分析)
2. 最后把你分析的步骤写出来:注释、笔记、文档、
3. 开发方案-------->给你一个需求,你来写一写这个需求应该怎么开发------->数据库如何设计、表结构如何设计、逻辑有哪些...
4. 功能比较少、就以注释的形式写出你的开发步骤
"""

#### 以后拿到不管什么样的数据类型,如果你能够把它转为列表形式,就已经很简单了
# 列表类型是我们最容易处理的数据类型

# 1. 先把字符串转为列表,我们可以使用切分字符串的形式,转为列表
s_list = s1.split(
' ') # ['kevin', 'say', 'hello', 'hello', 'hello', 'sb', 'sb', 'sb', 'jerry', 'jerry', 'handsome', 'handsome', 'handsome',]
print(s_list)

# 2. 定义一个空字典:用来存储返回的结果
word_dic = {} # {kevin:1, say:1}

# 3. 来循环列表:只要是列表,除了正常的取值之外,就要想到循环
for i in s_list:
# word_dic里面如果没有当前循环的这个单词,就增加一个,如果存在了,就把个数+1
if i not in word_dic:
word_dic[i] = 1 # {'kevin':1}
else:
# word_dic['kevin'] = word_dic['kevin'] + 1
word_dic[i] += 1

print(word_dic) # {'kevin': 1, 'say': 1, 'hello': 3, 'sb': 3, 'jerry': 2, 'handsome': 3}
# {'kevin': 1, 'say': 1, 'hello': 3, 'sb': 6, 'jerry': 4, 'handsome': 6}

 

s2 = 'kevinsayhellosb' # 你要知道字符串是可以支持循环的

s2 = 'kevinsayhellosb' # 你要知道字符串是可以支持循环的

# 1. 先定义一个空字典:用来存储我们统计的结果
temp_dict = {}

# 2. 循环字符串
for i in s2:
if i not in temp_dict:
temp_dict[i] = 1
else:
temp_dict[i] += 1
"""逻辑能力是可以锻炼出来的!"""
# 讲完之后你自己要去练习
print(temp_dict) # {'k': 1, 'e': 2, 'v': 1, 'i': 1, 'n': 1, 's': 2, 'a': 1, 'y': 1, 'h': 1, 'l': 2, 'o': 1, 'b': 1}

 员工管理系统:

# 1. 代码一启动如何循环打印你所具备的功能信息:展示的形式:
"""
1. 添加员工信息
2. 修改员工信息
3. 删除员工信息
4. 退出系统
"""

# 2. 让用户输入它想操作的功能编号:1 2 3 4

# 4. 定义一个变量用来存储添加的员工信息
# 字典
user_data_list = [] # 因为列表能够存放多个信息,形式:[{'user_id':1, 'name':'kevin', 'age':18}, {'user_id':1, 'name':'kevin', 'age':18}, {}, {}]
while True:
print("""
1. 添加员工信息
2. 查看员工信息
3. 删除员工信息
4. 修改员工信息
5. 退出系统
""")

# 2. 让用户输入功能编号
choice = input('请输入你要操作的功能编号:').strip()
print(choice)

# 3. 根据输入的编号来做判断具体执行哪个功能
if not choice.isdigit():
print('你能不能好好输入?')
continue
# 判断输入的数字必须在我们的功能编号范围之内
if choice == '1':
print('添加员工信息')
# 5. 开始让用户输入员工信息
user_id = input('请输入你的员工编号:').strip()

## 8. 验证输入的员工编号是否已经存在------》 难点
for user_data in user_data_list:
# user_data:{'user_id':1, 'name':'kevin', 'age':18}\
if user_data.get('user_id') == user_id:
print('你输入的员工编号已经存在了,请从新输入')
break
else:
name = input('请输入你的姓名').strip()
age = input('请输入你的年龄').strip()
gender = input('请输入你的性别').strip()
salary = input('请输入你的薪资').strip()

## 6. 把用户输入的信息组装成字典信息
# {'user_id':1, 'name':'kevin', 'age':18}
temp_user_dict = {}
temp_user_dict['user_id'] = user_id # temp_user_dict = {'user_id':1}
temp_user_dict['name'] = name # temp_user_dict = {'user_id':1, 'name':''}
temp_user_dict['age'] = age # temp_user_dict = {'user_id':1, 'name':''}
temp_user_dict['gender'] = gender # temp_user_dict = {'user_id':1, 'name':''}
temp_user_dict['salary'] = salary # temp_user_dict = {'user_id':1, 'name':''}

## 7. 把单个员工信息添加到大列表中
user_data_list.append(temp_user_dict)
print('%s添加成功' % name)
elif choice == '2':
print('查看所有的员工信息')
print(user_data_list)
elif choice == '3':
print('删除员工信息')
elif choice == '4':
print('修改员工信息')
elif choice == '5':
print('退出系统')
else:
print('兄弟,咱好好输入好吗')

 字符编码储备知识:

字符串类型、文本文件的内容都是由字符组成的,'但凡涉及到字符的存取,都需要考虑字符编码的问题'

# 1、软件运行前,软件的代码及其相关数据都是存放于硬盘中的

# 2、任何软件的启动都是将数据从硬盘中读入内存,然后cpu从内存中取出指令并执行

# 3、软件运行过程中产生的数据最先都是存放于内存中的,若想永久保存软件产生的数据,则需要将数据由内存写入硬盘


文本编辑器读取文件内容的流程
阶段1、启动一个文件编辑器(文本编辑器如nodepad++,pycharm,word)

阶段2、文件编辑器会将文件内容从硬盘读入内存

阶段3、文本编辑器会将刚刚读入内存中的内容显示到屏幕上

字符编码介绍:

# 字符编码它的前提:它只跟字符类型和文本类型相关,跟视频文件、音频文件、图片文件等无关
计算机内部只能够认识二进制01,计算机之所以能够认识各种各样的字符,那是因为计算机的内部维护着一张字符编码表
字符编码表:一些字符和数字之间的对应关系!

字符编码的发展史:

1. 计算机最开始是美国人研究的,他们想让计算机能够识别英文字符
内部维护的是一张ASCII码表:
它的内部是英文字符和数字之间的对应关系它统一使用的是一个字节保存一个字符:一个字节88位二进制能够表示多少个字符?2 ** 8 ==256        
 为什么使用8位来表示?
方便后续添加字符
    记忆:
     A-Z: 65-96
     a-z: 97-
        0-9: 48-
2.  中国人也想使用计算机,但是ASCII码表内部没有中文字符
    GBK码表:它的内部记录了英文、中文和数字之间的对应关系
        # 它使用两个字节及以上自己来保存中文字符
     2 ** 16 == 65535
    日本人就为了让计算机识别他们的日文字符,也研究了一套字符编码表
       Shift_JIS表:只有日文字符、英文字符与数字的一一对应关系
     韩国人也向让计算机能够识别韩文字符,所以也研究了一套字符编码表
          Euc-kr表:只有韩文字符、英文字符与数字的一一对应关系
3.    为了让全世界的人都能够统一使用计算机识别全世界的语言,把字符编码表统一了
    unicode(万国码)
        # 统一使用的是2个字节来保存字符
        如果是英文字符----》1个字节保存一个英文字符------》万国码中使用2个字节保存英文字符----
        就造成了空间的浪费      
   优化
   从内存中得万国码到硬盘中得utf-8字符
    utf-8就是目前大家统一使用的一种编码:
        1. 它统一使用一个字节来保存英文字符
        2. 统一使用三个字节来保存中文字符
        """在utf-8编码表中,一个汉字使用的是三个字节!!!"""
    utf系列:
        utf-8
        utf-16
        utf-...
        utf8mb4: 它能够存储表情

字符编码的实战:

1. 如何解决乱码问题?
你在写文件的时候使用的是什么编码,那么你打开的时候就使用对应编码解码就行

2. Python解释器版本不同代码的编码问题
"""
在python2中使用的编码表不是utf-8,而是ASCII码表
# coding:utf-8

"""它使用的是ASCII码表"""
# 在Python2 中如何定义中文字符
s = u'你好'
print s
"""
3. 如何编码和解码
编码:把人类能够读懂的字符转化为计算机能够识别的数字(二进制)
解码:把计算机能够读懂的数字转化为人类能够读懂的字符
# 编码
# res = '趁年轻,学技能,养活自己'
res = '趁年轻'
# print(res.encode('utf-8')) # b'\xe8\xb6\x81\xe5\xb9\xb4\xe8\xbd\xbb' bytes


# b'\xe8\xb6\x81\xe5\xb9\xb4\xe8\xbd\xbb'
# 解码
res1 = res.encode('utf-8')
print(res1.decode('utf-8')) # 趁年轻

"""如果遇到解码的时候,你不指定使用什么编码进行解码,你就试:utf-8 gbk"""

# 扩展
res2 = 'hello world'
print(res2.encode('utf-8'))
# print(b'hello world')