zoukankan      html  css  js  c++  java
  • python模拟购物车小项目

    # 模拟购物车:
    # 要求:
    # 1,用户先给自己的账户充钱:比如先充3000元。
    # 2,有如下的一个格式:
    # goods = [{"name": "电脑", "price": 1999},
    # {"name": "鼠标", "price": 10},
    # {"name": "游艇", "price": 20},
    # {"name": "美女", "price": 998},]
    # 3,页面显示 序号 + 商品名称 + 商品价格,如:
    # 1 电脑 1999
    # 2 鼠标 10
    # …
    #
    # 4,用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,
    # 添加到购物车(自己定义购物车),用户还可继续添加商品。
    # 5,如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    # 6,用户输入N为购物车结算,依次显示用户购物车里面的商品,数量及单价,
    # 若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。
    # 7,用户输入Q或者q退出程序。
    # 8,退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少。
    # 充值金额
    # a =0
    # b =int(input())
    f1 =0
    s2 =0
    my_list2 =[] #已经购买的商品列表
    def chongzhi(b):
    """
    b:充值的金额
    s2充值后余额
    """
    global s2
    s2 += b
    print(f"充值后余额{s2}")
    return s2


    goods = [{"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998}, ]
    my_list1 = [] # 商品列表初始
    for i, dic in enumerate(goods):
    a, b = list(dic.values()) # 利用字典键值对中的值转换成列表进行拆包
    print(i + 1, a, b)
    my_list1.append(list(dic.values()))
    # print(my_list1)
    my_buy = [] # 购物车列表
    my_buy_dic = {}

    for i, v in enumerate(my_list1):
    my_buy_dic[f"{i + 1}"] = v # 给字典 的键转换成数字型字符串
    # {'1': ['电脑', 1999], '2': ['鼠标', 10], '3': ['游艇', 20], '4': ['美女', 998]}


    # print(my_buy_dic.keys())

    def add_buy(wupin):
    if wupin not in my_buy_dic.keys():
    print("输入错误请重新输入")
    return
    else:
    # print(my_buy_dic[wupin])
    my_buy.append(my_buy_dic[wupin])
    print("添加商品成功")
    print(f"购物车列表:{my_buy}")
    my_buy_settlement = {}
    for i in my_buy:

    if str(i) not in my_buy_settlement:
    my_buy_settlement.setdefault(str(i), 1)
    else:
    my_buy_settlement[str(i)] += 1
    # print(my_buy_settlement)
    for k, v in my_buy_settlement.items():
    # print(eval(k),v)
    s = ' '.join(str(i) for i in eval(k))
    print(s, v)
    return my_buy
    def buy_Settlement11(my_buy,s1): #s1 充值后的余额
    print(my_buy)
    my_buy_settlement = {}
    for i in my_buy:

    if str(i) not in my_buy_settlement:
    my_buy_settlement.setdefault(str(i), 1)
    else:
    my_buy_settlement[str(i)] += 1
    print(my_buy_settlement)
    count = 0
    for k,v in my_buy_settlement.items():
    # values = ','.join([unicode(i) for i in value_list])
    count+=eval(k)[-1] * v
    print(count)
    if count > int(float((s1))):
    print("用户钱不足,请删减购物车,或者充值")
    return
    else:
    global f1
    f1= s1 - count
    my_list2.extend(my_buy)
    print(f"结算后余额是{f1}元")
    return f"结算后余额是{f1}元"
    def del_my_buy(my_buy):
    print("删除购物车中商品开始")
    print(my_buy)
    if len(my_buy)!=0:
    my_buy.pop()
    else:
    print("购物车中已经没有商品了!")
    # print("删除购物车列表中最后一个商品后:")
    # print(f"购物车列表:{my_buy}")
    return my_buy
    def xunhuan():
    while True:
    wupin = input("请用户输入商品序号:")
    if wupin.upper() == "Q":
    print("退出程序")
    if my_list2:
    print(f"购买的商品为:{my_buy}",f"余额{f1}元")
    else:
    print("您没有结算")
    return "退出程序"
    elif wupin.upper() == "N":
    print("开始结算")
    buy_Settlement11(my_buy,s2)
    elif wupin.upper()=="C":
    b =int(input())
    chongzhi(b)
    elif wupin.upper()=="D":
    del_my_buy(my_buy)

    else:
    add_buy(wupin)

    def appstart():
    xunhuan()

    appstart()
    人生苦短,我用python
  • 相关阅读:
    洛谷⑨月月赛Round2 官方比赛 OI
    3243 区间翻转
    3279 奶牛健美操
    1959 拔河比赛
    2144 砝码称重 2
    BZOJ1999 树网的核[数据加强版]
    U4704 函数
    U4687 不无聊的序列
    U4699 鸡蛋
    UVA 11212 Editing a Book
  • 原文地址:https://www.cnblogs.com/niucunguo/p/12003084.html
Copyright © 2011-2022 走看看