实验5 文件应用编程
实验任务6
task_6.py
程序源码:
1 with open ('data6.csv','r',encoding='gbk') as f: 2 data=f.readlines() 3 4 data.remove('原始数据\n') 5 data1=[] 6 for i in data: 7 if i[-1]=='\n': 8 i=i[:-1] 9 data1.append(float(i)) 10 print('原始数据:') 11 print(data1) 12 13 data2=[round(i+0.2) for i in data1] 14 print('四舍五入后数据:') 15 print(data2) 16 17 with open('data6_processed.csv','w',encoding='gbk') as f: 18 f.write('原始数据,四舍五入后数据\n') 19 for i in range(len(data2)): 20 f.write(str(data1[i])+','+str(data2[i])+'\n')
运行测试截图:


实验任务7
task_7.py
程序源码:
1 with open('data7.csv','r',encoding='gbk') as f: 2 data=f.readlines() 3 4 data1=[i.strip('\n').split(',') for i in data] 5 data1.remove(data1[0]) 6 7 data_acting=[] 8 data_music=[] 9 for i in data1: 10 if i[2]=='Acting': 11 data_acting.append(i) 12 elif i[2]=='Music': 13 data_music.append(i) 14 15 data2=sorted(data_acting,key=lambda x:x[3],reverse=True) 16 data3=sorted(data_music,key=lambda x:x[3],reverse=True) 17 data4=data2+data3 18 19 with open('data7_processed.csv','w',encoding='gbk') as f: 20 f.write('学号,姓名,专业,分数\n') 21 for i in range(len(data4)): 22 f.write(','.join(data4[i])+'\n')
运行测试截图:

实验任务8
task_8.py
程序源码:
1 with open('hamlet.txt','r',encoding='gbk') as f: 2 data=f.read() 3 lines=len(data.splitlines()) 4 words=len(data.split()) 5 strings=len(data) 6 blanks=data.count(' ') 7 8 print('hamlet.txt粗略统计:') 9 print(f'行数:{lines}') 10 print(f'单词数:{words}') 11 print(f'字符数:{strings}') 12 print(f'空格数:{blanks}') 13 14 with open('hamlet.txt','r',encoding='gbk') as f: 15 text=f.readlines() 16 17 for i in range(len(text)): 18 text[i]=str(i+1)+' '+text[i] 19 20 with open('hamlet_with_line_number.txt','w',encoding='gbk')as f: 21 f.writelines(text)
运行测试截图:


实验任务9
task_9.py
程序源码:
1 def is_valid(id): 2 if len(list(id)) != 18: 3 return False 4 elif str(id).isnumeric() or (list(id)[-1]=='X' and str(id)[:-1].isnumeric()): 5 return True 6 else: 7 return False 8 9 10 with open('data9_id.txt','r',encoding='UTF-8') as f: 11 data=f.readlines() 12 13 data.remove(data[0]) 14 data0=[i.strip('\n').split(',') for i in data] 15 16 data1=[] 17 for i in data0: 18 if is_valid(i[1])==True: 19 i[1]=i[1][6:14] 20 data1.append(i) 21 22 import datetime 23 t=datetime.datetime.now() 24 y=t.strftime('%Y%m%d') 25 for i in data1: 26 i.append(str(int(y)-int(i[1][0:8]))) 27 data2=sorted(data1,key=lambda x:x[2],reverse=True) 28 29 print('姓名, 出生日期, 年龄') 30 for i in data2: 31 i[1]=i[1][0:4]+'-'+i[1][4:6]+'-'+i[1][6:8] 32 i[2]=i[2][0:2] 33 print(', '.join(i))
运行测试截图:

实验任务10
task_10_1.py
程序源码:
1 import random 2 import datetime 3 4 with open('data10_stu.txt','r',encoding='UTF-8')as f: 5 data=f.readlines() 6 data1=[i.strip('\n').split('\t') for i in data] 7 8 n=int(input('输入随机抽点人数:')) 9 data2=random.sample(data1,n) 10 for i in data2: 11 print(' '.join(i)) 12 13 t=datetime.datetime.now() 14 d=t.strftime('%Y%m%d') 15 16 with open('{}.txt'.format(d),'w',encoding='UTF-8')as f: 17 for i in data2: 18 i[0]+='\t' 19 i[1]+='\t' 20 i[2]+='\n' 21 f.writelines(i)
运行测试截图:


task_10_2.py
程序源码:
1 import random 2 import datetime 3 4 print('*'*20,'抽点开始','*'*20) 5 with open('data10_stu.txt','r',encoding='UTF-8')as f: 6 data=f.readlines() 7 data1=[i.strip('\n').split('\t') for i in data] 8 9 t=datetime.datetime.now() 10 d=t.strftime('%Y%m%d') 11 12 n=int(input('输入随机抽点人数:')) 13 x=0 14 while n!=0: 15 data2=random.sample(data1,n) 16 for i in data2: 17 print(' '.join(i)) 18 data1.remove(i) 19 if x==1: 20 with open('{}.txt'.format(d),'w',encoding='UTF-8') as f: 21 for i in data2: 22 i[0] += '\t' 23 i[1] += '\t' 24 i[2] += '\n' 25 f.writelines(i) 26 else: 27 with open('{}.txt'.format(d), 'a', encoding='UTF-8') as f: 28 for i in data2: 29 i[0] += '\t' 30 i[1] += '\t' 31 i[2] += '\n' 32 f.writelines(i) 33 34 n = int(input('输入随机抽点人数:')) 35 print('*'*20,'抽点结束','*'*20)
运行测试截图:



浙公网安备 33010602011771号