当前位置: 首页 > news >正文

python写商品管理练习

#1、添加
    #1、商品名称
        #1、要从文件里面把所有的商品读出来
    #2、价格
        #1、写一个方法判断是否为合理的价格
    #3、数量
        #整数
   # product = {
   #      "爱疯差":{
   #        "price":999.98,
   #        "count":5
   #      },
   #    "car":{
   #      "price":32423432,
   #      "count":10
   #    }
   #  }
   # product['mac'] = {"price":9999,"count":5}

    # write(product)
    # 写入文件,最新的商品写进去
#2、删除
    # 1、商品名称
        # 1、要从文件里面把所有的商品读出来
# product = {
#     "爱疯差": {
#         "price": 999.98,
#         "count": 5
#     },
#
# }
# product.pop('car')

#3、查询
    # 1、要从文件里面把所有的商品读出来

FILENAME = 'product.json'
import json
import os
def get_product():
    with open(FILENAME,'a+',encoding='utf-8') as fr:
        fr.seek(0)
        content = fr.read()
        if content:
            res = json.loads(content)
        else:
            res = {}
    return res

def is_price(s):
    s=str(s)
    if s.count('.')==1:
        left,right = s.split('.')
        if left.isdigit() and right.isdigit():
            print('正小数')
            return float(s)
    elif s.isdigit():
        if int(s)>0:
            print('大于0的整数')
            return int(s)
    return False

def is_count(s):
    if s.isdigit():
        if int(s)>0:
            return int(s)

def write_product(product_dic):
    with open(FILENAME,'w',encoding='utf-8') as fw:
        json.dump(product_dic,fw,ensure_ascii=False,indent=4)

def add():
    all_products = get_product()
    pname = input('product_name:').strip()
    price = input('product_price:').strip()
    count = input('product_count:').strip()
    if not pname or not price or not count:#为空的时候干啥
        print('不能为空!')
    elif pname in all_products:
        print('商品已经存在')
    elif not is_price(price):
        print('价格不合法,只能是大于0的数值')
    elif not is_count(count):
        print('数量不合法!')
    else:
        all_products[pname] = {"price": float(price), "count": int(count)}
        write_product(all_products)
        print('添加商品成功')
        return
    return add()



    # if pname and price and count: #不为空的时候,我干啥。。

def delete():
    all_products = get_product()
    pname = input('product_name:').strip()
    if not pname :#为空的时候干啥
        print('不能为空!')
    elif pname not in all_products:
        print('商品不存在')
    else:
        all_products.pop(pname)
        write_product(all_products)
        print('删除商品成功')
        return
    return delete()

def show():
    all_products = get_product()
    if all_products:
        print(all_products)
    else:
        print('暂时还没有商品!')


choice = input('1、add\n'
               '2、delete\n'
               '3、show \n'
               '4、exit \n')

func_map = {"1":add,"2":delete,"3":show,"4":quit}
if choice in func_map:
    func_map[choice]()
else:
    print('输入有误!')


# if choice =="1":
#     add()
# elif choice=="2":
#     delete()
# elif choice=="3":
#     show()
# elif choice=="4":
#     quit("程序退出")
# else:
#     print('输入错误!')

# def a():
#     print('asdfdfs')
#
# b = a
# b()
#函数即变量

 

转载于:https://www.cnblogs.com/denise1108/p/10120025.html

相关文章:

  • React组件设计模式(一)
  • 【技能意志矩阵-skill will matrix】工作中究竟是个人能力更重要,还是我们的积极性更能提高我们的业绩?...
  • Kubernetes-架构路线图
  • libevent的入门学习-库的安装【转】
  • swift - UIWebView 和 WKWebView(iOS12 之后替换UIWebView)
  • jmeter聚合报告详解
  • php中的匿名函数和闭包(closure)
  • nginx rewrite only specific servername to https
  • 闭包总结
  • 浅谈k8s cni 插件
  • Python爬虫--- 1.3 BS4库的解析器
  • Intellij IDEA 部署 Spring Boot / Spring Cloud 应用到阿里云
  • 线程之间调用问题
  • cdn转es5
  • Selenium 2自动化测试实战
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【Leetcode】104. 二叉树的最大深度
  • css布局,左右固定中间自适应实现
  • HTTP 简介
  • Java Agent 学习笔记
  • JavaScript新鲜事·第5期
  • Laravel 中的一个后期静态绑定
  • MySQL几个简单SQL的优化
  • React的组件模式
  • SQLServer之创建数据库快照
  • vue-router的history模式发布配置
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从零开始的无人驾驶 1
  • 工作中总结前端开发流程--vue项目
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 漂亮刷新控件-iOS
  • 小程序01:wepy框架整合iview webapp UI
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​批处理文件中的errorlevel用法
  • ​如何在iOS手机上查看应用日志
  • #if和#ifdef区别
  • $.proxy和$.extend
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1)SpringCloud 整合Python
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (HAL库版)freeRTOS移植STMF103
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (十一)手动添加用户和文件的特殊权限
  • (转)http协议