Python小甲鱼学习笔记31-35

31永久存储pickle模块

一、pickle模块
0、pickle的实质是什么?
  a.将对象数据以二进制形式保存在文件中
  b.将对象数据以二进制形式从文件中读取
  输入输出二进制流
1、使用pickle的什么方法存储数据?
  pickle.dump(my_list , file_pickle)
2、使用pickle的什么方法读取数据?
   my_list2 = pickle.load(file_pickle)
3、使用pickle能不能保存为”*.txt”类型的文件?
  可以,后缀名可以任意指定,只不过用文本编辑器打开时,是乱码。

二、课后题
0、编写一个程序,这次要求使用pickle将文件( record.txt (1.1 KB, 下载次数: 3988) )里的对话按照以下要求腌制成不同文件(没错,是第29讲的内容小改,考考你自己能写出来吗?):
  解题思路:
  小甲鱼的对话单独保存为boy_.txt的文件(去掉“小甲鱼:”)
  小客服的对话单独保存为girl_.txt的文件(去掉“小客服:”)
  文件中总共有三段对话,分别保存为boy_1.txt, girl_1.txt,boy_2.txt, girl_2.txt, boy_3.txt, gril_3.txt共6个文件(提示:文件中不同的对话间已经使用“==========”分割)

def fun2(count,boy,girl) :
    name_boy = '31作业0boy_' + str(count) + '.pkl'
    name_girl = '31作业0girl_' + str(count) + '.pkl'
    
    file_boy = open(name_boy,'wb')
    file_girl = open(name_girl,'wb')

    pickle.dump(boy,file_boy)
    pickle.dump(girl,file_girl)

    file_boy.close()
    file_girl.close()

import pickle

def fun1() :
    file = open('31作业0record.txt','r')
    boy = []
    girl = []
    count = 1

    for i in file :
        if i[:6] != '======' :
            #去掉小甲鱼小客服
            (name,say) = i.split(':',1)
            if name == '小甲鱼':
                boy.append(say)
            else :
                girl.append(say)

        else :
            #fenwenjian
            fun2(count,boy,girl)
            boy = []
            girl = []
            count += 1

    fun2(count,boy,girl)

    file.close()

32异常(exception)处理0

一、异常类型
  见标准异常总结

33异常(exception)处理1

一、try-except 语句
1.格式:

try :
	被检测的代码(检测范围)
except Exception [as reason] :
	出现异常(Exception)时的处理代码

2.语句执行
  try语句中的错误一旦被发现,检测范围内后面的语句不会被执行。

3.搭配
  一个try语句可以和多个except语句搭配,except可以和多种异常类型搭配,处理多种异常。

try :
	被检测的代码(检测范围)
except Exception1 [as reason] :
	出现异常(Exception1)时的处理代码
except Exception2 [as reason] :
	出现异常(Exception2)时的处理代码

4.统一处理多类异常
  只要出现的括号里的异常,都会执行except后的异常处理程序。

try :
	被检测的代码(检测范围)
except (Exception1, Exception2, Exception3…) as e :
	出现异常(Exception1,Exception2,Exception3)时的处理代码

二、try-finally 语句
1.格式:

try:
  检测范围
except 异常类型 [as e]:
  对应异常的处理程序
finally:
  无论如何都会执行的代码

三、raise语句
1.作用
可以手动引出异常。

2.格式:

raise 异常类型('自己输入的注释')

四、课后题
0、还记得我们额小游戏吗?只要用户输入非整形数据,程序立刻就会蹦出不和谐的异常信息然后奔溃。请使用刚学的异常处理方法修改以下程序,提高用户体验。

import random  
secret = random.randint(1,10)  
i = 3
while True:
    try :
        temp = input("猜一猜Allen心中的数字:")  
        number = int(temp)
        break
    except ValueError :
        print('必须输入数字:')
        
while (i > 0):
    if(number == secret):
        print("哇,你是Allen肚里的蛔虫吗?")
        print("奖励一个香吻!")
        break
    else:
        if number > secret:
            print("大了大了!")
        else:
            print("小了小了!")
        if i > 1:
        	while True:
        		try :
            		temp = input("哎呀!再猜猜看:")  
           			number = int(temp)
           			break
    			except ValueError :
        			print('必须输入数字:')  
    i = i -1
print("游戏结束,不玩啦!")

1、input()函数有可能产生两类异常:EOFError(文件末尾endoffile,当用户按下组合键Ctrl+d产生)和KeyboardInterrupt(取消输入,当用户按下组合键Ctrl+c产生),再次修改上边的代码,捕获处理input()的两类异常,提高用户体验。

import random  
secret = random.randint(1,10)  
i = 3
while True :
    try :
        temp = input("猜一猜Allen心中的数字:")  
        number = int(temp)
        break
    except (ValueError, EOFError, KeyboardInterrupt) as reason:
        print('类型错误:' + str(reason))
        
while (i > 0):
    if
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值