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

实验5 文件应用编程

时间:2023-06-04 15:12:11浏览次数:45  
标签:文件 open data Downloads 编程 实验 print data1 data0

一、实验结论:

1.实验任务1-5:已自行练习

2.实验任务6:task6.py

程序源码:

 1 with open(r'C:\Users\28678\Downloads\实验5数据文件\data6.csv','r',
 2 encoding='gbk') as f:
 3     data=f.readlines()
 4 
 5 data.remove('原始数据\n')
 6 data0=[]
 7 for i in data:
 8     if i[-1]=='\n':
 9         i=i[:-1]
10     data0.append(float(i))
11 print('原始数据:')
12 print(data0)
13 
14 data1=[int(i+0.5) for i in data0]
15 print('四舍五入后数据:')
16 print(data1)
17 
18 with open(r'C:\Users\28678\Downloads\实验5数据文件\data6_processed.csv','w',
19 encoding='gbk') as f:
20     f.write('原始数据,四舍五入后数据\n')
21     for i in range(len(data1)):
22         f.write(str(data0[i])+','+str(data1[i])+'\n')

运行结果截图:

 

3.实验任务7:task7.py

程序源码:

 1 with open(r'C:\Users\28678\Downloads\实验5数据文件\data7.csv','r',
 2 encoding='gbk') as f:
 3     data=f.readlines()
 4 
 5 data0=[i.strip('\n').split(',') for i in data]
 6 data0.remove(data0[0])
 7 
 8 data1=sorted(data0,key=lambda x:(x[2],-int(x[3])))
 9 
10 print(f'{"学号":10s}{"姓名":10s}{"专业":10s}{"分数":10s}')
11 for h,i,j,k in data1:
12     print(f'{h:10s}{i:10s}{j:10s}{k:10s}')
13 
14 with open(r'C:\Users\28678\Downloads\实验5数据文件\data7_processed.csv','w',
15 encoding='gbk') as f:
16     f.write('学号,姓名,专业,分数\n')
17     for i in range(len(data1)):
18         f.write(','.join(data1[i])+'\n')

运行结果截图:

 

4.实验任务8:task8.py

程序源码:

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

运行结果截图:

 

5.实验任务9:task9.py

程序源码:

 1 def is_valid(id):
 2     if len(id)==18 and id[:-1].isdigit() and (id[-1].isdigit() or id[-1]=='X'):
 3         return True
 4     else:
 5         return False
 6 
 7 with open(r'C:\Users\28678\Downloads\实验5数据文件\data9_id.txt','r') as f:
 8     data=f.readlines()
 9 
10 data.remove(data[0])
11 data0=[i.strip('\n').split(',') for i in data]
12 
13 data1=[]
14 for i in data0:
15     if is_valid(i[1])==True:
16         i[1]=i[1][6:14]
17         data1.append(i)
18 
19 import datetime
20 t=datetime.datetime.now()
21 y=t.strftime('%Y%m%d')
22 for i in data1:
23     i.append(str(int(y)-int(i[1][0:8])))
24 
25 data2=sorted(data1,key=lambda x:-int(x[2]))
26 
27 print('姓名, 出生日期, 年龄')
28 for i in data2:
29     i[1]=i[1][0:4]+'-'+i[1][4:6]+'-'+i[1][6:8]
30     i[2]=i[2][0:2]
31     print(', '.join(i))

运行结果截图:

 

6.实验任务10:task10_1.py

程序源码:

 1 with open(r'C:\Users\28678\Downloads\实验5数据文件\data10_stu.txt','r') as f:
 2     data=f.readlines()
 3 
 4 data0=[i.strip('\n').split('\t') for i in data]
 5 
 6 import random
 7 n=eval(input('输入随机抽点人数:'))
 8 data1=random.sample(data0,n)
 9 for i in data1:
10     print(' '.join(i))
11 
12 import datetime
13 t=datetime.datetime.now()
14 fn=t.strftime('%Y%m%d')
15 
16 with open(r'C:\Users\28678\Downloads\实验5数据文件\{}.txt'.format(fn),'w') as f:
17     for i in data1:
18         i[0]+='\t'
19         i[1]+='\t'
20         i[2]+='\n'
21         f.writelines(i)

运行结果截图:

task10_2.py

程序源码:

 1 with open(r'C:\Users\28678\Downloads\实验5数据文件\data10_stu.txt','r') as f:
 2     data=f.readlines()
 3 
 4 data0=[i.strip('\n').split('\t') for i in data]
 5 
 6 import datetime
 7 t=datetime.datetime.now()
 8 fn=t.strftime('%Y%m%d')
 9 
10 import random
11 print(f'{"抽点开始":*^32s}')
12 n=eval(input('输入随机抽点人数:'))
13 a=0
14 while n!=0:
15     data1=random.sample(data0,n)
16     a+=1
17     for i in data1:
18         print(' '.join(i))
19         data0.remove(i)
20     if a==1:
21         with open(r'C:\Users\28678\Downloads\实验5数据文件\{}.txt'.format(fn),'w') as f:
22             for i in data1:
23                 i[0]+='\t'
24                 i[1]+='\t'
25                 i[2]+='\n'
26                 f.writelines(i)
27     else:
28         with open(r'C:\Users\28678\Downloads\实验5数据文件\{}.txt'.format(fn),'a') as f:
29             for i in data1:
30                 i[0]+='\t'
31                 i[1]+='\t'
32                 i[2]+='\n'
33                 f.writelines(i)
34     n=eval(input('输入随机抽点人数:'))
35 print(f'{"抽点结束":*^32s}')

运行结果截图:

 

二、实验总结:

1. 能够在代码中正确表示文件的路径 2. 能灵活、正确使用python内置的文件读写基础操作:打开/关闭、读写、遍历,会读写csv格式文件 3. 复习字符串、列表、lambda匿名函数和sorted函数的用法,以及不同类型之间相互转换 4. 熟悉random模块、datetime模块 5. 针对具体问题场景,能够用文件和组合数据类型编程解决应用问题 

 

标签:文件,open,data,Downloads,编程,实验,print,data1,data0
From: https://www.cnblogs.com/myf-/p/17444625.html

相关文章

  • 在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB
    dom4j中文乱码[url]http://blog.sina.com.cn/s/blog_3d25e30f0100cyzi.html[/url]org.dom4j.io.XMLWriterxmlWriter=neworg.dom4j.io.XMLWriter(new[color=red]FileOutputStream[/color](fileName));在java环境下读取xml文件的方法主要有4种:DOM、SA......
  • Hibernate Tools生成Hibernate Mapping文件及PO类
    [color=red][b]本文参考[/b][/color]:HowToGenerateHibernateMappingFiles&AnnotationWithHibernateTools[url]http://www.mkyong.com/hibernate/how-to-generate-code-with-hibernate-tools/[/url]eclipse利用HibernateTools生成HibernateMap......
  • adm-jclass: 一个面向对象编程的js库
    [url]https://code.google.com/p/adm-jclass/[/url]:Ajavascriptlibrarythatallowshighlyobject-orientedapplicationprogramminginyourbrowser.介绍:[url]https://code.google.com/p/adm-jclass/wiki/jClassDocumentation[/url]jClassisa......
  • EVE-NG 导入Cisco 的bin格式镜像文件
    上一篇文章讲了如何安装EVE-NG 模拟器,本篇讲如何导入镜像文件使用非常好用的MobaXterm 终端控制软件输入管理账户 root 及密码注意,需要由于目录是根、树枝(目录)、树叶(文件名)结构,先定位到根目录,才能进入其他树枝(目录)鼠标移到CiscoIOUKeygen.py    iourc.txt   两......
  • 实验五 文件应用编程
    withopen('data6.csv','r',encoding='gbk')asf:data1=f.read().split('\n')deldata1[0]foriinrange(len(data1)):data1[i]=eval(data1[i])data1[i]=float(data1[i])print('原始数据:')print(......
  • 极客时间--golang并发编程实战课--Mutex学习总结
    互斥锁的实现机制互斥锁是并发控制的一个手段,是为了避免竞争而建立的一种并发控制机制。在并发编程中,如果程序中的一部分会被并发访问或修改,那么,为了避免并发访问导致的意想不到的结果,这部分程序需要被保护起来,这部分被保护起来的程序,就叫做临界区。可以说,临界区就是一个被共......
  • 文件夹隐藏属性为灰色,无法修改的解决方案
    【关于U盘中毒,隐藏属性无法取消的解决办法】attrib命令:网上那些用法,看得我内分泌失调,到现在都不知道attrib的正确用法。网上找到一个批处理,很方便,可以批量设置或取消隐藏属性和系统属性。1、新建一个.txt文档2、把下面的代码复制进去3、保存4、把.txt后缀改成.bat5、不要双......
  • python基础学习-读写CSV文件
    CSV文件介绍参考:Python-Core-50-Courses/第23课:用Python读写CSV文件.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)CSV 全称逗号分隔值文件是一种简单、通用的文件格式,被广泛的应用于应用程序(数据库、电子表格等)数据的导入和导出以及异构系统之间的数据......
  • dbeaver 23启用从编程语言源码中提取SQL功能
    一直很喜欢dbeaver的一个自动提取剪切板SQL功能,该功能去除多余C#/Java中SQL字符串加号和双引号.但升级到dbeaver23之后,发现该功能默认被关闭了,开启功能见下图:......
  • 实验报告
    密码引擎部分1-OpenEuler-OpenSSL编译一、下载最新的OpenSSL源码(1.1版本)二、用自己的8位学号建立一个文件夹,cd你的学号,用pwd获得绝对路径三、参考https://www.cnblogs.com/rocedu/p/5087623.html先在Ubuntu中完成OpenSSL编译安装,然后在OpenEuler中重现./config--prefix=......