Python购物车案例(改善)

内容包含

主要是对python函数之前的一个复习整合和综合利用。

1.通过创建和维护Python购物车程序实验,验证字符串、列表、字典、元组以及集合等对象的使用方法。

2.加深对Python基本数据类型的理解

3.掌握正确使用Python数据类型进行编程的操作技能

难点

1.符字串、列表、字典、元组以及集合等对象的使用场景

2.Python数据类型的综合使用

实现内容

创建购物车程序

使用列表维护购物车

使用字典模拟商品对象,商品对象包含商品名称、商品价格属性

将商品添加到购物车,可以修改购物车程序、添加商品到购物车,修改购物车商品数量等操作。

实现思路

步骤

定义变量,存放商品信息的容器、工资收入、已经下单的商品信息

通过循环分析存放商品信息的容器

(1) 显示商品详情

(2) 根据用户的选择进行购物

① 若是选择0,就退出循环

② 若是选择编号与商品编号不吻合,结束本次循环之前,给出提示

③ 否则,进行正常的购物操作,获得商品的名字和价格,并进行后续的操作,包括

a、薪资 ≥ 商品价格,薪资减去商品价格,已下单的容器中增加一个商品信息

b、薪资 < 商品价格,给出提示

c、薪资 = 0,给出提示

显示用户购物车中全部商品的信息

效果展示

录入工资以及显示商品信息

录入所选商品编号、显示余额

选择0,退出程序

退出程序、显示购物车商品信息

 

退出系统,显示退出信息

代码实现

1.定义容器,存储商城商品的信息
goods_shop={
    1:('草莓蛋糕',20),
    2:('巧克力棒',5),
    3:('蛋糕礼包',80)

这里定义了一个字典,我设置3个key,也就是三种商品,括号内是我后来想调用的value。

2.从控制台动态接收客户的银行存款余额信息
qian=int(input("请输入你的银行存款:"))

这串代码较为简单,就不解释了

3.定义容器,存储所购买的一些商品信息(-> 模拟的是:进入商城,推着购物车准备存放一些货品)
gouwuche={}

定义了一个空字典,后面有用。

 4.通过循环,来模拟客户进入商城购物的情形
while True:
 (1) 显示商城中的商品信息
 print('-'*50+"欢迎来到蛋糕小店"+'-'*50)
    print('商品编号\t\t商品名\t\t售价')
    for id in goods_shop:
        goods_name=goods_shop[id][0]
        goods_price=goods_shop[id][1]
        print(f"{id}\t\t{goods_name}\t\t{goods_price}")

前两行print是为了美观便于理解后续显示内容,id是定义一个变量,为了遍历输出商店里的货品,goods_name和goods_shop是为了显示商品价格和名称,f" "方法算是python中较为方便显示变量的一种方式。

(2)从退控制台动态接收用户所选购的商品的编号(0->出)
user_choice = int(input("请录入您所选购的商品的编号(若是选择0,则退出商城):"))
    all_goods_num=list(goods_shop.keys())

这边我把goods_shop字典中的key值转换成list存储起来,便于后续循环使用。

(3) 动态根据用户选择的商品编号,进行购物操作
  ①若用户选择为0,就退出循环
  ②若用户选择的商品编号不在本商城所出售的商品之内,给出提示,重新选择
  ③进行正常购物
     a) 若银行卡余额 ≥ 商品的售价,正常购物(修改银行存款余额,将选购的商品添加到购物车中)
     b) 若银行卡余额 < 商品的售价,给出提示
    if user_choice ==0:
        print("离开商城了~~~~~~~~~~~~~~~~~~~")
        break
    elif user_choice not in all_goods_num:
        print(f"您输入的商品编号{user_choice}不在{all_goods_num}中,是不是搞错了?(请重新输入)")
    else:
        select_goods_shop=goods_shop[user_choice]
        name= select_goods_shop[0]
        price= select_goods_shop[1]
        if qian >= price:
            qian-=price
            if name  in gouwuche:
                ouwuche[name] += 1
                print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')
            else:
                gouwuche[name]=1
                print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')

        else:
            print(f'目前,您的银行存款余额是【{qian}】元,小于商品的售价【{price}】元,不能正常购物了!')

当user_choice==0时,输出离开商场,break跳出程序,如果user_choice输入的内容不在all_goods_nums中,print(f"您输入的商品编号{user_choice}不在{all_goods_num}中,是不是搞错了?(请重新输入)")这种提示字符,只有当user_choice输入的内容在我们预期之中才会进行下一步操作,也就是进入else中,进入else先重新定义一个量,来储存之前定义的内容,这样做是为了防止程序出现bug,然后进行if判断存款与商品价格的关系进行一系列操作,钱够的话则会进行与gouwuche这个字典的关联,从而实现将商品添加进gowuche。

5.显示购物车中所选购的商品信息
    if len(gouwuche) >= 1:
        print("\n购物车中您所选购的所有商品信息如下所示")
        print("商品名\t\t\t件数")
        print("_" * 25)
        for name in gouwuche:
            print(f"{name}\t\t\t{gouwuche[name]}")
        print()

这里就是简单遍历输出gouwuche中的内容

# 6.给出友好提示
print("\n谢谢您使用本系统!欢迎下次光临回顾!^_^\n")

总代码

# 1.定义容器,存储商城商品的信息 (-> 模拟的是:浏览某商城官网,在首页显示各种商品信息)
goods_shop={
    1:('草莓蛋糕',20),
    2:('巧克力棒',5),
    3:('蛋糕礼包',80)
}
# 2.从控制台动态接收客户的银行存款余额信息
qian=int(input("请输入你的银行存款:"))
# 3.定义容器,存储所购买的一些商品信息(-> 模拟的是:进入商城,推着购物车准备存放一些货品)
gouwuche={}
# 4.通过循环,来模拟客户进入商城购物的情形
while True:
# (1) 显示商城中的商品信息
    print('-'*50+"欢迎来到蛋糕小店"+'-'*50)
    print('商品编号\t\t商品名\t\t售价')
    for id in goods_shop:
        goods_name=goods_shop[id][0]
        goods_price=goods_shop[id][1]
        print(f"{id}\t\t{goods_name}\t\t{goods_price}")
# (2) 从退控制台动态接收用户所选购的商品的编号(0->出)
    user_choice = int(input("请录入您所选购的商品的编号(若是选择0,则退出商城):"))
    all_goods_num=list(goods_shop.keys())
# (3) 动态根据用户选择的商品编号,进行购物操作
#   ①若用户选择为0,就退出循环
#   ②若用户选择的商品编号不在本商城所出售的商品之内,给出提示,重新选择
#   ③进行正常购物
#       a) 若银行卡余额 ≥ 商品的售价,正常购物(修改银行存款余额,将选购的商品添加到购物车中)
#       b) 若银行卡余额 < 商品的售价,给出提示
    if user_choice ==0:
        print("离开商城了~~~~~~~~~~~~~~~~~~~")
        break
    elif user_choice not in all_goods_num:
        print(f"您输入的商品编号{user_choice}不在{all_goods_num}中,是不是搞错了?(请重新输入)")
    else:
        select_goods_shop=goods_shop[user_choice]
        name= select_goods_shop[0]
        price= select_goods_shop[1]
        if qian >= price:
            qian-=price
            if name  in gouwuche:
                ouwuche[name] += 1
                print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')
            else:
                gouwuche[name]=1
                print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')

        else:
            print(f'目前,您的银行存款余额是【{qian}】元,小于商品的售价【{price}】元,不能正常购物了!')
        # 5.显示购物车中所选购的商品信息
    if len(gouwuche) >= 1:
        print("\n购物车中您所选购的所有商品信息如下所示")
        print("商品名\t\t\t件数")
        print("_" * 25)
        for name in gouwuche:
            print(f"{name}\t\t\t{gouwuche[name]}")
        print()
# 6.给出友好提示
print("\n谢谢您使用本系统!欢迎下次光临回顾!^_^\n")

代码更新

def init_shop():
    global goods_shop
    goods_shop={
        1:('草莓蛋糕',20),
        2:('巧克力棒',5),
        3:('蛋糕礼包',80)
    }
def init_qian():
    global qian
    qian=int(input("请输入你的银行存款:"))
def init_gowuche():
    global gouwuche
    gouwuche={}
def list_mall_infos():
    global goods_shop
    print('-'*50+"欢迎来到蛋糕小店"+'-'*50)
    print('商品编号\t\t商品名\t\t售价')
    for id in goods_shop:
        goods_name=goods_shop[id][0]
        goods_price=goods_shop[id][1]
        print(f"{id}\t\t{goods_name}\t\t{goods_price}")
def begin_shopping():
    global qian
    while True:
        list_mall_infos()
        user_choice = int(input("请录入您所选购的商品的编号(若是选择0,则退出商城):"))
        all_goods_num=list(goods_shop.keys())
        if user_choice ==0:
            print("离开商城了~~~~~~~~~~~~~~~~~~~")
            break
        elif user_choice not in all_goods_num:
            print(f"您输入的商品编号{user_choice}不在{all_goods_num}中,是不是搞错了?(请重新输入)")
        else:
            select_goods_shop=goods_shop[user_choice]
            name= select_goods_shop[0]
            price= select_goods_shop[1]
            if qian >= price:
                qian-=price
                if name  in gouwuche:
                    gouwuche[name] += 1
                    print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')
                else:
                    gouwuche[name]=1
                    print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')

            else:
                print(f'目前,您的银行存款余额是【{qian}】元,小于商品的售价【{price}】元,不能正常购物了!')
        # 5.显示购物车中所选购的商品信息
def show_gouwuche():
    if len(gouwuche) >= 1:
        print("\n购物车中您所选购的所有商品信息如下所示")
        print("商品名\t\t\t件数")
        print("_" * 25)
        for name in gouwuche:
            print(f"{name}\t\t\t{gouwuche[name]}")
        print()
# 6.给出友好提示
def bye():
    print("\n谢谢您使用本系统!欢迎下次光临回顾!^_^\n")

init_shop()
init_qian()
init_gowuche()
begin_shopping()
show_gouwuche()
bye()

对代码进行了改善,改成用函数进行调用,会降低阅读难度。

定义了几个函数,

init_shop()
init_qian()
init_gowuche()
list_mall_infos()
begin_shopping()
show_gouwuche()
bye()

这样解答可能更加方便。

init_shop()

def init_shop():
    global goods_shop
    goods_shop={
        1:('草莓蛋糕',20),
        2:('巧克力棒',5),
        3:('蛋糕礼包',80)
    }

这里将这个定义成函数,同时global将goods_shop变成全局变量。

init_qian()、init_gowuche()

def init_qian():
    global qian
    qian=int(input("请输入你的银行存款:"))
def init_gowuche():
    global gouwuche
    gouwuche={}

将这两个变成函数同时变成全局变量。

list_mall_infos()


def list_mall_infos():
    global goods_shop
    print('-'*50+"欢迎来到蛋糕小店"+'-'*50)
    print('商品编号\t\t商品名\t\t售价')
    for id in goods_shop:
        goods_name=goods_shop[id][0]
        goods_price=goods_shop[id][1]
        print(f"{id}\t\t{goods_name}\t\t{goods_price}")

首先调用全局变量,将打印商品的货架变成一个函数。

begin_shopping()

def begin_shopping():
    global qian
    while True:
        list_mall_infos()
        user_choice = int(input("请录入您所选购的商品的编号(若是选择0,则退出商城):"))
        all_goods_num=list(goods_shop.keys())
        if user_choice ==0:
            print("离开商城了~~~~~~~~~~~~~~~~~~~")
            break
        elif user_choice not in all_goods_num:
            print(f"您输入的商品编号{user_choice}不在{all_goods_num}中,是不是搞错了?(请重新输入)")
        else:
            select_goods_shop=goods_shop[user_choice]
            name= select_goods_shop[0]
            price= select_goods_shop[1]
            if qian >= price:
                qian-=price
                if name  in gouwuche:
                    gouwuche[name] += 1
                    print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')
                else:
                    gouwuche[name]=1
                    print(f'您本次所选购的商品的售价是【{price}】元!您的存款余额还剩【{qian}】元')

            else:
                print(f'目前,您的银行存款余额是【{qian}】元,小于商品的售价【{price}】元,不能正常购物了!')
        # 5.显示购物车中所选购的商品信息

调用全局变量qian,里面循环部分也调用了之前定义的函数list_mall_infos来打印货架。

show_gouwuche()

   def show_gouwuche():
        if len(gouwuche) >= 1:
        print("\n购物车中您所选购的所有商品信息如下所示")
        print("商品名\t\t\t件数")
        print("_" * 25)
        for name in gouwuche:
            print(f"{name}\t\t\t{gouwuche[name]}")
        print()

打印购物车里面的东西。

bye()

退出的提示语。

总结

对知识理解即可

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值