文章目录
- 购物车案例
- 已发布:
- 整体框架
- 打印商品列表
- 将商品加入购物车
- 打印购物车、计算总金额
- 完整代码
- 另外说明
购物车案例
已发布:
- python判断语句
- python循环语句
- python之列表list
- 购物车案例
- 后续暂时不更新,有想要的部分,可以后台留言。有时间就会更新上…
问题描述
:一个水果店卖有6种水果,分别是苹果、香蕉、梨、桃子、草莓、菠萝。价格(元\斤)分别为:21、10、14、66、80、6。以上价格仅是作为练习的数据,不具有现实意义
。
要求
:按照一定的格式输出商品的种类和价格。用户通过输入商品的序号,把商品加到购物车。结账时显示购物车中的商品,并输出总金额。
整体框架
购物车案例有三个要求:
- 输出商品的列表(有序号、商品名、单价)、并且要看上去整齐
- 提示用户选择要购买的商品,并将其加入购物车
- 结账时:显示购物车的内容、计算总金额。输出时要求整齐。
考虑以上要求,在设计代码框架时首先就需要思考如何存取数据的问题。有两个数据是全局都需要用到的:商品的名称和单价、购物车的内容。同时还要思考,在客户把商品加入到购物车时,在购物车数据中存储的数据内容是什么,是存储商品的序号?还是存储商品的全部信息?
目前已经学习了列表,那么考虑用列表存储商品的信息和购物车的信息。并且购物车只存储商品的序号。
整体框架代码如下:
products = [["苹果", 21], ["香蕉", 10], ["梨", 14], ["桃子", 66], ["草莓", 80], ["菠萝", 6]] # 商品的信息
shopping_cart = [] # 存放购物车的序号
if __name__ == "__main__":
print_pro() # 打印商品列表
buy_sth() # 向购物车中添加商品
print_cart() # 打印购物车中商品的信息,并计算总金额
打印商品列表
商品信息是使用列表进行存储的,每个商品的名称和单价也是一个列表,那么就可以通过for
循环使用下标进行打印商品的信息和价格。代码如下:
def print_pro():
print("-" * 7, end="")
print("商品列表", end="")
print("-" * 7)
for i, prod in enumerate(products): # 列表可以通过枚举类型enumerate,来同时输出下标,和元素
print(i, end="\t")
print(prod[0], end="\t")
print(prod[1])
将商品加入购物车
在打印商品列表时,每个商品的前面都有其对应的序号,通过输入序号,来选择其对应得商品,加入购物车。商品一种有6个,序号范围是[0, 6),因此如果输入其他的字符,就是结账,打印购物车。
def buy_sth():
while True:
num = int(input("请输入要加入购物车的商品序号;输入其他数字,打印购物车。")) # input输入的格式都是str,因此要使用int()进行类型强制转换。
if num in range(0, 6):
shopping_cart.append(num)
else:
return
打印购物车、计算总金额
购物车中存放的是商品的序号,同时也是商品在商品列表中的下标,因此可以通过购物车中存放的序号直接获取商品的信息,并将其打印出来。
def print_cart():
print("-" * 7, end="")
print("购物车列表", end="")
print("-" * 7)
total = 0
for num in shopping_cart:
print(num, end="\t")
print(products[num][0], end="\t")
print(products[num][1])
total += products[num][1]
print("-" * 20)
print("\t" * 4 + "共记:%d元" % total)
完整代码
products = [["苹果", 21], ["香蕉", 10], ["梨", 14], ["桃子", 66], ["草莓", 80], ["菠萝", 6]]
shopping_cart = []
def print_pro():
print("-" * 7, end="")
print("商品列表", end="")
print("-" * 7)
for i, prod in enumerate(products): # 列表可以通过枚举类型,来同时输出下标,和元素
print(i, end="\t")
print(prod[0], end="\t")
print(prod[1])
def buy_sth():
while True:
num = int(input("请输入要加入购物车的商品序号;输入其他数字,打印购物车。"))
if num in range(0, 6):
shopping_cart.append(num)
else:
return
def print_cart():
print("-" * 7, end="")
print("购物车列表", end="")
print("-" * 7)
total = 0
for num in shopping_cart:
print(num, end="\t")
print(products[num][0], end="\t")
print(products[num][1])
total += products[num][1]
print("-" * 20)
print("\t" * 4 + "共记:%d元" % total)
if __name__ == "__main__":
print_pro()
buy_sth()
print_cart()
运行结果如下:
另外说明
从上面程序运行的结果可以看出,这个代码有很大的改进空间:在商品列表中可以加上表头、在购物车列表中,相同种类的可以合并为数量等等。