python文件操作题

1.books.txt文件中存储了某天某书店图书销售数据,其中包含订单号、图书名、单价和数量四项数据。如ORD-1,信息安全技术,39,19表示订单号是ORD-1,图书名是《信息安全技术》,单价是39元,订购数量是19本。

请根据题目要求使用python实现相应的功能。

books.txt文件内容

ORD-1,信息安全技术,39,19

ORD-2,数据库原理,37,43

ORD-3,VB语言程序设计,38,39

ORD-4,Java语言程序设计,39,30

ORD-5,Access数据库程序设计,41,43

ORD-6,软件工程,43,40

ORD-7,计算机基础及MS Office应用,36,44

ORD-8,嵌入式系统开发技术,44,33

ORD-9,操作系统原理,39,35

ORD-10,MySQL数据库程序设计,40,22

ORD-11,MS Office高级应用,39,38

ORD-12,网络技术,43,5

ORD-13,数据库技术,41,32

ORD-14,软件测试技术,36,19

ORD-15,计算机组成与接口,40,38

ORD-16,计算机基础及Photoshop应用,34,29

ORD-17,C语言程序设计,42,45

ORD-18,信息安全技术,39,4

ORD-19,数据库原理,37,7

ORD-20,VB语言程序设计,38,34

ORD-21,Java语言程序设计,39,18

ORD-22,Access数据库程序设计,41,15

ORD-23,软件工程,43,11

ORD-24,数据库技术,41,30

ORD-25,软件测试技术,36,48

ORD-26,计算机组成与接口,40,3

ORD-27,计算机基础及Photoshop应用,34,22

ORD-28,C语言程序设计,42,3

(1) (简答题)

读取books.txt文件数据,将全部数据保存到列表books中。

要求:每一条订单保存在一个列表项中,同时列表项中的单价和数量的数据类型为浮点数。books的输出结果如图所示:

python 复制代码
f=open("D:/books.txt",'r',encoding="UTF-8")#打开文件

books=f.read().strip().split('\n')#先去除前后空格删除后面的空行,再根据换行符切分成列表
#列表的嵌套操作
for i in range(len(books)):#利用range函数定义一个与books列表长度一样的序列进行for循环
    books[i]=books[i].split(',')#在books列表元素的基础上再进行切分变成嵌套列表
    books[i][2]=float(books[i][2])#定义单价数据类型为浮点型
    books[i][3]=float(books[i][3])#定义数量数据类型为浮点型
    
for i in books:#利用for循环将books列表中的内容挨个取出换行输出
    print(i)
    
f.close()#关闭文件

(2) (简答题)

在题1的基础上完成订单查询功能,要求如下:

请根据输入的图书名,显示输出该书的相关订单子列表,计算该本图书当天的订单数,订购数量及订购金额并显示输出。

样例1:

输入:

信息安全技术

输出:

'ORD-1','信息安全技术',39,19

'ORD-18','信息安全技术',39,4

信息安全技术的订单数是2,共23本897元

样例2:

输入:

Python程序设计

输出:

无此书

python 复制代码
f=open("D:/books.txt",'r',encoding="UTF-8")#打开文件

books=f.read().strip().split('\n')#先去除前后空格删除后面的空行,再根据换行符切分成列表
#列表的嵌套操作
for i in range(len(books)):#利用range函数定义一个与books列表长度一样的序列进行for循环
    books[i]=books[i].split(',')#在books列表元素的基础上再进行切分变成嵌套列表
    books[i][2]=float(books[i][2])#定义单价数据类型为浮点型
    books[i][3]=float(books[i][3])#定义数量数据类型为浮点型

books_name=input("请输入图书名:")
books_count=0#定义订单数为0
books_sum=0#定义订购数量为0
books_money=0#定义订购金额为0
x=False#定义一个工具变量

for i in books:#将books列表中的元素逐个取出且逐个放入到临时变量i中
    if books_name==i[1]:
        x=True
        books_count=books_count+1
        books_sum=books_sum+i[3]
        books_money=books_sum*i[2]
        print(i)#输出所有满足条件的订单信息

if not x:
    print("无此书")
else:
    print(f"{books_name}的订单数是{books_count},共{books_sum}本{books_money}元")
f.close()#关闭文件

(3) (简答题)

在题1的基础上完成订单修改功能,要求如下:

输入的订单号和图书名,请根据订单号找到对应的订单,将图书名改为输入的图书名。

测试输入:

ORD-3

C语言程序设计

预期输出:

'ORD-3', 'C语言程序设计', 38, 39

python 复制代码
f=open("D:/books.txt",'r',encoding="UTF-8")#打开文件

books=f.read().strip().split('\n')#先去除前后空格删除后面的空行,再根据换行符切分成列表
#列表的嵌套操作
for i in range(len(books)):#利用range函数定义一个与books列表长度一样的序列进行for循环
    books[i]=books[i].split(',')#在books列表元素的基础上再进行切分变成嵌套列表
    books[i][2]=float(books[i][2])#定义单价数据类型为浮点型
    books[i][3]=float(books[i][3])#定义数量数据类型为浮点型

books_num=input("请输入订单号:")
books_name=input("请输入图书名:")

for i in books:#将books列表中的元素逐个取出且逐个放入到临时变量i中
    if books_num==i[0]:
        i[1]=books_name
        print(i)#输出修改后的订单信息
f.close()#关闭文件

(4) (简答题)

在题1的基础上完成订单增加功能,要求如下:

请根据输入的索引号及订单信息(信息项之间用英文逗号分隔),在books列表中对应索引处插入相应订单信息,然后将所有订单信息分行显示。如果输入的索引号超过订单长度,则将新订单信息追加在最后。

测试输入:

4

ORD-491,零基础学Python,79.8,70

预期输出:

python 复制代码
f=open("D:/books.txt",'r',encoding="UTF-8")#打开文件

books=f.read().strip().split('\n')#先去除前后空格删除后面的空行,再根据换行符切分成列表
#列表的嵌套操作
for i in range(len(books)):#利用range函数定义一个与books列表长度一样的序列进行for循环
    books[i]=books[i].split(',')#在books列表元素的基础上再进行切分变成嵌套列表
    books[i][2]=float(books[i][2])#定义单价数据类型为浮点型
    books[i][3]=float(books[i][3])#定义数量数据类型为浮点型

num=int(input("请输入索引号:"))
book=input("请输入订单信息:")

book=book.split(',')#将输入的订单信息切分成列表
if num<=len(books):
    books.insert(num, book)#在指定下标位置插入元素
else:
    books.append(book)#在列表尾部插入元素
    
#序号
x=1
for i in books:
    print(f'{x}.{i}')
    x=x+1
f.close()#关闭文件
相关推荐
zone773913 小时前
001:简单 RAG 入门
后端·python·面试
F_Quant13 小时前
🚀 Python打包踩坑指南:彻底解决 Nuitka --onefile 配置文件丢失与重启报错问题
python·操作系统
允许部分打工人先富起来14 小时前
在node项目中执行python脚本
前端·python·node.js
IVEN_15 小时前
Python OpenCV: RGB三色识别的最佳工程实践
python·opencv
haosend15 小时前
AI时代,传统网络运维人员的转型指南
python·数据网络·网络自动化
曲幽16 小时前
不止于JWT:用FastAPI的Depends实现细粒度权限控制
python·fastapi·web·jwt·rbac·permission·depends·abac
IVEN_1 天前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang1 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮1 天前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling1 天前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python