一、问题:
现有商品列表如下:
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