ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

购物车小程序

2022-01-18 15:33:24  阅读:153  来源: 互联网

标签:percent 程序 购物车 rmb num print def size


# 1.充值
# 2. 加载中
# 3. 读取数据
# 4. 商品展示
# 5. 购买商品

import time
import json
rmb = 0
car = {}

def chongzhi():
    global rmb
    while True:
        num = input("请充值吧亲:")
        if num.isdecimal():
            print(num)
            rmb = int(num)
            print("恭喜,充值成功,充值金额{}".format(rmb))
            break
        else:
            print("充值失败,请输入一个数字")

def myprocess(percent):
    if percent > 1:
        percent - 1
    strvar = int(percent * 50) * "■"
    print("\r[%-50s]%d%%"%(strvar,percent * 100),end="")

def exe_process():
    recv_size = 0
    total_size = 1000
    while recv_size < total_size:
        time.sleep(0.01)
        recv_size += 10
        percent = recv_size/total_size
        myprocess(percent)

def loading():
    print("商品正在加载中...")
    exe_process()
    print()

def read_data(filename):
    lst = []
    with open(filename,mode="r+",encoding="utf-8") as fp:
        for i in fp:
            dic = json.loads(i)
            lst.append(dic)
        return lst

def show_goods(data):
    strvar = "商品名称".center(18)
    print("序号"+"strvar"+"价格")
    for k,v in enumerate(data,start=1):
        v['num'] = k
        print("{v[num]:<10}{v[name]:<12}{v[price]}".format(v=v))

def error():
    strvar = '''
    +----------------------------------------------------------------+
    |       你输入的选项不存在,请重新输入!        |
    +----------------------------------------------------------------+
    '''
    print(strvar)
    time.sleep(1)

def add_car(num,data):
    if num not in car:
        car[num] = {
            "name":data[num-1]["name"],
            "price":data[num-1]["price"],
            "account":1
        }
    else:
        car[num]["account"] += 1

def show_car(num):
    print("+" + "-" * 60 + "+")
    print("你选择的商品具体信息:")
    print("*-商品名称{}".format(car[num]["name"]))
    print("*-商品单价{}".format(car[num]["price"]))
    print("*-高品数量{}".format(car[num]["account"]))
    print("已经成功加入到购物车~请继续购物~")
    print('请输入n结算!')
    print("+" + "-" * 60 + "+")

def jiesuan():
    total = 0
    print("+------------------- 你购物车中的商品信息如下: ---------------------+")
    for k,v in car.items():
        v["num"] = k
        v["mysum"] = v["price"] * v["account"]
        total += v["mysum"]
        print("序号:{v[num]} 商品名称:{v[name]} 商品单价:{v[price]} 此商品总价:{v[mysum]}".format(v=v))
    return total

def success(total,rmb):
    print("正在结算商品中...")
    exe_process()
    print("请稍后...")
    print("[一共{}元]".format(total))
    print("你已经成功购买以上商品,全额还剩{},欢迎下次光临".format(rmb-total))
    time.sleep(1)

def del_goods(total,rmb):
    print("余额不足,还差{},请忍痛割爱,删除一些商品吧,".format(total-rmb))
    num = input("+-------------------------------- 请输入你要删除的商品序号 ---------------------------------+")
    if num.isdecimal():
        num = int(num)
        if num in car:
            car[num]["account"] -= 1
            if not car[num]["account"]:
                car.pop(num)
            else:
                error()
        else:
            error()
def myexit():
    print("+--------------------------- 欢迎下次光临 -----------------------------+")
    time.sleep(1)

def main():
    chongzhi()
    loading()
    data = read_data("shopping_data.json")
    show_goods(data)
    sign = True
    while sign:
        num = input("请输入你要购买的商品序号:")
        if num.isdecimal():
            num = int(num)
            if 1 <= num <= len(data):
                add_car(num,data)
                show_car(num)
            else:
                error()

        elif num.upper() == "N":
            while True:
                total = jiesuan()
                print(total)
                if total > rmb:
                    del_goods(total, rmb)
                else:
                    success(total, rmb)
                    sign = False
                    break

        elif num.upper() == "Q":
            myexit()
            sign = False
        else:
            error()


main()

shopping_data.json  文件

{"name":"电脑","price":2999}
{"name":"鼠标","price":30}
{"name":"手机","price":1566}
{"name":"键盘","price":998}
{"name":"奶茶","price":10}

标签:percent,程序,购物车,rmb,num,print,def,size
来源: https://www.cnblogs.com/xo1990/p/15818000.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有