Python编程作业四:文件操作

目录

一、程序填空1

二、程序填空2

三、众数及词频统计

四、输入古诗并保存


编程素材下载地址:https://download.csdn.net/download/Morse_Chen/88887335?spm=1001.2014.3001.5503

一、程序填空1

        下面的程序是根据用户输入的星座名称,输出此星座的出生日期范围及对应的星座符号。星座及出生日期范围已存于文件 SunSign.csv 中,首先读入 CSV 文件中数据,循环获得用户输入,则输出此星座信息,直至用户输入 "exit" 程序结束。SunSign.csv 文件如图所示。

#根据输入,显示星座信息
fo = open("SunSign.csv","r", encoding='utf-8')
ls = []
for ______ in fo:                     #以“行”为单位进行处理
    line = line.replace("\n","")             #去掉行末的换行符
    ls._____(line.split(","))            #追加数据到ls列表
fo.close()

while True:                             #无限循环
    InputStr = input()                    #输入星座名称
    InputStr.strip()                      #去掉开头和结尾的空白
    flag = False                        #flag变量初始值为False
    if ______:                  #输入exit,结束循环
        break
    for line in ls:
        if InputStr == line[0]:             #line[0]中内容是星座名称
            #对输出结果进行格式化
            print("{}座的生日位于{}-{}之间"._____(chr(eval(line[3])),line[1],line[2]))
            flag = True                #输入星座正确,flag为True
    if flag == ______:
        print("输入星座名称有误!")

NO

Unicode编码

字符

1

9800

2

9801

3

9802

4

9803

5

9804

6

9805

7

9806

8

9807

9

9808

10

9809

11

9810

12 

9811

本题程序运行结果如下所示:

补充:程序倒数第4行中的 chr() 函数可以由表1第3列的 Unicode 编码得到对应的字符;而另一个相反的函数是 ord() 函数,它可以根据一个字符得到对应的 Unicode 编码。例如:chr(20013) 可以得到汉字“中”,而 ord(“中”) 则得到其编码是 20013 。

#根据输入,显示星座信息
fo = open("SunSign.csv","r", encoding='utf-8')
ls = []
for line in fo:                     #以“行”为单位进行处理
    line = line.replace("\n","")             #去掉行末的换行符
    ls.append(line.split(","))            #追加数据到ls列表
fo.close()

while True:                             #无限循环
    InputStr = input()                    #输入星座名称
    InputStr.strip()                      #去掉开头和结尾的空白
    flag = False                        #flag变量初始值为False
    if InputStr == "exit":                  #输入exit,结束循环
        break
    for line in ls:
        if InputStr == line[0]:             #line[0]中内容是星座名称
            #对输出结果进行格式化
            print("{}座的生日位于{}-{}之间".format(chr(eval(line[3])),line[1],line[2]))
            flag = True                #输入星座正确,flag为True
    if flag == False:
        print("输入星座名称有误!")

运行结果:

二、程序填空2

        下面的程序是统计并输出传感器采集数据中光照部分的最大值、最小值和平均值,所有值保留小数点后2位。已知传感器采集数据文件为 sensor-data.txt ,其中每行是一个整体数据,分别包括“日期、时间、温度、湿度、光照和电压”等6个读数,光照数据处于第5列,在列表中表示时下标应为4。

#根据数据,统计光照数据
f = open("sensor-data.txt", "r")
avg, cnt = 0, 0
maxv, minv = 0, 9999           #最大值、最小值变量的初始值
for line in ______:
    ls = line.split()
    cnt += 1
    val = eval(ls[____])      #将第5列数据存于val变量中
    avg += val                 #累加光照值到avg
    if val _____ maxv:
        maxv = val             #maxv中是光照的最大值
    if val <minv:
        minv = val             #minv中是光照的最小值
#以2位小数格式显示最大值、最小值、平均值
print("最大值、最小值、平均值分别是:{:.2f},{:.2f},{:.2f}".\
      format(maxv, minv, ______))
f.______()

本题程序运行结果如下所示:

#根据数据,统计光照数据
f = open("sensor-data.txt", "r")
avg, cnt = 0, 0
maxv, minv = 0, 9999           #最大值、最小值变量的初始值
for line in f:
    ls = line.split()
    cnt += 1
    val = eval(ls[4])      #将第5列数据存于val变量中
    avg += val                 #累加光照值到avg
    if val > maxv:
        maxv = val             #maxv中是光照的最大值
    if val < minv:
        minv = val             #minv中是光照的最小值
#以2位小数格式显示最大值、最小值、平均值
print("最大值、最小值、平均值分别是:{:.2f},{:.2f},{:.2f}".format(maxv, minv, avg/cnt))
f.close()

运行结果:

三、众数及词频统计

        文件 data.txt 中给出了一组数,请求出这组数的众数(众数指出现次数最多的那个数)及其出现的频率。

本题程序运行结果如下所示:

# 找出众数及其出现的频率
f=open("data.txt","r")
s=f.read()
nums=s.split(",")
d={}
for num in nums:
    d[num]=d.get(num,0)+1
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
print("众数是{},它出现的频率是{}".format(ls[0][0],ls[0][1]))

运行结果:

        这段代码可以找出给定数据中的众数及其出现的频率。但是,如果有多个数的出现频率相等,该怎么办呢?建议对代码进行一些修改,使其能够处理这种情况。以下是修改后的代码:

f=open("data.txt","r")
s=f.read()
nums=s.split(",")
d={}
for num in nums:
    d[num]=d.get(num,0)+1
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
max_freq = ls[0][1]
mode_list = [ls[0][0]]
for i in range(1, len(ls)):
    if ls[i][1] == max_freq:
        mode_list.append(ls[i][0])
    else:
        break
if len(mode_list) == 1:
    print("众数是{},它出现的频率是{}".format(mode_list[0], max_freq))
else:
    modes = ", ".join(mode_list)
    print("众数有{},它们出现的频率是{}".format(modes, max_freq))

        这段代码首先打开名为 "data.txt" 的文件,并读取其中的内容。然后将数据以逗号分隔,存储在一个列表中。接下来,使用字典d来统计每个数字出现的频率。然后将字典转换为包含键值对的列表 ls ,并按值(出现频率)进行降序排序。

        接着,程序获取出现频率最高的数字,并将其放入 mode_list 列表中。然后程序遍历排序后的列表,查找是否还有其他数字具有相同的最大频率,如果有,则将它们也添加到 mode_list 中。最后,程序检查 mode_list 中的数字数量,如果只有一个数字,则输出单数形式的结果,否则输出复数形式的结果,表示所有众数及其出现的频率。 

四、输入古诗并保存

        请从键盘输入一首5言绝句或者7言绝句,并把它保存在一个名为 poem.txt 的文件中,要求诗的标题和作者单独占一行,诗的内容每句占一行。输入的效果类似于下面左图所示,生成的文件内容如下面右图所示。

            

f=open("poem.txt","w")
poem=[]
title=input("请输入诗的名字:")
poem.append(title+'\n')
author=input("请输入诗的作者:")
poem.append(author+'\n')
for i in range(1,5):
    sentence=input("输入该诗的的第{}句:".format(i))
    poem.append(sentence+'\n')
f.writelines(poem)
f.close()

运行结果:

        这段代码可以让用户输入一首诗的相关信息(标题、作者、四句诗句),然后将这些信息写入到名为 "poem.txt" 的文件中。代码中使用了 open("poem.txt", "w") 来打开文件,并传入 "w" 参数,表示以写入模式打开文件。然后,通过 input() 函数分别获取用户输入的诗的标题和作者,并将它们存储在 poem 列表中。

        接下来,通过一个循环,让用户输入该诗的四句诗句,并将它们追加到 poem 列表中。注意,在每个输入的诗句后面添加了换行符 \n ,以确保每行只有一句诗。

        最后,使用 f.writelines(poem) 将 poem 列表中的内容写入到文件中,并通过 f.close() 关闭文件。这样,用户输入的诗就会被写入到 "poem.txt" 文件中了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/423590.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】面向对象 | 类详解 | this指针

目录 1. 面向过程和面向对象 2. 类的引入 3. 类的定义 4. 类的访问限定符及封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7. 类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 8. this指针 8.1 this指针的引出 8.2 this指针…

基于PyTorch深度学习实战入门系列-(1)环境配置

Pytorch环境安装配置2024最新版 下载安装Anaconda Anaconda下载网址&#xff1a;Free Download | Anaconda 创建虚拟环境 打开Anaconda Prompt # conda create -n 环境名 [需要的库] # 例子&#xff1a; conda create -n pytorchpy39 python3.9安装过程中需要确认输入 y 回车…

Filebeat将csv导入es尝试

一、安装 在docker中安装部署ELKfilebeat 二、主要配置 - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - /home/centos/pip_v2.csv #源路径 #…

1908 - 伐木工

代码 #include<bits/stdc.h> using namespace std; long long a[1000100],n,m,l1,r,mid,i; bool fm(long long x) {long long s0;for(i1;i<n;i){if(x<a[i]) ssa[i]-x;if(s>m) return true;}return false; } int main() {cin>>n>>m;for(i1;i<n;i…

简易内存池2 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 请实现一个简易内存池,根据请求命令完成内存分配和释放。 内存池支持两种操作命令&#xff0c;REQUEST和RELEASE&#xff0c;其格式为: REQUEST请求的内存大小 …

Day21-磁盘管理之raid及分区

Day21-磁盘管理之raid及分区 1 Raid技术1.1 什么是Raid?1.2 为什么服务器需要Raid?1.3 什么是Raid级别?1.4 Raid有哪些实现方式&#xff1f;1.5 什么是RAID0&#xff1f;&#xff08;图&#xff09;1.6 什么是RAID1&#xff1f;&#xff08;图&#xff09;1.7 什么是RAID5&a…

Python之Flask框架~四大内置对象

1.g global全局对象 g对象是专门用来保存用户的数据的 g对象在一次请求中的所有的代码的地方, 都是可以使用的 突破变量存储位置限制,为数据传递添加了新的方式,比如我们在before_request产生一个数据在后面需要使 用, 可以保存在g对象中, 在其他视图西数中就可以使用这个数据…

LaTeX-设置图像大小

文章目录 LaTeX-设置图像大小1.导入图片2.更改图像大小并旋转图像2.1按比例缩放2.2将图像缩放到特定的宽度和高度2.3将图片设置为与文字宽度相同2.4旋转图片 LaTeX-设置图像大小 在本文中&#xff0c;将解释如何以最常见的格式包含图像&#xff0c;如何缩小、放大和旋转它们。…

Day11:信息打点-Web应用企业产权指纹识别域名资产网络空间威胁情报

目录 Web信息收集工具 业务资产-应用类型分类 Web单域名获取-接口查询 Web子域名获取-解析枚举 Web架构资产-平台指纹识别 思维导图 章节知识点&#xff1a; Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系统/端口服务/网络环境/防火墙等 应用…

考研机试C++题目精选

更多内容会在godownio.github.io更新 算法练习&#xff08;C代码&#xff09; 考研上机或C语言代码笔试准备&#xff0c;暨大机试原题letcode牛客中南大等高校机试 快速幂算法 题目&#xff1a;输入一个整数 n &#xff0c;求 n^n 的个位数是多少。 快速幂算法&#xff1a;…

集合篇之ArrayList

一、源码如何分析&#xff1f; 1.成员变量 2.构造方法 3.关键方法 一些添加的方法。 二、debug看源码 我们给出下面代码&#xff1a; public void test01() {ArrayList<Integer> list new ArrayList<>();list.add(1);for (int i 2; i < 10; i) {list.add(i…

Java虚拟机(JVM)从入门到实战【上】

Java虚拟机&#xff08;JVM&#xff09;从入门到实战【上】&#xff0c;涵盖类加载&#xff0c;双亲委派机制&#xff0c;垃圾回收器及算法等知识点&#xff0c;全系列6万字。 一、基础篇 P1 Java虚拟机导学课程 P2 初识JVM 什么是JVM Java Virtual Machine 是Java虚拟机。…

Flutter中Future和Stream关系

Future和Stream类是Dart异步编程的核心。 Future 表示一个不会立即完成的计算过程。与普通函数直接返回结果不同的是异步函数返回一个将会包含结果的 Future。该 Future 会在结果准备好时通知调用者。 Stream 是一系列异步事件的序列。其类似于一个异步的 Iterable&#xff0c;…

(三)softmax分类--九五小庞

softmax分类 对数几率回归解决的是二分类的问题&#xff0c;对于多个选项的问题&#xff0c;我们可以使用softmax函数&#xff0c;它是对数几率回归在N个可能不同的值上的推广 softmax各样本分量之和为1&#xff0c;当只有两个类别时&#xff0c;与对数几率回归完全相同 损失…

多个版本的Python如何不冲突?

转载文章&#xff0c;防止忘记或删除 转载于&#xff1a;电脑中存在多个版本的Python如何不冲突&#xff1f; - 知乎 (zhihu.com) 如何安装多版本的Python并与之共存&#xff1f; 如果你的工作涉及到Python多版本之间开发或测试&#xff0c;那么请收藏本文&#xff0c; 如果你…

Jvm之内存泄漏

1 内存溢出 1.1 概念 java.lang.OutOfMemoryError&#xff0c;是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;出现OutOfMemoryError。产生该错误的原因主要包括&#xff1a;JVM内存过小。程序不严密&#xff0c;产生了过多的垃圾。 程序体现: 内…

CSS 【详解】响应式布局(含 rem 详解)

响应式布局&#xff1a; 同一页面在不同的屏幕上有不同的布局&#xff0c;即一套代码自适应不同的屏幕。 为什么 rem 能用于实现响应式布局&#xff1f; px 绝对长度单位&#xff0c;不同客户端表现都相同&#xff0c;不具有响应式em 相对长度单位&#xff0c;相对于父元素的 f…

【MATLAB源码-第147期】基于matlab的QPSK调制解调在AWGN信道,瑞利信道,莱斯信道理论与实际误码率对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 四相位移键控&#xff08;QPSK&#xff0c;Quadrature Phase Shift Keying&#xff09;是一种重要的数字调制技术&#xff0c;它通过改变信号的相位来传输数据。与其他调制技术相比&#xff0c;QPSK在相同的带宽条件下能够传…

【HTML】HTML基础4.2(锚点链接)

目录 解释锚点链接 “公式” 例子 点击回首页 解释锚点链接 在我们浏览网页的时候&#xff0c;总有目录一样的功能&#xff0c;比如 这个时候&#xff0c;只要点击相应目录&#xff0c;就可以直接跳转到相应界面&#xff0c;比如&#xff0c;点击“演职员表” 今天就让我们一…

Leetcode438. 找到字符串中所有字母异位词 -hot100

题目&#xff1a; 代码(首刷看解析 2024年3月2日&#xff09;&#xff1a; 感觉自己这个ac率根本不可能找得到实习 class Solution { public:vector<int> findAnagrams(string s, string p) {int plen p.size(), slen s.size();if (slen < plen) return {};vector…