根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,终用户输入q退出时,打印购买的商品列表。

一、问题:

现有商品列表如下:
1、products = [[“iphone”,6888],[“MacPro”,14800],[“小米6”,2499],[“Coffee”,31],[“Book”,60], [“Nike”,699]],需打印出以下格式:

------ 商品列表 -----
0 iphone 6888
1 MacPro 14800
2 小米6 2499
3 Coffee 31
4 Book 60
5 Nike 699
2、根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,终用户输入q退出时,打印购买的商品列表。

二、用python解决问题

1、第一问比较简单,直接上代码:

products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60], ["Nike",699]]
i = 0
length = len(products)
 
while i<length:
    print(i, products[i][0], products[i][1])
    i = i + 1

用while循环就可以搞定了,当然也可以用for循环。

2、第二问就有点复杂了。

根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,终用户输入q退出时,打印购买的商品列表。

2.1、首先是不断询问用户想买什么,大的循环是一个死循环,当满足输入为q时退出,即触发不满足死循环的条件,程序结束。

我们这里用while循环,那么首先就要定义一个变量index,将其赋值为True,当输入为q时,将index置为False,同时输入为0-5时,进行购物。

index = True
 
while index:
    choice = input("请输入要购买的商品编号:")
    if choice>=0 and choice <len(products):
        #购物
    
    elif choice =='q':
        #打印购物清单
        index = False

2.2、完善购物功能

需要把选择的商品添加到购物车中,那么就需要一个列表来"装"商品。定义变量shopping= []。

购物功能就是将商品添加到购物车中,即shopping.append(商品)。

购物代码如下:

choice = input("请输入要购买的商品编号:")
    if choice.isdigit():          #判断是否是数字
        choice = int(choice)      #强制类型转换
        if choice>=0 and choice <length:
            shopping.append(products[choice])
            print("您已经添加了%s号商品到购物车" % products[choice])

此处有一个地方需要注意:从键盘输入的数str类型,而判断是否在商品编号的范围需要int类型,所以需要强制类型转换。

2.3、完善打印商品清单功能

变量shopping列表,打印即可,我最开始的代码是这样的

 elif choice =='q':
        if len(shopping)>0:
            print("-----您已经购买以下商品-----")
            for k,shop in shopping:
                print("%s %s %s"%(k,shop[0],shop[1]))
 
        index = False

然后运行程序,在购物部分,没有问题,但是在输打印清单的时候,报错了。

错误是:TypeError: ‘int’ object is not subscriptable

我查了一下,详见:object is not subscriptable 。也就是说shop是int型的变量,不能用shop[i]操作。

我参考了其他人的解法,改这段代码为

 elif choice =='q':
        if len(shopping)>0:
            print("-----您已经购买以下商品-----")
            for k,shop in enumerate(shopping):
                print("%s %s %s"%(k,shop[0],shop[1]))
 
        index = False

这里用到了enumerate。对于enumerate,详见:enumerate

最后搞定了。

2.4、完整代码

products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60], ["Nike",699]]
i = 0
length = len(products)
 
while i<length:
    print(i, products[i][0], products[i][1])
    i = i + 1
 
index = True
shopping = []
 
while index:
    choice = input("请输入要购买的商品编号:")
    if choice.isdigit():        #判断是否为数字
        choice = int(choice)    #强制类型转换
        if choice>=0 and choice <length:
            shopping.append(products[choice])
            print("您已经添加了%s号商品到购物车" % products[choice])
        else:
            print("该商品不存在")
 
    elif choice =='q':
        if len(shopping)>0:
            print("-----您已经购买以下商品-----")
            for k,shop in enumerate(shopping):
                print("%s %s %s"%(k,shop[0],shop[1]))
        index = False

原文

是的,可以使用Python语言来实现将商品信息持久存入文件,然后在另一个文件中读取并打印出来的功能。以下是一个简单的示例代码: ```python # 商品信息入文件 def write_to_file(product_name, price, quantity): with open('products.txt', 'a') as f: f.write(f"{product_name}\t{price}\t{quantity}\n") # 商品信息读取并打印 def print_products(): print("商品名称\t商品单价\t购买数量\t金额小计") with open('products.txt', 'r') as f: for line in f: product_name, price, quantity = line.strip().split('\t') subtotal = float(price) * int(quantity) print(f"{product_name}\t\t{price}\t\t{quantity}\t\t{subtotal}") # 主程序 while True: product_name = input("请输入购买商品名称:【】") price = input("请输入购买商品单价:【】") quantity = input("请输入购买商品数量:【】") write_to_file(product_name, price, quantity) is_continue = input("是否继续结账下一种商品(yes/no):【】") if is_continue.lower() == 'no': break print_products() ``` 在这个示例代码中,首先定义了两个函数,一个用于将商品信息入文件,另一个用于从文件中读取并打印商品信息。在主程序中,通过循环不断询问用户购买商品信息,并将其入文件。当用户不再需要购买商品,程序会调用 `print_products()` 函数来读取并打印所有商品信息。 注意,这个示例代码并没有对用户输入进行任何错误处理和验证,实际使用需要根据具体情况进行完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值