zoukankan      html  css  js  c++  java
  • python3

    商品管理的程序,商品信息都存在一个json串里面
    1、查询商品信息 #校验商品是否存在
    2、新增商品 # #校验商品是否存在 #校验价格是否合法
    3、修改商品信息 ##校验商品是否存在
    if chice =="1":
    query_goods()
    elif choice = ="2":
    add_goods()

    goods.json:

    {
    "iphonex":{
    "num":100,
    "price":1999.98,
    "color":"red"
    },
    "car":{
    "num":100,
    "price":9999999,
    "color":"black"
    }
    }

    import json
    FILE_NAME="goods.json"
    def check_goods(name,newGood=None):
        with open(FILE_NAME, "r+", encoding="utf-8") as f:
            goods_dic = json.load(f)
        if newGood:
            goods_dic[name]=newGood.get(name) #don't use setdefault function, because cann't update the origibal valye
           
    print(goods_dic)
            with open(FILE_NAME,"w+",encoding="utf-8") as fw:
                json.dump(goods_dic,fw,ensure_ascii=False,indent=4)
        else:
            #with open(FILE_NAME,"r+",encoding="utf-8") as f:
                #goods_dic=json.load(f)
           
    if goods_dic.get(name):
                print(name + " 存在!")
                return goods_dic
            else:
                print(name +" 不存在!")
                return False

    def check_price(price):
        if price.count(".")==0 and price.isdigit() and int(price)>=0:
            print("price is correct int!")
            return True
        elif price.count(".")==1:
            list=price.split(".")
            left = list[0]
            right=list[1]
            if left.isdigit() and right.isdigit():
                print("price is correct float!")
                return True
        else:
            print("price is illegal!")
            return False

    choice = input("please input your choice:"
                   " 1. check goods info."
                   " 2. add goods info"
                   " 3. edit goods info")
    if choice =='1':
        goods_name = input("please input the goods name:").strip()
        good_dis=check_goods(goods_name)
        if good_dis:
            print(good_dis.get(goods_name))
    elif choice=='2':
        name_add=input("please input the goods name you want to add:").strip()
        if check_goods(name_add):
            print("this goods name exist!")
        else:
            good_add_dic={}
            num = int(input("please input the number:"))
            color=input("please input the color:")
            price = input("please input the price:").strip()
            if check_price(price):
                info_add = {"num": num, "price": price, "color:": color}
                good_add_dic.setdefault(name_add,info_add)
                print("成功添加商品!商品信息为:"+str(good_add_dic))
                check_goods(name_add,good_add_dic)
            else:
                print("价格输入不正确!")
    elif choice =="3":
        name_edit=input("please input the goods name you want to edit:")
        if check_goods(name_edit):
            goods_edit_dic=check_goods(name_edit) # get the goods dic
           
    good_info=goods_edit_dic.get(name_edit) # get the edited good info
           
    changeInfo=input("please choose the info you want to change:"
                             "1. num"
                             "2. color"
                             "3. price").strip()
            if changeInfo =='1':
                num1 = int(input("please input the number:"))
                good_info["num"]=num1
            if changeInfo =='2':
                color1 = input("please input the color:")
                good_info["color"]=color1
            if changeInfo =='3':
                price1 = input("please input the price:")
                if check_price(price1):
                    good_info["price"]=price1
            goods_edit_dic[name_edit]=good_info # update the edited good info into the dic
           
    print(str(goods_edit_dic))
            check_goods(name_edit,goods_edit_dic)
        else:
            print("该商品不存在,无法编辑修改")
    else:
        print("输入不正确")

    运行结果:

    总结:

    1. 首先定义两个函数,一个用于检查商品是否存在,一个用于验证价格是否有效

    2. 在函数check_goods中,若是需要添加或更新商品时,在更新字典时,需要使用键值对更新的方式,不能用setdefault函数,因为 setdefault在key存在时,不会更新value。如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。在调试中最开始用的 setdefault方法,最后发现没有更新到新的值。

    goods_dic[name]=newGood.get(name) #don't use setdefault function, because cann't update the origibal valye

     3. 在函数check_goods中,查询时若有该商品时,返回该商品的信息,即返 goods_dic.get(name),这样在查询时可以直接输出该商品信息,但后面在调试中,发现在新增或更新商品时,也需要返回所有商品信息的字典,所以后来改为返回整个商品的字典,这样可以方便这个函数最大化的使用。

    if goods_dic.get(name):
        print(name + " 存在!")
        return goods_dic

    4. 在check_price函数中,最开始想使用type() 方法判断输入的类型 int,float,str来判断是否输入有效,在单独的函数调用时,可以输入int,float,可以使用该函数,但是后期调用是要通过键盘输入的方式取得参数值price,而该值类型为str, 所以在调用函数时总是显示price is illegal.  所以调试后重新修改该函数。 在编写时需要注意参数传递的方式。

  • 相关阅读:
    vijos 1167 南蛮图腾(打印图案)
    noj 1413 Weight 宁波 (dp)
    noj 1173 (宁波)Birdlike Angry Pig (暴力枚举)
    [1438] Get Up, Soldier! noj(宁波)
    [1441] Babelfish noj(宁波)
    长沙理工大学oj 1486: 文本整齐度 哈理工 1476(dp)
    noj 1414 (宁波) Rectangular Parallelopiped(sort+dp)
    8.6前端之内联框架
    8.5前端之Html样式和文本格式化
    8.5前端之类和id
  • 原文地址:https://www.cnblogs.com/yuanchunli/p/8872747.html
Copyright © 2011-2022 走看看