版权声明:本文为博主原创文章,转载请注明作者和出处。https://blog.csdn.net/xq920831/article/details/82017084
第三天学习一个购物车程序。
购物车程序要求:
1. 启动程序后,让用户输入工资,然后打印商品列表。
2. 允许用户根据商品编号进行购买。
3. 用户选择商品后,检查余额是否足够,够就直接扣款,不够给出提示。
4. 可随时退出,退出时打印已购买的商品和余额。
以下为自己编写的python程序
# -*- coding:utf-8 -*-
# Author: Agent Xu
goods =[['1','bear','5.88'],
['2','meat','12.88'],
['3','fish','8.88'],
['4','egg','3.88'],
['5','apple','4.88']]
tip = True
sumcost = 0
list_goods = []
price_goods = []
for i in range(len(goods)):
price_goods.append(goods[i][2])
print(price_goods)
salary = float(input('input your salary:'))
if salary<float(min(price_goods)):
print('sorry,your salary is too lower to shopping.')
else:
while(tip):
for i in goods:
print(i)
numbers = input('please input the number of goods:')
if numbers == 'q':
if list_goods == []:
print('your have bought nothing.')
tip = False
else:
print('已购买商品:{}'.format(list_goods))
print('总花费:{}'.format(sumcost))
print('余额:{}'.format(salary-sumcost))
else:
numbers=int(numbers)
cost = float(goods[numbers-1][2])
cost1 = cost
list_goods.append(goods[numbers-1][1])
sumcost = float(sumcost+cost)
if sumcost<salary:
print('thank you for shopping!')
print('you have bought:')
print(list_goods)
continue
else:
print("sorry,you can't buy anymore.")
#print(goods)
list_goods.pop()
print('已购买商品:{}'.format(list_goods))
print('总花费:{}'.format(sumcost-cost1))
print('余额:{}'.format(salary-sumcost+cost1))
choose = input('Continue?(y/n):')
if choose == 'y':
sumcost = sumcost-cost1
continue
else:
tip = False
听了Alex的课程后,有几个部分可以优化的:
1. 产品列表可以不放入编号,在打印列表时直接打印,有两种方式:
产品列表
goods =[['bear','5.88'],
['meat','12.88'],
['fish','8.88'],
['egg','3.88'],
['apple','4.88']]
-
for item in goods: print(goods.index(item),item)
-
for index,item in enumerate(goods): print(index,item)
2. 少了一个判断输入的数字是否超过商品数的模块。
3. 可以在每次购买后打印一个已购买什么商品,余额多少(高亮显示),用以提示。
4. 需要判断开始的输入是否为数字,用以提示。
所以下面放上Alix老师的课程代码。
__author__ = "Alex Li"
product_list = [
('Iphone',5800),
('Mac Pro',9800),
('Bike',800),
('Watch',10600),
('Coffee',31),
('Alex Python',120),
]
shopping_list = []
salary = input("Input your salary:")
if salary.isdigit():
salary = int(salary)
while True:
for index,item in enumerate(product_list):
#print(product_list.index(item),item)
print(index,item)
user_choice = input("选择要买嘛?>>>:")
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 \033[31;1m%s\033[0m" %(p_item,salary) )
else:
print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[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:
print("invalid option")