实验5 文件应用编程
实验任务6
task6.py
实验源码:
1 with open('data6.csv','r',encoding='gbk')as f: 2 data=list(f.readlines()) 3 data=[i.strip('\n') for i in data ] 4 5 import decimal 6 decimal.getcontext().rounding='ROUND_HALF_UP' 7 title=[data[0],'四舍五入后的数据'] 8 data_new=[] 9 data_o=[] 10 for i in data: 11 if not i.isalpha() is True: 12 data_o.append(eval(i)) 13 print('原始数据:') 14 print(data_o) 15 for i in data: 16 if not i.isalpha() is True: 17 data_new.append([i]) 18 19 data_=[] 20 for i in data: 21 if not i.isalpha() is True: 22 index=data.index(i)-1 23 i=eval(i) 24 if i-int(i)>=0.5: 25 i=int(i)+1 26 data_new[index].append(str(i)) 27 data_.append(i) 28 else: 29 i=int(i) 30 data_new[index].append(str(i)) 31 data_.append(i) 32 print('四舍五入后的数据:') 33 print(data_) 34 import csv 35 with open('data6_after.csv','w',encoding='gbk',newline='') as f : 36 f_writer=csv.writer(f) 37 f_writer.writerow(title) 38 f_writer.writerows(data_new)
实验结果:


实验任务7
task7.py
实验源码:
1 with open('data7.csv','r',encoding='gbk')as f: 2 title=[f.readline()] 3 data=f.readlines() 4 def getscore(ls): 5 return ls[len(ls)-1] 6 7 data=[line.strip('\n').split(',')for line in data] 8 9 data.sort(key=lambda x:(x[2],-int(x[3]))) 10 11 12 with open('data7_processed.csv', 'w', encoding = 'gbk') as f: 13 f.write(','.join(title)) 14 for item in data: 15 f.write(','.join(item) + '\n') 16 title=title[0].strip('\n').split(',') 17 18 print('{:<10}'.format(title[0]),'{:<10}'.format(title[1]),'{:<10}'.format(title[2]),'{:<15}'.format(title[3])) 19 for i in data: 20 print('{:<10}'.format(i[0]), '{:<10}'.format(i[1]), '{:<10}'.format(i[2]), '{:<10}'.format(i[3]))
实验结果:


实验任务8
task8.py
实验源码:
1 with open('hamlet.txt','r',encoding='utf-8')as f: 2 data=f.readlines() 3 print('行数:',len(data)) 4 5 x='' 6 for line in data: 7 x+=line 8 alpha=0 9 b=0 10 for i in x: 11 if i.isalpha(): 12 alpha+=1 13 else: 14 b+=1 15 16 word=len(x.split()) 17 print('字符数:',alpha+b) 18 print('单词数:',word) 19 print('空格数:',x.count(' ')) 20 data = [line.strip('\n').split(',') for line in data] 21 with open('hamlet_with_line_number','w',encoding='utf-8') as f: 22 for i,j in enumerate(data,start=1): 23 j=j[0] 24 f.write("{}{}{}".format(i,' ',j)+'\n')
实验结果:


实验任务9
task9.py
实验源码:
1 def is_valid(sfz): 2 if len(sfz) != 18: 3 return False 4 elif (sfz[:-1].isnumeric() and sfz[-1] == 'X') or sfz.isnumeric(): 5 return True 6 else:return False 7 8 9 with open('data9_id.txt','r',encoding='utf-8') as f: 10 data = f.read().split('\n') 11 del data[0] 12 data2 = [] 13 data3 =[] 14 print('姓名 出生日期 年龄') 15 for i in data: 16 lst = i.split(',') 17 data2.append(lst) 18 lst2 = [] 19 for i in data2: 20 if is_valid(i[1]) == True: 21 name = i[0] 22 btd = i[1][6:14] 23 age = str(2023 - int(i[1][6:10])) 24 lst2.append([name,btd,age]) 25 lst2.sort(key=lambda x:x[2],reverse=True) 26 for i in lst2: 27 print(i[0],end=' ') 28 print(f'{i[1][:4]}-{i[1][4:6]}-{i[1][6:8]}',end=' ') 29 print(i[2])
实验结果:

实验任务10
task10_1.py
实验源码:
1 import datetime 2 t = datetime.datetime.now() 3 filename = t.strftime('%Y%m%d') + '.txt' 4 n=eval(input('输入随机抽取人数:')) 5 with open('data10_stu.txt', 'r', encoding = 'utf-8') as f: 6 data=f.readlines() 7 8 9 def random_selection(n): 10 import random 11 demo = random.sample(data, n) 12 return demo 13 x=random_selection(n) 14 for i in x : 15 print(i) 16 17 18 with open(filename,'w',encoding='utf-8')as f: 19 f.writelines(x)
实验结果:


task10_2.py
实验源码:
1 import datetime 2 t = datetime.datetime.now() 3 filename = t.strftime('%Y%m%d') + '.txt' 4 start='抽取开始' 5 print(start.center(50,'*')) 6 with open('data10_stu.txt', 'r', encoding='utf-8') as f: 7 data = f.readlines() 8 9 def random_selection(n): 10 import random 11 demo = random.sample(data, n) 12 return demo 13 selection=set() 14 numbers=[] 15 16 while True: 17 n = eval(input('输入随机抽点人数:')) 18 if n != 0: 19 x=random_selection(n) 20 for i in x: 21 print(i) 22 data.remove(i) 23 with open(filename,'a',encoding='utf-8') as f : 24 f.writelines(i) 25 else: 26 print('抽取结束'.center(50,'*')) 27 break
实验结果:


 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号