Python第四次实验作业

实验要求

实验1:将字符串写入文本文件,然后再读取并输出:
实验2:假设已有一个文本文件sample.txt,将其中第13、14两个字符修改为测试。
实验3、假设文件data.txt中有若干个整数,所有整数之间使用英文逗号分隔,编写程序读写所有整数,将其按升序排序后再写入文本文件data_asc.txt中。
实验4、统计文本文件中最长行的长度和该行的内容。
实验5、根据当前时间创建文件
在指定目录中,批量创建3个文件,文件名为%Y%m%d%H%M%S格式的当前时间(精确到秒)。例如,创建文件的时间为2019年4月18日9点18分38秒,则该文件的文件名为20190418091838.txt。为了防止出现重名的文件,在每建立一个文件后,让线程休眠一秒。
实验六、使用raise语句抛出异常。模拟幼儿园分苹果(每人至少分一个苹果)。输入苹果数量及小朋友数量。编程实现当输入的苹果数量小于小朋友的数量时,应用raise语句抛出一个ValueError异常。并进行异常处理。

代码实现

实验一

file=open("new.txt","w+")#使用open函数,参数一是文件名,参数二是执行模式,w+代表可读可写,若运行目录下无指定文件则自动新建文件
ls="hello world"
file.write(ls)#file对象的函数之一,用于写入文档字符串,返回字符串长度
file.close()#编辑好保存文件
file=open("new.txt","r")#重新打开,r代表只读模式
#删除以上最后两步程序正常编译运行,但输出为空,思考一下原因?
str=file.read()#调用file.read()函数读出文档内容并赋值给变量str
print(str)#s输出
file.close()#关闭

实验二

在这file=open("simple.txt","w+")
ls='''Always keep an exprising mind and take action'''
file.write(ls)
file.close()
file=open("simple.txt","r")
str1=file.read()
l=list(eval("str1"))#把序列str1转换为列表,否则无法给序列特定位置赋值。
#赋值
l[13]="测试"
l[14]='测试'
file.close()
d=str(l)#写入文本文件,把列表转换为字符串。
file=open("simple.txt","w")
file.write(d)
file.close()
#重新读取文档内容并输出
file=open("simple.txt","r")
s=file.read()
print(s)
file.close()
#以上程序运用了open函数的w和r这两种执行模式,索引文档读出的具体内容,必须先转换为列表,写入文档必须以字符串的形式,所以用到了字符串和列表的相互转换。里插入代码片

实验三

import re #定义正则表达式模式
ls='hello 9,7,8,2,6'
k=[] #定义一个空列表
k=re.findall("[\d]+",ls) #通过正则表达式匹配列表ls的数字并赋值给列表k。
#使用冒泡排序算法对序列k重新排序并输出
for i in range(len(k)):
    for j in range(0,len(k)-i-1):
        if k[j]>k[j+1]:
            k[j],k[j+1]=k[j+1],k[j]
print(k)
#正则表达式匹配re.findall返回出字符串里所有匹配成功的子字符串;re.match从开始处匹配字符串,若开始匹配不成功,则返回None,即使后面有匹配成功的;re.search匹配字符串只返回第一个匹配成功的子字符串。

实验四

f=open("new.txt","w+")
ls='''Always keep an enterprising mind and take action.
Why are you working so hard?
Because what I want is expensive...
I want to be far away...
The people I like are excellent...
'''
f.write(ls)
f.close()
#以上两步初始化变量longest和k
longest = 0
k=0
f = open("new.txt","r")
allLines = [line.strip() for line in f.readlines()]#f.readlines读取所有行返回列表形式赋值给line,并用strip函数清除空白符
f.close()
#遍历文档内容,进行比较每行长度比较然后输出
for line in allLines:
    linelen = len(line) #赋值字符串长度
    if linelen>longest:
        longest = linelen
        k=line #记录linelen字符串内容
print(longest)  #输出字符串长度
print(k) #输出内容
f.close()

实验五

import datetime #设置datetime块
for i in range(3):#循环
    path="D:\\py_pro\\ATM_图形化界面\\"#定义指定目录路径,并在\后再加一个\,这是用了\字符转义的功能,最后两个\\必须要有
    k=datetime.datetime.now().strftime('%Y%m%d%H%M%S')+'.txt' #使用time.strftime()函数接受时间元祖并返回字符串形式赋值给k,datetime.datetime.now()程序运行当下时间,就是time。
    txt = open(path+str(k), "w")#指定目录下创建文档
    import  time #time块
    time.sleep(1) #同一目录下文件命名相同会出现编译错误,所以在每建立一个文件后,调用time.sleep()让线程休眠一秒。

实验六

class ValueError(Exception):
    def __init__(self,m,n):
        self.m=m
        self.n=n
    def __int__(self):
        print(self.m+"小于"+self.n)
#以上自定义异常类型
def function():
    m=int(input('<<<'))#m为苹果的个数
    n=int(input('<<<'))#n为人数
    try:
        if m<n:
            raise ValueError(m,n)#使用raise手动抛出异常,raise的唯一参数必须是异常对象或exception的子类。
        else:
            print("%d个小朋友每个人分得苹果个数是%d"%(n,m/n))
#捕捉异常
    except ValueError:
        print('m和n的大小关系应设置为m>=n')
        raise
function()#执行函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值