文章目录

  • 购物车案例
  • 已发布:
  • 整体框架
  • 打印商品列表
  • 将商品加入购物车
  • 打印购物车、计算总金额
  • 完整代码
  • 另外说明


购物车案例

已发布:

  • 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()

运行结果如下:

python水果列表怎么写 python买水果_枚举类型

另外说明

从上面程序运行的结果可以看出,这个代码有很大的改进空间:在商品列表中可以加上表头、在购物车列表中,相同种类的可以合并为数量等等。