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

实验5 文件应用编程

时间:2023-06-05 16:25:50浏览次数:40  
标签:文件 encoding open 编程 len 实验 print data

实验任务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

相关文章

  • C# FileUpload 实现上传限定类型和大小的文件到服务器
    上传文件有两个主要的目的地,一个是服务器,另一个是数据库,ASP.NET内置了FileUpload这个上传控件,文本框显示用户选择的文件的全名.其属性主要包括:ContenLength:上传文件大小,单位:字节FileName:文件名称HasFile:是否选择了文件例子:测试环境.net2.0(内有详细说明)default......
  • Python实验课5
    实验任务六实验源码:1withopen('data6.csv','r',encoding='gbk')asf:2data=f.readlines()3data1=[str(eval(data[i]))foriinrange(1,len(data))]4data2=[str(int(eval(data[i])+0.5))foriinrange(1,len(data))]5info=......
  • 必读:学习C语言编程的路线图
    学习C语言编程,可以丰富编程思维的训练和经验,以下是一些学习C语言编程的路线图:设置开发环境:在计算机上安装C编译器。GNU编译器集合(GCC)是一个流行的选择,适用于Windows、macOS和Linux等各种操作系统。安装IDE编程环境,推荐VSCode,有丰富的插件可以辅助编程,并且辅助学习编程。使用......
  • 6-5|salt如何移除dockercompoise文件的内容
    在DockerCompose中,如果需要移除某个服务或者容器,可以使用`docker-composedown`命令,该命令会移除所有服务和容器,同时也会移除关联的网络和卷等资源。如果只需要移除某个特定的服务或容器,可以运行`docker-composerm<service-name>`或者`docker-composerm<container-nam......
  • java基础语法02-面向对象编程
    1面向对象基础1.1方法1.2构造方法1.3方法重载1.4继承1.5多态1.6抽象类1.7接口1.8静态字段和静态方法1.9包1.10作用域1.11内部类1.12classpath和jar1.13class版本1.14模块2java核心类......
  • 递归获取省市区的边界信息文件,用于echarts的map地图
    数据来源为阿里云,单个省市区信息可直接在这里面下载:http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.332329214580188&lng=106.72278672066881&zoom=3.5由于需求需要点击省份里面的城市就展示新的城市的地图,所以需要把所有省市区的边界信息json全部下载下来......
  • 打包Jar后的文件读取
    对于org.springframework.core.io.ClassPathResource本地环境时,使用方法 getFile(),可以正常读取文件,但打成Jar后,读取失败,其主要原因是:在jar里,返回的是一个Jar协议地址:jar:file:/xxx/xx.jar!/xxxx而getFile方法的实现为publicstaticFilegetFile(URLresourceUrl,St......
  • 【杂项】论 *.pdm 文件的正确打开方式
    刚刚同事给我扔了一个后缀为*.pdm的文件,我瞬间蒙蔽了,不知道怎么打开看!在这里分享一个很方便的网站,在线阅读*.pdm文件,打开这个网址放*.pdm文件进去,即可打开,十分方便快捷。http://www.dmanywhere.cn/但网页版的功能还是不够强大,经常用到的兄弟还是应该下载powerdesigner这个软......
  • Linux 下串口驱动头文件之tty.h
    linux-2.6.29/include/linux#ifndef_LINUX_TTY_H#define_LINUX_TTY_H/**'tty.h'definessomestructuresusedbytty_io.candsomedefines.*/#ifdef__KERNEL__#include<linux/fs.h>#include<linux/major.h>#include<linux/termi......
  • Linux 下串口驱动头文件之termios.h
    在linux-2.6.29/include/asm-generic下的termios.h/*termios.h:generictermios/termiousercopying/translation*/#ifndef_ASM_GENERIC_TERMIOS_H#define_ASM_GENERIC_TERMIOS_H#include<asm/uaccess.h>#ifndef__ARCH_TERMIO_GETPUT/**Translatea"t......