实验五
task.6
with open('data6.csv','r',encoding='gbk') as f: data1 = f.read().split('\n') del data1[0] print('原始数据:') print(data1) for i in range(len(data1)): data1[i] = float(data1[i]) data2 = [] for i in range(len(data1)): data2.append(int(data1[i]+0.5)) print('四舍五入后数据:') print(data2) title = ['原始数据','四舍五入后数据'] info = [] for i in range(len(data1)): info.append([str(data1[i]),str(data2[i])]) with open('data6_processed.csv','w',encoding='gbk') as f: f.write(','.join(title)+'\n') for item in info: f.write(','.join(item)+'\n')
截图


task.7
with open('data7.csv','r',encoding='gbk') as f: data1 = f.read().split('\n') del data1[0] lsta = [] lstm = [] for i in data1: data1.sort(key = lambda i :(i[-2],i[-1]),reverse = True) for i in data1: lst1 = i.split(',') if lst1[2] == 'Acting': lsta.append(lst1) else: lstm.append(lst1) 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]))
截图


task.8
1 with open('hamlet.txt','r') as f: 2 data = f.read() 3 print('hamlet.txt粗略统计:') 4 data1 = data.splitlines() 5 print(f'行数:{len(data1)}') 6 print(f'单词数:{len(data.split())}') 7 print(f'字符数:{len(data)}') 8 k = data.count(' ') 9 print(f'空格数:{k}') 10 11 data2=[] 12 for i in range(len(data1)): 13 data2.append(f'{i+1} '+ data1[i] + '\n')14 15 with open('hamlet_with_line_number.txt','w') as f: 16 f.writelines(data2)
截图


task.9
def is_valid(a): if len(a) != 18: return False elif (a[:-1].isnumeric() and a[-1] == 'X') or (a.isnumeric()): return True else: return False with open('data9_id.txt','r') as f: data = f.read().split('\n') del data[0] data1 = [] print('姓名,出生日期,年龄') for i in data: lst = i.split(',') data1.append(lst) lst1 = [] import datetime t = datetime.datetime.now().year for i in data1: if is_valid(i[1]) == True: name = i[0] btd = i[1][6:14] age = str(int(t)-int(i[1][6:10])) lst1.append([name,btd,age]) lst1.sort(key=lambda x:x[2],reverse=True) for i in lst1: print(i[0],end=',') print(f'{i[1][:4]}-{i[1][4:6]}-{i[1][6:8]}',end=',') print(i[2])
截图

task.10_1
with open('data10_stu.txt','r',encoding='utf-8') as f: data = f.readlines() print('{:*^40}'.format('抽点开始')) n = int(input('输入随机抽点人数:')) import random x = [] while len(set(x)) < n: x.append(random.randint(0, len(data)-1)) lst = [] for i in x: print(data[i],end = '\n') lst.append(data[i]) import datetime t = datetime.datetime.now() y = t.strftime('%Y%m%d') with open(f'{y}.txt','w',encoding='utf-8') as f: f.writelines(lst)
截图


task.10_2
with open('data10_stu.txt','r',encoding='utf-8') as f: data = f.readlines() print('{:*^40}'.format('抽点开始')) lst1 = [] x = [] while True: n = int(input('输入随机抽点人数:')) if n == 0: print('{:*^40}'.format('抽点结束')) break else: x = [] import random while len(x) < n: t = random.randint(0, len(data)-1) if (str(t) not in lst1) and (str(t) not in x): x.append(t) lst1.append(t) lst = [] for i in x: print(data[i],end = '\n') lst.append(data[i]) import datetime t = datetime.datetime.now() y = t.strftime('%Y%m%d') with open(f'{y}.txt','w',encoding='utf-8') as f: f.writelines(lst)
截图

总结:datetime模块中需要注意大小写
浙公网安备 33010602011771号