序列化模块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')
 
 

 

posted @ 2019-11-18 23:06  薛定谔的猫66  阅读(243)  评论(0)    收藏  举报