首页 > 编程语言 >实验5 文件应用编程

实验5 文件应用编程

时间:2023-06-04 20:12:20浏览次数:46  
标签:文件 encoding open 编程 datetime 实验 ls print data

实验任务6

源代码

 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_processed.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

源代码

 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

源代码

with open('hamlet.txt','r',encoding='gbk')as f:     data=f.readlines() x='' for line in data:     x+=line print('行数:',len(data)) print('字符数:',len(x)) print('单词数:',len(x.split())) print('空格数:',x.count(' '))

for i in range(len(data)):     if data[i]:         data[i]=str(i+1)+' '+data[i] with open('hamlet_with_line_number.txt','w',encoding='gbk',newline='') as f :     f.writelines(data)

 

实验任务9

源代码

 1 with open('data9_id.txt','r',encoding='utf-8')as f:
 2     data=f.readlines()
 3 
 4 info=[line.strip('\n').split(',')for line in data]
 5 del info[0]
 6 
 7 def is_valid(id):
 8     y=id[:17]
 9     if (i in ['1','2','3','4','5','6','7','8','9','0','X'] for i in id) and len(id)==18 and y.isdigit() and (id[17]=='X' or id[17].isdigit()):
10         return True
11     else:
12         return False
13 
14 print('姓名'+'     '+'出生日期'+'     '+'年龄')
15 import datetime
16 today=datetime.date.today()
17 valid_ls=[]
18 for ls in info:
19     if is_valid(ls[1]) is True:
20         y, m, d = ls[1][6:10], ls[1][10:12], ls[1][12:14]
21         birth = y + '-' + m + '-' + d
22         ls.append(birth)
23         del ls[1]
24         birthday=datetime.date(year=int(y),month=int(m),day=int(d))
25         age=str(round((today-birthday).days/365))
26         ls.append(age)
27         valid_ls.append(ls)
28 def takeThird(elem):
29     return elem[2]
30 valid_ls.sort(key=takeThird,reverse = True)
31 for ls in valid_ls:
32     for i in ls:
33         print('{:2}'.format(i),end='    ')
34     print()

运行截图

 

实验任务10

task10_1.py

源代码

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

运行截图

tast10_2

源代码

 1 import datetime
 2 t = datetime.datetime.now()
 3 filename = t.strftime('%Y%m%d') + '.txt'
 4 
 5 print('抽取开始'.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

运行截图

 

标签:文件,encoding,open,编程,datetime,实验,ls,print,data
From: https://www.cnblogs.com/zyj-/p/17454425.html

相关文章

  • 实验二验收3
    实验二验收3......
  • NOI / 1.9编程基础之顺序查找
    4:谁拿了最多奖学金描述某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同:1)    院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;2)    五四奖学金,每人4000元,期末平均成绩高于......
  • 实验二报告
    电子传输系统安全电子传输系统安全-进展1-上周任务完成情况(代码链接,所写文档等)-本周计划上周任务将上学期电子公文传输系统重新调试通过部署安装gmssl使用gmssl测试证书学习gmssl上周任务完成情况学号姓名任务完成情况陈子昂学习gmssl中的证书实现100%......
  • 实验报告
    密码引擎的设计与实现实验一密码引擎-1-OpenEuler-OpenSSL编译1.下载最新的OpenSSL源码(1.1版本)2.用自己的8位学号建立一个文件夹,cd你的学号,用pwd获得绝对路径3.参考https://www.cnblogs.com/rocedu/p/5087623.html先在Ubuntu中完成OpenSSL编译安装,然后在OpenEuler中......
  • NOI / 1.9编程基础之顺序 04:谁拿了最多奖学金
    描述某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同:院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的......
  • 基于2.8版本redis配置文件中文解释
        在Redis中直接启动redis-server服务时,采用的是默认的配置文件。采用redis-server xxx.conf这样的方式可以按照指定的配置文件来运行Redis服务。下面是Redis2.8.9的配置文件各项的中文解释。1#daemonizeno默认情况下,redis不是在后台运行的,如果需要在后台运......
  • 实验报告
    实验一-密码引擎-加密API一、研究资料API:应用程序接口(API:ApplicationProgramInterface)是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。API的一个主要功能是提供通用功能集。程序员通过使用API函数开发应用程序,从而可以避免编写无用程序,以减轻编......
  • 第六章 面向对象编程(基础)
    1.面向对象内容的三条主线Java类以及类的成员:属性,方法,构造器,代码块,内部类面向对象的特征:封装,继承,多态面向对象的关键字:this、super、package、import、static、final、interface、abstract等2.类和对象2.1类和对象概述‍类:具有相同特征的事务......
  • NOI / 1.9编程基础之顺序查找 05:最大值和最小值的差
    描述输出一个整数序列中最大的数和最小的数的差。输入第一行为M,表示整数个数,整数个数不会大于10000;第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。输出输出M个数中最大值和最小值的差。样例输入525742样例输出5题意输入M,表示整数个数,再输入M个整......
  • 第七章 面向对象编程(进阶)
    1.this关键字‍1.1this的含义‍在Java中,this关键字不算难理解,它的作用和其词义很接近。它在方法(准确的说是实例方法或非static的方法)内部使用,表示调用该方法的对象它在构造器内部使用,表示该构造器正在初始化的对象。this可以调用的结构:成员变量、方法和构......