购物小程序需求
1、用户启动时先输入工资
2、用户启动程序后打印商品列表
3、允许用户选择购买商品
4、允许用户不断的购买各种商品
5、购买时检测,余额是否足够,如果足够,就直接扣款,否则打印余额不足
6、允许用户主动退出程序,退出时打印已购买商品列表
流程图
流程说明:1、输入当前薪资;2、如果输入为数字,执行下面步骤,否则重新输入;3、显示欢迎信息;4、进入购物车,首先显示商品列表信息;5、输入商品对应的编号或者q退出;6、如果输入的是数字,则再判断输入的编号是否在商品编号的范围内,在编号范围内时,接下来判断是否买得起选择的商品,不在编号范围内就输出编号不存在重新输入;7、如果输入的为非数字,先判断是否为q,如果是q则退出购物车,显示购物清单和余额,如果为非q,则为非法字符,需重新输入。8、在选择商品时,可以不断购买商品并且循环显示商品清单和购物清单及余额信息。
程序如下:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Jack.Lee 4 # FileName: shopping_car.py 5 6 product_list = [ #创建商品列表 7 ('Bike',1300), 8 ('Ipad mini4',2800), 9 ('Huawei P9', 3700), 10 ('Iphone 7',6800), 11 ('Thinkpad X2',7000), 12 ('Dell R920',30000), 13 ('Cayenne car',1000000) 14 ] 15 shopping_car = [] #定义购物车列表,开始为空 16 login_flag = False #退出标志位 17 repeated_input = False 18 #print("\033[34;1m欢迎来到欢乐购商城\033[0m".center(50, '-')) 19 while not repeated_input: 20 salary = input("请输入你当前的薪资:") 21 if salary.isdigit(): #检测字符串是否只由数字组成 22 salary = int(salary) #把输入的转化为整型 23 print("\033[34;1m欢迎来到欢乐购商城\033[0m".center(50, '-')) 24 while not login_flag: 25 print("商品列表如下所示".center(40,'-')) 26 for item in enumerate(product_list): 27 index = item[0] # 获取商品序号 28 p_name = item[1][0] # 获取商品名称 29 p_price = item[1][1] # 获取商品价格 30 print(index, '.',p_name, p_price) #打印商品序号,名称价格 31 choice = input("请选择要购买商品对应的编号(选择q结束选购):") 32 if choice.isdigit(): 33 choice = int(choice) 34 if choice < len(product_list) and choice >=0: #判断输入的编号是否在产品编号内 35 choice_product = product_list[choice] #获取对应商品 36 if choice_product[1] <= salary: #当选择的商品价格是否小于工资,证明买得起商品。 37 shopping_car.append(choice_product) #添加到购物车 38 salary = salary - choice_product[1] #减去购买的商品价格所剩余额 39 print("购物车清单".center(30,'*')) #显示购物车清单标题 40 for item in shopping_car: #显示购物车商品清单 41 print(item) 42 print("你当前的余额为%s".center(30,'*')%salary) #显示当前余额 43 else: 44 print("\033[31;1m你的余额只剩下%s元,不足以购买%s\033[0m"%(salary,choice_product[0])) #如果选择的商品价格大于余额,显示余额不足提示 45 else: 46 print("你输入的编号不存在。") #如果选择的编号不在商品对应编号的范围内,提示编号不存在 47 elif choice == 'q': #选择q退出购物,进入购物清单 48 print("购物车清单".center(30, '*')) 49 for item in shopping_car: 50 print(item) 51 print("你当前的余额为%s".center(30, '*') % salary) 52 login_flag = True #退出整个购物流程 53 else: 54 print("输入有误,请重新选择") 55 repeated_input = True 56 else: # 如果薪水输入错误 57 print("\033[31;1m薪资输入为非数字,请重新输入。\033[0m" )
Keep empowering yourself successfully...