一、 功能:
1、 用户充值余额
判断余额输入格式是否正确,正确则转换成float型。
2、 显示商品列表
根据已有商品显示所有商品的序号、商品名称、和价格供用户选择
3、 用户选择商品
判断用户输入
(1) 若输入为数字则判断是否为负或超出商品序号范围
(2) 若输出为“q”则打印已选择商品,并退出
(3) 若前者都不是则判断非法,重新选择
4、 用户选择商品后判断余额是否能够支付已选择商品的总价格
(1) 可以支付则继续选择
(2) 不可支付则提醒充值,充值完成后继续选择购买
二、 流程图
三、 代码
1 # Author:晴空无云 2 #购物车存储列表 3 cartlist = [] 4 #商品列表 5 goodslist = [[1,'note',1.0],[2,'Python Struct',88.0],[3,'Java',55.0],[4,'C++',1.0],] 6 #余额, 7 balance = input("请充值:") 8 #判断余额是否合法 9 if balance.isdigit(): 10 #将balance转置成float 11 balance = float(balance) 12 while balance>=0:#余额不为负 13 print("*******商品列表********") 14 for index,item in enumerate(goodslist,start=1): 15 print(item) 16 user_choice = input("请选择购买商品:") 17 if user_choice.isdigit():# 判断商品选择是否合法 18 # 选择商品从1开始,列表下标是0 19 user_choice = int(user_choice)-1 20 if user_choice < 0: 21 print("非法输入,商品序号不能为负") 22 elif (user_choice < len(goodslist)): 23 price = goodslist[user_choice][2] 24 if balance - price >=0 : 25 balance = balance - price 26 print("选择的商品为:",goodslist[user_choice]) 27 print("余额为:", balance) 28 cartlist.extend(goodslist[user_choice]) 29 else: 30 now_salar = input("余额不足,请充值:") 31 if now_salar.isdigit(): 32 now_salar = int(now_salar) 33 balance = balance + now_salar 34 print("余额为:", balance) 35 else: 36 print("非法输入") 37 38 else: 39 print("选择商品不存在") 40 elif user_choice=="q": 41 print("-----已选购商品-----") 42 print(cartlist) 43 print("-----余额------") 44 print(balance, '元') 45 break 46 else: 47 print("商品序号非法输入") 48 else: 49 print("余额输入非法")
四、 测试结果
1. 余额输入非法
请充值:d 余额输入非法 ********** 请充值:-1 余额输入非法
2. 测试打印商品列表
请充值:99 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:
3.测试购买商品
请选择购买商品:1 选择的商品为: [1, 'note', 1.0] 余额为: 98.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:2 选择的商品为: [2, 'Python Struct', 88.0] 余额为: 10.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:
4. 测试余额不足下充值
余额为: 9.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:2 余额不足,请充值:55 余额为: 64.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:
5. 测试商品序号非法输入
*******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:0 非法输入,商品序号不能为0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:-1 商品序号非法输入 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:5 选择商品不存在 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:dd 商品序号非法输入 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:
6. 测试退出购买
请充值:999 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:1 选择的商品为: [1, 'note', 1.0] 余额为: 998.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:3 选择的商品为: [3, 'Java', 55.0] 余额为: 943.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:2 选择的商品为: [2, 'Python Struct', 88.0] 余额为: 855.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:4 选择的商品为: [4, 'C++', 1.0] 余额为: 854.0 *******商品列表******** [1, 'note', 1.0] [2, 'Python Struct', 88.0] [3, 'Java', 55.0] [4, 'C++', 1.0] 请选择购买商品:q -----已选购商品----- [1, 'note', 1.0] [3, 'Java', 55.0] [2, 'Python Struct', 88.0] [4, 'C++', 1.0] -----总消费------ 145.0 -----余额------ 854.0 元