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()#关闭文件
相关推荐
wefg133 分钟前
【C++】list
开发语言·c++
双力臂4041 小时前
Java IO流体系详解:字节流、字符流与NIO/BIO对比及文件拷贝实践
java·开发语言·nio
西猫雷婶1 小时前
python学智能算法(二十六)|SVM-拉格朗日函数构造
人工智能·python·算法·机器学习·支持向量机
钮钴禄·爱因斯晨2 小时前
Java API (二):从 Object 类到正则表达式的核心详解
java·开发语言·信息可视化·正则表达式
BoneToBone2 小时前
java list 与set 集合的迭代器在进行元素操作时出现数据混乱问题及原因
java·开发语言·list
java1234_小锋3 小时前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - snowNLP库实现中文情感分析
python·自然语言处理·flask
wait a minutes3 小时前
【c++】leetcode5 最长回文子串
开发语言·c++
**梯度已爆炸**3 小时前
Python Web框架详解:Flask、Streamlit、FastAPI
python·flask·fastapi·streamlit
艾莉丝努力练剑4 小时前
【LeetCode&数据结构】栈的应用——有效的括号问题详解
c语言·开发语言·数据结构·学习·链表