Python B

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]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值