1 业务需求
商品中心
显示库存的商品
商品能够加入到购物车
个人中心
购物车
修改购物车的商品
下单
完成的订单
订单详情
账户余额
2 代码实现
1 # 定义全局变量信息 2 # 商品编号信息 3 goods_num = {‘G1‘: ‘皮鞋‘, ‘G2‘: ‘皮带‘, ‘G3‘: ‘帽子‘, ‘G4‘: ‘笔记本‘} 4 # 商品单价 5 goods_price = {‘皮鞋‘: 165, ‘皮带‘: 99, ‘帽子‘: 49, ‘笔记本‘: 3999} 6 # 购物车 7 shopping_car = {} 8 # 完成的订单 9 already_paid = {} 10 # 个人编号的功能 11 IdCenter_Num = {‘M1‘:"shopping_car", ‘M2‘:"already_paid"} 12 # 个人中心的功能 13 IdCenter_dict = {"shopping_car": shopping_car, ‘already_paid‘: already_paid} 14 # 账户余额 15 AccountBalance = [400, ] 16 17 18 # 商品选择页面 19 def GoodsFunction(): 20 # 打印商品编号,商品以及对应价格,供选择 21 print(‘序号\t\t\t商品\t\t\t价格‘) 22 for i in goods_num: 23 print(‘%s\t\t\t%s\t\t\t%s‘ % (i, goods_num.get(i), goods_price.get(goods_num.get(i)))) 24 result = input("请输入序号:").strip() 25 # 判断传入参数 26 if result == ‘‘: 27 print("Error:不能为空") 28 elif result == ‘0‘ or result == "1": 29 return result 30 elif result in goods_num: 31 goodname = goods_num.get(result) 32 # 参数为商品编号,传入到AddGood()函数 33 AddGood(goodname) 34 else: 35 print("Error:指令错误,请重新输入") 36 return ‘0‘ 37 38 39 # 加入购物车 40 def AddGood(goodname): 41 N_1 = int(input(‘请输入%s的数量:‘ % goodname)) 42 if N_1 > 0: 43 # 判断商品元素是否存在,存在则修改数量,不存在则追加 44 if goodname in shopping_car: 45 shopping_car[goodname] = N_1 46 print(shopping_car) 47 else: 48 shopping_car.update({goodname:N_1}) 49 print(shopping_car) 50 else: 51 print(‘Error:商品数量有误‘) 52 53 54 # 个人中心 55 def GoIdCenter(): 56 print("欢迎来到个人中心,\n序号\t选项") 57 for i in IdCenter_Num: 58 print(‘%s\t\t%s‘ % (i, IdCenter_Num.get(i))) 59 print("\n账户余额:%s\n0\t商品页\n1\t个人中心(购物车、订单、余额)" % AccountBalance[0]) 60 result = input("请输入序号:").strip() 61 if result == ‘‘: 62 print("Error:不能为空,请重新输入!") 63 elif result == ‘0‘ or result == ‘1‘: 64 return result 65 elif result in IdCenter_Num: 66 if result == ‘M1‘: 67 # 购物车操作函数,flag作为操作标识,如果返回不为空则将返回值在此返回并跳出循环 68 flag = ‘‘ 69 while True: 70 flag = ShopCartFun() 71 if flag != ‘‘: 72 return flag 73 continue 74 elif result == ‘M2‘: 75 # 订单查看函数 76 GoodOrder() 77 return 1 78 else: 79 print("Error:指令错误,请重新输入!") 80 return ‘1‘ 81 82 83 # 购物车操作 84 def ShopCartFun(): 85 # 判断购物车是否为空 86 if shopping_car: 87 print(‘购物车\n商品名\t\t数量\t\t单价\t\t总价‘) 88 for i in shopping_car: 89 # 打印购物车商品详单 90 print(‘%s\t%s\t\t%s\t\t%s‘ % (i, shopping_car.get(i), goods_price.get(i), shopping_car.get(i) * goods_price.get(i))) 91 else: 92 print("你的购物车空旷如也") 93 print(‘\n0\t商品页\n1\t个人中心(购物车、订单、余额)\n2\t清空购物车\n3\t结账\n修改商品数量请输入商品名。‘) 94 result = input("请输入:").strip() 95 if result == ‘‘: 96 print("不能为空,请重新输入") 97 elif result == ‘0‘ or result == ‘1‘ or result == ‘3‘: 98 # 3为结账选项,返回到主函数,调用结账函数 99 return result 100 elif result in shopping_car: 101 # 修改商品数量,再次调用AddGood()函数 102 AddGood(result) 103 else: 104 print("指令错误,请重新输入") 105 return ‘‘ 106 107 108 # 结账函数 109 def CheckOut(): 110 # 购物车金额合计 111 Total = 0 112 for i in shopping_car: 113 Total += shopping_car.get(i) * goods_price.get(i) 114 print(Total) 115 # 判断是否满足结账条件 116 if Total > AccountBalance[0]: 117 print("余额不足") 118 else: 119 import time 120 # 生成时间戳,作为订单号 121 Date = int(time.time()) 122 # 生成订单呢 123 already_paid.update({Date:shopping_car}) 124 # 扣款 125 AccountBalance[0] = AccountBalance[0] - Total 126 # 购物车清空 127 shopping_car.clear() 128 return ‘1‘ 129 130 131 # 查看订单详情 132 def GoodOrder(): 133 if already_paid: 134 print(‘完成订单\n订单号‘) 135 for i in already_paid: 136 print(i) 137 print(‘\n0\t商品页\n1\t个人中心(购物车、订单、余额)‘) 138 N_2 = int(input(‘\n输入要查看的订单号:‘).strip()) 139 if N_2 == ‘‘: 140 print(‘不能为空,请重新输入‘) 141 elif N_2 == ‘0‘ or N_2 == ‘1‘: 142 return N_2 143 elif N_2 in already_paid: 144 print(‘订单%s详情商品名\t数量\t总价‘%N_2) 145 for i in already_paid.get(N_2): 146 print(‘%s\t%s\t%s‘ % (i, already_paid.get(N_2).get(i), goods_price.get(i) * already_paid.get(N_2).get(i))) 147 else: 148 print(‘输入有误‘) 149 150 151 if __name__ == "__main__": 152 N = GoodsFunction() 153 while True: 154 if N == ‘0‘: 155 N = GoodsFunction() 156 elif N == ‘1‘: 157 N = GoIdCenter() 158 elif N == ‘2‘: 159 shopping_car = {} 160 N = GoodsFunction() 161 elif N == ‘3‘: 162 N = CheckOut()
3 个人理解
任何事物都可分为两个维度,属性和方法,属性可理解数据结构,方法就是对数据结构操作的动作。
确定数据的结构,数据结构是用来存存储数据的地方,它本身也是对象。
一个函数的返回结果可能是另外一个函数形式参数。
无论是面向对象还是面向过程的编程,都是需要立足于现实的业务逻辑。
对于程序,我们需要多写多练习,当你回头看的时候,你会发现原来困扰你的问题会很简单。
4 思路来源
http://www.cnblogs.com/ikmi/p/6195065.html
原文地址:https://www.cnblogs.com/pythonproject/p/8944135.html
时间: 2024-11-02 17:07:28