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()#关闭文件
相关推荐
程序员爱钓鱼几秒前
Python编程实战 · 基础入门篇 | 循环语句 for / while
后端·python
fox_lht1 小时前
第一章 不可变的变量
开发语言·后端·rust
骁的小小站2 小时前
Verilator 和 GTKwave联合仿真
开发语言·c++·经验分享·笔记·学习·fpga开发
心灵宝贝4 小时前
申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
开发语言·php
lly2024064 小时前
PHP 字符串操作详解
开发语言
像是套了虚弱散5 小时前
DevEco Studio与Web联合开发:打造鸿蒙混合应用的全景指南
开发语言·前端·华为·harmonyos·鸿蒙
旭意5 小时前
C++蓝桥杯之结构体10.15
开发语言·c++
飞翔的佩奇6 小时前
【完整源码+数据集+部署教程】【天线&水】舰船战舰检测与分类图像分割系统源码&数据集全套:改进yolo11-repvit
前端·python·yolo·计算机视觉·数据集·yolo11·舰船战舰检测与分类图像分割系统
麦麦鸡腿堡7 小时前
Java的单例设计模式-饿汉式
java·开发语言·设计模式
简单点了7 小时前
go前后端项目的启动 、打包和部署
开发语言·后端·golang