1.要求
- 写一个python购物车可以输入用户初始化金额
- 可以打印商品,且用户输入编号,即可购买商品
- 购物时计算用户余额,是否可以购买物品
- 退出结算时打印购物小票
2.流程图

3.代码
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author Kevin Liu
salary = input("输入工资额:")
if salary.isdigit(): #判断输入是不是整数
salary = int(salary)
else:
exit("输入数字!")
print("欢迎光临!".center(50,"-"))
exit_flag = True #循环控制
product_list = [ #商品列表
('IPhone',6600),
('MAC Pro',8000),
('MAC Ari',7000),
('Xiao Mi 5',1999),
('OPPO R9S',2799),
('Coffee',35),
('Tesla',870000),
('BMW 330Lim',340000),
('Giant',2400),
('CK 内裤',240),
]
shop_cart = [] #购物车列表,初始为空
while exit_flag is True:
print("商品列表".center(60,"-"))
for item in enumerate(product_list):
index = item[0]
product_name = item[1][0]
product_price = item[1][1]
print(index,'.',product_name,product_price)
user_choice = input("[q=quit,c=check]你想买啥?")
if user_choice.isdigit(): #判断用户输入是不是数字
user_choice = int(user_choice)
if user_choice < len(product_list): #输入不能超过商品列表的额长度
product_item = product_list[user_choice] #用户选中商品
if product_item[1] <= salary: #预算充足,可以买
shop_cart.append(product_item) #商品加入购物车
salary -= product_item[1] #预算减去已选商品
print("[%s]已经加入购物车,当前余额还有\033[31;1m[%s]\033[0m" % (product_item,salary)) #\033[31;1m \033[0m 这个写法是把字符串调成绿色
else:
print("当前余额还剩%s,不能买了!" %(salary))
else:
if user_choice == 'q' or user_choice == 'quit': #退出购物车,不再购买,输出已经购买列表,输出余额还有多少,退出循环
print("购物车中的商品有".center(60,'*'))
for item in shop_cart:
print(item)
print("End".center(60,'*'))
print("余额还有%s" % salary)
print("拜拜!")
exit_flag = False
elif user_choice == 'c' or user_choice == 'check': #查看已经购买的商品列表,并输出余额
print("购物车中的商品有".center(60,'*'))
for item in shop_cart:
print(item)
print("End".center(60,'*'))
print("余额还有\033[31;1m[%s]\033[0m" % salary)

浙公网安备 33010602011771号