关于Python的判断语句,辛苦看一下

img


物品入库的一个程序,如果物品名称一样就不添加字典到列表,只改变数量,如果不一样,就添加一个新字典到列表。
两个断点只执行一个,假如用if语句判断条件是什么啊,不用又该怎么写,感谢啦




class Test():
    def __init__(self) -> None:
        self.cargo_list = []

    def come(self):
        d_name = str(input("名称"))
        d_cost_price = int(input("成本价格"))
        d_price = int(input("售卖价格"))
        d_number = int(input("数量"))

        isIn = False
        for i in self.cargo_list:
            if d_name == i["name"]:
                i["number"] == d_number
                isIn = True
                break
        
        # 列表中不存在时,添加新的数据
        if not isIn:
            data = {"name":d_name, "cost_price": d_cost_price, "price":d_price, "number": d_number}
            self.cargo_list.append(data)
            # self.save()
            # self.invertory()

建议cargo_list改为字典,字典方便判断是否存在,key用name就可以

考虑加一个flag,比如flag=1
进入了for循环,修改flag=0
判断flag,如果等于0就不执行第二个断点的位置

给你换一种判断方式,直接判断该d_name是否在,存在就找出该对象,加数量

def come(self):
    d_name = str(input("名称"))
    d_cost_price = int(input("成本价格"))
    d_price = int(input("售卖价格"))
    d_number = int(input("数量"))

    cargo = [c for c in self.cargo_list if c['name']==d_name]
    if len(cargo)>0:
        cargo[0]["number"] += d_number
    else:
        self.cargo_list.append({"name":d_name, "cost_price": d_cost_price, "price":d_price, "number": d_number})