序列化模块day16
2.什么是序列化?什么是反序列化?为什么要这样做?
序列化:把对象转换为字节序列的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。 作用:实现数据共享。把的内存中的对象状态保存到一个文件中或者数据库中
3.什么是json?使用json的好处是什么?
json是一个序列化模块,是一种数据交换格式。 可以将python数据类型---json数据格式---字符串---文件中 其他语言想要使用python的数据:文件中---字符串---json数据格式---其他语言的数据类型 好处: 01、方便于传输,较少冗余的字符 02、方便转换 03、易于阅读
4.json与pickle的区别是什么?
json是一个第三方的特殊数据格式 pickle是一个python自带的序列化模块。
5.ATM的登录与注册功能,用户数据用json数据保存。
import json
def register(): #注册功能
while True:
username=input('请输入注册的用户名:').strip()
if username.isalpha():
break
else:
print('输入的用户名不合法')
while True:
password=input('请您输入注册的密码:').strip()
re_password=input('请您再次输入注册的密码:').strip()
if password==re_password:
user_dic = {
'name':username, 'pwd': password
}
break
else:
print('您输入的密码不一致')
with open(f'{username}.json', 'w', encoding='utf-8') as f:
json.dump(user_dic, f)
return username
def login(): #登录功能
name1=register() #调用注册函数并接受返回的username
name = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
if name==name1: #判断登录时名字文件有没有
with open(f'{name}.json', 'r', encoding='utf-8') as f:
user_dic1= json.load(f)
if password==user_dic1['pwd']:
print('登录成功')
else:
print('登录失败')
else:
print('用户名不存在')
login()
6.写一个扑克牌随机发牌游戏:
- 使用 具名元组 创建54张扑克牌
- 创建一张扑克牌模板
from collections import namedtuple
card = namedtuple('扑克牌', ['color', 'number'])
black_K = card('♠', 'K')
print(black_K) # 扑克牌(color='♠', number='K')
print(black_K.color) # ♠
print(black_K.number) # K
- 将所有扑克牌放入一个列表中,然后打乱顺序,然后再倒序发牌,从列表中抽出17张牌,分别给3个用户,实现斗地主发牌功能。
from collections import namedtuple
import random
card_list1 = []
color_list = ['红桃', '黑桃', '方块', '梅花']
card = namedtuple('扑克牌', ['color', 'number'])#此时就是扑克牌对象
for i in color_list:#获得4种颜色
for j in range(1, 14):#获得1-13个数字
one_card = card(i, j)
card_list1.append(one_card)
card1 = namedtuple('扑克牌', ['color', 'number'])
red_dw = card1('黑色', '小王')
red_xw = card1('红色', '大王')
card_list1.append(red_dw)
card_list1.append(red_dw)
print(card_list1)
random.shuffle(card_list1)
user1 = []
user2 = []
user3 = []
for i in range(-1, -18, -1):
if (-i) % 3 == 1:
user1.append(card_list1[i])
elif (-i)%3 == 2:
user2.append(card_list1[i])
else:
user3.append(card_list1[i])
print('发牌结束')
print(user1)
print(user2)
print(user3)
7.使用openpyxl模块,创建一个Excel表格,并且批量给(A1—Z1)——(A100—Z100)插入数据。 - 数据任意插
- 格式化拼接的字符串可以采用chr
```python
from openpyxl import Workbook
wb_obj=Workbook()
wb1=wb_obj.create_sheet('表格1')
for k in range(65,90):
n = 1 #为什么不能把n=1拿到外面
res=chr(k)
for line in range(100):
wb1[f'{res}{n}']= line+1
n+=1
wb_obj.save('批量插入数据7889.xlsx')
。

浙公网安备 33010602011771号