第二周 第十节购物车程序

购物车程序:
启动程序后,用户输入工资
输入之后进入循环,让用户不断的打印商品列表,
用户根据商品编号购买商品
用户选择商品之后,检测余额够不够,够的话直接扣款,不够提示余额不够
可以随时退出,退出时,打印已购买的商品和余额

思路:
your salary :
1 iphone 5800
2 mac pro 12000
3 starbuk 31

1

add [phone] to yout shopping cart

2
your

q
退出

you have bought below:[[iphone,5800],[mac pro 12000]]
your balance:399


介绍enumerate的作用:
a=[1,2,3]
for i in enumerate(a):
print(i)

结果显示:
(0, 1)
(1, 2)
(2, 3)

显示的下标和内容

product_list=[('iphone',5800),('mac_pro',9800),('bike',800),('watch',10600),('coffee',31)]
shopping_list=[]
salary=input("intput your salary:")#只输入一次,所以放到外面
if salary.isdigit():#是一个数字,只是字符串的形式,返回是真
salary=int(salary)
while True:
for index,item in enumerate(product_list):#开始打印商品列表,
# print(product_list.index(item),item)#items是从product_list取的元素数据,这种方式每次都要找一次,效率太低
print(index,item)#break要和for对齐,否则,print的只是一个('iphone',5800),而且一直在循环打印这一个
user_choice = input("input your choice:")#判断用户买的东西
if user_choice.isdigit() :#如果输入的是数字形式的,返回真
user_choice = int(user_choice)#将字符类型转换为整形
if user_choice < len(product_list) and user_choice >= 0:#商品编号在里商品列表里
p_item = product_list[user_choice]#取下标出来
if p_item[1] <= salary:#把商品价格取出来跟工资比较
shopping_list.append(p_item)#加入到购物列表
salary -= p_item[1]#扣钱
print("added %s into shopping cart, your current balance is 33[31;1m%s33[0m" % (p_item, salary))#33[31;1m%s33[0m把数字%s包起来了
else:
print("33[41;1m你的余额剩 %s 啦,余额不足33[0m"%(salary))
else:
print("product code [%s] is not exist" % user_choice)
elif user_choice == 'q':
print("---------------shopping list-----------")
for p in shopping_list:
print(p)
print("your current balance:", salary)
exit() # 退出
else: # 和第一个if是对应的,不是0-5 也不是0-5之外的编号,就是一个无效的输入,直接显示无效输入
print("invaild input")
# break#执行完跳出来,是顺序执行的

原文地址:https://www.cnblogs.com/googlewang/p/10704753.html