实验任务6:
实验源码:
with open('data6.csv','r',encoding='gbk') as f: data = f.readlines() data1=[str(eval(data[i])) for i in range(1,len(data))] data2=[str(int(eval(data[i])+0.5)) for i in range(1,len(data))] info=[[data1[i],data2[i]] for i in range(len(data1)) ] title = ['原始数据','四舍五入后数据'] with open('data6_processed.csv', 'w', encoding = 'gbk') as f: f.write(','.join(title) + '\n') # 写入标题行 for item in info: f.write(','.join(item) + '\n') ls1 = [] ls2 = [] with open('data6_processed.csv', 'r', encoding = 'gbk') as f: data3=f.readlines() for i in range(1,len(data3)): data4=data3[i].split(',') ls1.append(data4[0].strip()) ls2.append(data4[1].strip()) print('原始数据') print(ls1) print('四舍五入后数据') print(ls2)
实验运行截图:
实验任务7:
实验源码:
with open('data7.csv','r',encoding='gbk') as f: data1 = f.read().split('\n') del data1[0] lsta = [] lstm = [] for i in data1: lst1 = i.split(',') if lst1[2] == 'Acting': lsta.append(lst1) else:lstm.append(lst1) lstm.sort(key=lambda x:x[-1],reverse = True) lsta.sort(key=lambda x:x[-1],reverse = True) info = lsta + lstm title = ['学号','姓名','专业','分数'] with open('data7_processed.csv','w',encoding='gbk') as f: f.write(','.join(title)+'\n') for items in info: f.write(','.join(items)+'\n') print('{:<10}'.format(title[0]),'{:<10}'.format(title[1]),'{:<10}'.format(title[2]),'{:<15}'.format(title[3])) for i in info: print('{:<10}'.format(i[0]),'{:<10}'.format(i[1]),'{:<10}'.format(i[2]),'{:<15}'.format(i[3]))
实验运行截图:
实验任务8:
实验源码:
with open(r'C:\Users\28678\Downloads\实验5数据文件\hamlet.txt','r') as f: data=f.read() print('hamlet.txt粗略统计:') print(f'行数:{len(data.splitlines())}') print(f'单词数:{len(data.split())}') print(f'字符数:{len(data)}') print(f'空格数:{data.count(" ")}') data1=data.splitlines() data2=[] for i in range(len(data1)): data2.append(f'{i+1} '+data1[i]+'\n') with open(r'C:\Users\28678\Downloads\实验5数据文件\hamlet_with_line_number.txt', 'w') as f: f.writelines(data2)
实验运行截图:
实验任务9:
实验源码:
def is_valid(sfz): if len(sfz) != 18: return False elif (sfz[:-1].isnumeric() and sfz[-1] == 'X') or sfz.isnumeric(): return True else:return False with open('data9_id.txt','r',encoding='utf-8') as f: data = f.read().split('\n') del data[0] data2 = [] data3 =[] print('姓名,出生日期,年龄') for i in data: lst = i.split(',') data2.append(lst) lst2 = [] for i in data2: if is_valid(i[1]) == True: name = i[0] btd = i[1][6:14] age = str(2023 - int(i[1][6:10])) lst2.append([name,btd,age]) lst2.sort(key=lambda x:x[2],reverse=True) for i in lst2: print(i[0],end=',') print(f'{i[1][:4]}-{i[1][4:6]}-{i[1][6:8]}',end=',') print(i[2])
实验运行截图:
实验任务10:
task_1:
实验源码:
with open('data10_stu.txt','r',encoding='utf-8') as f: data = f.readlines() print('{:*^40}'.format('抽点开始')) n = int(input('输入随机抽点人数:')) import random x = [] x2 = '' counts = 0 while counts < n: new = random.randint(0, len(data) - 1) if new in x: new = random.randint(0, len(data) - 1) else: counts +=1 x.append(new) sum1 = 0 for i in range(n): print(data[x[i]]) x2 += data[x[i]] sum1 += n with open('20230602.txt','w',encoding='utf-8') as f: f.writelines(x2)
实验运行截图:
task_2:
实验源码:
with open('data10_stu.txt','r',encoding='utf-8') as f: data = f.readlines() print('{:*^40}'.format('抽点开始')) n = int(input('输入随机抽点人数:')) import random x = [] sum1 = 0 x2 = '' while n != 0: counts = 0 while counts < n: new = random.randint(0, len(data) - 1) if new in x: new = random.randint(0, len(data) - 1) else: counts +=1 x.append(new) for i in range(sum1,sum1+n): print(data[x[i]]) x2 += data[x[i]] sum1 += n n = int(input('输入随机抽点人数:')) with open('20230602.txt','w',encoding='utf-8') as f: f.writelines(x2) print('{:*^40}'.format('抽点结束'))
实验运行截图:
二、实验总结:
1. 能够在代码中正确表示文件的路径 2. 能灵活、正确使用python内置的文件读写基础操作:打开/关闭、读写、遍历,会读写csv格式文件 3. 复习字符串、列表、lambda匿名函数和sorted函数的用法,以及不同类型之间相互转换 4. 熟悉random模块、datetime模块 5. 针对具体问题场景,能够用文件和组合数据类型编程解决应用问题 标签:文件,encoding,open,编程,len,实验,print,data From: https://www.cnblogs.com/juiceup26/p/17458070.html