python实现购物车功能和结算功能

import math
商品的信息字典
dict_commodity_info = {
    101: {"name": "屠龙刀", "price": 10000},
    102: {"name": "倚天剑", "price": 10000},
    103: {"name": "九阴白骨爪", "price": 8000},
    104: {"name": "九阳神功", "price": 9000},
    105: {"name": "降龙十八掌", "price": 8000},
    106: {"name": "乾坤大挪移", "price": 10000}
}
购买物品的列表
list_orders = []

def print_menu():
    print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=")
    print("1、购买商品")
    print("2、商品结算")
    print("3、退出系统")
    print("+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-")
    
def print_commodity_info():
    """
    打印商品信息
    :return: 
    """
    for key, value in dict_commodity_info.items():
        print("编号:%d,名称:%s,单价:%d。" % (key, value["name"], value["price"]))
   
def choice_commodity():
    """
    用户购买商品
    :return: 用户购买商品编号和数量{"cid": 商品编号, "count": 数量}
    """
    while True:
        cid = int(input("请输入商品编号:"))
        if cid in dict_commodity_info:
            break
        else:
            print("该商品不存在")
    count = int(input("请输入购买数量:"))
    return {"cid": cid, "count": count}

def print_buying_info():
    """
    打印用户购买的商品信息
    :return:
    """
    for item in list_orders:
        commodity_id = dict_commodity_info[item["cid"]]
        print("商品:%s,单价:%d,数量:%d." % (commodity_id["name"], commodity_id["price"], item["count"]))
    calculate_total_price()

def calculate_total_price():
    """
    计算用户购买商品的总价格
    :return: 用户购买商品的总价格(total_price)
    """
    total_price = 0
    for item in list_orders:
        commodity_id = dict_commodity_info[item["cid"]]
        total_price += commodity_id["price"] * item["count"]
    return total_price

def print_two_menu():
    """
    打印二级菜单
    :return:
    """
    print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=")
    print("1、继续购物")
    print("2、结束购物")
    print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=")
    choice_two_menu()

def choice_two_menu():
    """
    二级菜单的选择输入
    :return:
    """
    choice = input("请选择功能>")
    if choice == "1":
        buying()
    elif choice == "2":
        exit()
    else:
        print("输入错误,请重新输入")
        print_two_menu()

def total_prices():
    """
    用户输入价格,并计算价格
    :return:
    """
    if calculate_total_price() == 0:
        print("你没有选择商品,请选择购买商品")
        buying()
    else:
        while True:
            input_money = float(input("总价%d元,请输入金额:" % calculate_total_price()))
            if input_money >= calculate_total_price():
                print("购买成功,找回:%d元。" % (input_money - calculate_total_price()))
                list_orders.clear()
                print_two_menu()
            else:
                moneys = order_pay_money(input_money)
                if moneys >= calculate_total_price():
                    print("购买成功,找回:%d元。" % (moneys - calculate_total_price()))
                    list_orders.clear()
                    print_two_menu()

def order_pay_money(order_input_money):
    """
    当第一次支付的金额不够时,进行第二次支付
    :param order_input_money: 第一次支付的钱
    :return: 第一次和第二次的总和
    """
    total_money = order_input_money
    total_moneys = 0
    print("金额不足.还需要支付%d元-_-" % (math.fabs(total_money - calculate_total_price())))
    two_input_money = float(input("请继续支付%d元 >" % (math.fabs(total_money - calculate_total_price()))))
    total_moneys = total_money + two_input_money
    return total_moneys

def buying():
    """
    用户选择功能主菜单
    :return:
    """
    while True:
        print_menu()
        item = input("请选择功能>")
        if item == "1":
            print_commodity_info()
            list_orders.append(choice_commodity())
            print("添加到购物车。")
        elif item == "2":
            print_buying_info()
            total_prices()
        elif item == "3":
            exit()
            
if __name__ == "__main__":
    buying()
发布了32 篇原创文章 · 获赞 7 · 访问量 7756

猜你喜欢

转载自blog.csdn.net/adim__/article/details/104077949