学习python第10天。
关于python实现购物车程序,网上已经有很多了,但是看了一圈,都是打印商品列表,用户选择,最后打印出所选物品的总金额。但是,这道题如果要加上余额,加上计数,实现比较跟现实相贴近的状况,至少我没找到。
题目如下:
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 6992. 提示用户输入预算,并在每次购买时查看余额是否充足。不足时,提示“余额不足”。
(1)根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购买的商品列表。
(2)购买结束时,输出全部购买产品的编码、名称、单价和数量,并在最后集中显示“总计”和“余额”
例如: 请输入您的预算:10000 ------ 商品列表 ------ 0 iphone 6888 1 MacPro 14800 2 小米6 2499 3 Coffee 31 4 Book 60 5 Nike 699 请选择您要购买的商品编码:1 您的余额不足。 ------ 商品列表 ------ 0 iphone 6888 1 MacPro 14800 2 小米6 2499 3 Coffee 31 4 Book 60 5 Nike 699 请选择您要购买的商品编码:0 已将iphone放入购物车。 ------ 商品列表 ------ 0 iphone 6888 1 MacPro 14800 2 小米6 2499 3 Coffee 31 4 Book 60 5 Nike 699 请选择您要购买的商品编码:q ------ 购物清单 ------ 编码 商品名称 单价 数量 0 iphone 6888 1 ---------------------------- 总计 6888元 余额 3112元 感谢您的惠顾。原来的思维是,用户输入编号,用一个空列表shoping存放每次用户选择的物品。但是,用户可能会重复选择一个物品,比如我选了3次iphone,如果不去重,最终打印出来的效果就类似于这样:
-----购物车列表----- 编号 名称 价格 数量 1 iphone 6888 1 2 iphone 6888 1 3 iphone 6888 1 ---------------
而我想实现的是:
-----购物车列表----- 编号 名称 价格 数量 1 iphone 6888 3 ---------------
一开始想用set(shoping),但是出现TypeError: unhashable type: 'list'错误,经过https://blog.csdn.net/lyq_12/article/details/81260427扫盲,发现这个没办法解决,只能另外想办法,用function6里的模块去重。
1、代码自己感觉很凌乱,但至少思路感觉还是对的。
2、没有考虑到用户输入非数值的情况,如果直接输入字母会报错。
