books.txt文件中存储了某天某书店图书销售数据,其中包含订单号、图书名、单价和数量四项数据。如ORD-1,信息安全技术,39,19表示订单号是ORD-1,图书名是《信息安全技术》,单价是39元,订购数量是19本。
1.读取books.txt文件数据,将全部数据保存到列表books中。(30分)
要求:每一条订单保存在一个列表项中,同时列表项中的单价和数量的数据类型为浮点数。
books = []
with open("books.txt", "r", encoding='utf-8') as f1:
lines = f1.readlines()
for line in lines:
book = line.strip().split(",")
books.append(book)
print(books)
2.在题1的基础上完成订单查询功能,要求如下:(20分)
请根据输入的图书名,显示输出该书的相关订单子列表,计算该本图书当天的订单数,订购数量及订购金额并显示输出。
books = []
with open("books.txt", "r", encoding="utf-8") as file:
for line in file:
try:
data = line.strip().split(",")
order_num = data[0]
book_name = data[1]
price = float(data[2])
quantity = float(data[3])
books.append([order_num, book_name, price, quantity])
except IndexError:
pass
订单查询功能
name = input("请输入需要查询的书名:")
jine = 0
cnt = 0
sl = 0
for i in range(len(books)):
if books[i][1] == name:
print(books[i])
jine += books[i][2] * books[i][3]
cnt += 1
sl += books[i][3]
if cnt == 0:
print('无此书')
else:
print('{}的订单数是{}, 共{}本{}元'.format(name, cnt, sl, jine))
3.
在题1的基础上完成订单修改功能,要求如下:(20分)
输入的订单号和图书名,请根据订单号找到对应的订单,将图书名改为输入的图书名。
测试输入:ORD-3 C语言程序设计
预期输出: ['ORD-3', 'C语言程序设计', 38, 39]
books = []
with open("books.txt", "r", encoding="utf-8") as file:
for line in file:
try:
data = line.strip().split(",")
order_num = data[0]
book_name = data[1]
price = float(data[2])
quantity = float(data[3])
books.append([order_num, book_name, price, quantity])
except IndexError:
pass
input_string = input("请输入输入的订单号和图书名:")
orderno, name = input_string.split()
for b in books:
if b[0] == orderno:
b[1] = name
print([b[0], b[1], int(b[2]), int(b[3])])
break
else:
print('无此订单')
4.
在题1的基础上完成订单增加功能,要求如下:(20分)
请根据输入的索引号及订单信息(信息项之间用英文逗号分隔),在books列表中对应索引处插入相应订单信息,然后将所有订单信息分行显示。如果输入的索引号超过订单长度,则将新订单信息追加在最后。
测试输入:4 ORD-491,零基础学Python,79.8,70
books = []
with open("books.txt", "r", encoding="utf-8") as file:
for line in file:
try:
data = line.strip().split(",")
order_num = data[0]
book_name = data[1]
price = float(data[2])
quantity = float(data[3])
books.append([order_num, book_name, price, quantity])
except IndexError:
pass # 忽略数据格式错误的记录
# (2) 订单添加/插入功能
input_string = input("请输入索引号和订单信息(订单号,书名,价格,数量):")
loc, order_info = input_string.split(' ', 1)
order_info = order_info.split(',')
order_info[2] = float(order_info[2])
order_info[3] = float(order_info[3])
if int(loc) >= len(books):
books.append(order_info)
else:
books.insert(int(loc), order_info)
# (3) 打印所有订单信息
for i, b in enumerate(books, start=1):
print(f"{i}. {','.join(str(item) for item in b)}")
5.
请根据订购数量的降序将订单排序。并能根据输入的顺序号数据(顺序号从1开始)显示对应的订单信息。如果输入的数据超过订单数,显示无此订单。
补充完整以下代码以实现该功能。(10分,每空2.5分)
no = input(“请输入的顺序号”)
if ________________:#1.补充完整if语句
print('无此订单')
else:
books._______(key=lambda x:x[3],__________)#第2、3、空,补充完整排序函数及排序条件
print(_________)#4.显示与no对应的订单信息
测试输入:1;
预期输出:
['ORD-25', '软件测试技术', 36, 48]
测试输入:900
预期输出:无此订单
第1空:
int(no)>len(books)
第2空:
reverse=True
第3空:
sort
第4空:
books[int(no)-1]