task6

 1 with open('data6.csv','r',encoding='gbk') as f:
 2     data1 = f.read().split('\n')
 3 del data1[0]
 4 for i in range(len(data1)):
 5     data1[i] = eval(data1[i])
 6     data1[i] = float(data1[i])
 7 print('原始数据:')
 8 print(data1)
 9 data2 = []
10 for i in range(len(data1)):
11     data2.append(int(data1[i]+0.5))
12 print('四舍五入后数据:')
13 print(data2)
14 for i in range(len(data1)):
15     data1[i] = str(data1[i])
16 for i in range(len(data1)):
17     data2[i] = str(data2[i])
18 title = ['原始数据','四舍五入后数据']
19 info = []
20 for i in range(len(data1)):
21     info.append([data1[i],data2[i]])
22 with open('data6_processed.csv','w',encoding='utf-8') as f:
23     f.write(','.join(title)+'\n')
24     for item in info:
25         f.write(','.join(item)+'\n')

task7

 1 with open('data7.csv','r',encoding='gbk') as f:
 2     data1 = f.read().split('\n')
 3 del data1[0]
 4 lsta = []
 5 lstm = []
 6 for i in data1:
 7     lst1 = i.split(',')
 8     if lst1[2] == 'Acting':
 9         lsta.append(lst1)
10     else:lstm.append(lst1)
11 lstm.sort(key=lambda x:x[-1],reverse = True)
12 lsta.sort(key=lambda x:x[-1],reverse = True)
13 info = lsta + lstm
14 title = ['学号','姓名','专业','分数']
15 with open('data7_processed.csv','w',encoding='utf-8') as f:
16     f.write(','.join(title)+'\n')
17     for items in info:
18         f.write(','.join(items)+'\n')
19 print('{:<10}'.format(title[0]),'{:<10}'.format(title[1]),'{:<10}'.format(title[2]),'{:<15}'.format(title[3]))
20 for i in info:
21     print('{:<10}'.format(i[0]),'{:<10}'.format(i[1]),'{:<10}'.format(i[2]),'{:<15}'.format(i[3]))

 

 task8

lines = 0
words = 0
sum1 = 0
space = 0
with open('hamlet.txt','r',encoding='utf-8') as f:
    for line in f:
        word = line.split()
        lines += 1
        words += len(word)
        sum1 += len(line)
        for i in line:
            if i == ' ':
                space += 1
            else:
                pass
print('hamlet.txt粗滤统计:')
print(f'行数:{lines}')
print(f'单词数:{words}')
print(f'字符数:{sum1}')
print(f'空格数:{space}')

with open('hamlet.txt','r',encoding = 'utf-8') as f:
    text = f.readlines()

for i in range(len(text)):
    text[i] = str(i+1) + ' ' + text[i]

with open('hamlet_with_line_number.txt','w',encoding = 'utf-8') as f:
    f.writelines(text)

task9

 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])

 task10

 1 with open('data10_stu.txt','r',encoding='utf-8') as f:
 2     data = f.readlines()
 3 print('{:*^40}'.format('抽点开始'))
 4 n = int(input('输入随机抽点人数:'))
 5 import random
 6 x = []
 7 x2 = ''
 8 counts = 0
 9 while counts < n:
10     new = random.randint(0, len(data) - 1)
11     if new in x:
12         new = random.randint(0, len(data) - 1)
13     else:
14         counts +=1
15         x.append(new)
16 for i in range(n):
17     print(data[x[i]])
18     x2 += data[x[i]]
19     sum1 += n
20 with open('20230602.txt','w',encoding='utf-8') as f:
21     f.writelines(x2)

 1 with open('data10_stu.txt','r',encoding='utf-8') as f:
 2     data = f.readlines()
 3 print('{:*^40}'.format('抽点开始'))
 4 n = int(input('输入随机抽点人数:'))
 5 import random
 6 x = []
 7 sum1 = 0
 8 x2 = ''
 9 while n != 0:
10     counts = 0
11     while counts < n:
12         new = random.randint(0, len(data) - 1)
13         if new in x:
14             new = random.randint(0, len(data) - 1)
15         else:
16             counts +=1
17             x.append(new)
18     for i in range(sum1,sum1+n):
19         print(data[x[i]])
20         x2 += data[x[i]]
21     sum1 += n
22     n = int(input('输入随机抽点人数:'))
23 
24 with open('20230602.txt','w',encoding='utf-8') as f:
25     f.writelines(x2)
26 
27 print('{:*^40}'.format('抽点结束'))