实验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)

运行测试截图:

 

posted @ 2023-06-06 15:15  Greeeeen  阅读(19)  评论(0)    收藏  举报