class Good: def init(self,id,num): self.id=id self.__num=num self.gooddict={} self.goodlist=[] def add(self): # 进货批处理 while True: id=input("请输入需要购买的商品(0-退出):") if id == "0": return num = eval(input(f"请输入 {id:s} 的进货数目:")) price = eval(input(f"请输入 {id:s} 的进货价格:")) goods=Goods(id,num,price) self.goodsdict[id] = goods print(goodsdict) class xiaoshou: def init(self,id): self.id=id self.xiaosdict = {} self.xiaoslist=[] def xiaos(self): while True: id = input("请输入商品(0-退出):") if id == "0": return num = int(input("请输入数量:")) price=eval(input("请输入商品价格:")) self.xiaoslist.append([price, num]) self.xiaosdict[id]=xiaoslist @property # 定义setter访问器 def num(self): return self.__num @num.setter # 定义只写访问器 def num(self, num): # amount 为负数表示取款 if num < 0 and num > self.__num: print("商品的数目不足!") return -1 self.__num += num return self.__num def mainmenu(self): while True: print("" * 45) print(" 1.进货系统 2.销售系统") print("" * 45) sele = int(input("请输入功能号:")) if sele == 1: self.add() elif sele == 2: self.add() elif sele == 0: return如何优化代码,请输出优化后的代码
时间: 2024-02-22 17:55:57 浏览: 112
以下是优化后的代码:
```
class Good:
def __init__(self, id, num):
self.id = id
self.num = num
self.goodsdict = {}
def add(self):
# 进货批处理
while True:
id = input("请输入需要购买的商品(0-退出):")
if id == "0":
return
if id in self.goodsdict:
num = int(input(f"请输入 {id:s} 的进货数目:"))
price = eval(input(f"请输入 {id:s} 的进货价格:"))
self.goodsdict[id].num += num
else:
num = int(input(f"请输入 {id:s} 的进货数目:"))
price = eval(input(f"请输入 {id:s} 的进货价格:"))
goods = Good(id, num)
self.goodsdict[id] = goods
print(self.goodsdict)
class Xiaoshou:
def __init__(self, id):
self.id = id
self.xiaosdict = {}
def xiaos(self):
while True:
id = input("请输入商品(0-退出):")
if id == "0":
return
num = int(input("请输入数量:"))
price = eval(input("请输入商品价格:"))
if id in self.xiaosdict:
self.xiaosdict[id].append([price, num])
else:
self.xiaosdict[id] = [[price, num]]
@property
def num(self):
return self.__num
@num.setter
def num(self, num):
# amount 为负数表示取款
if not isinstance(num, int):
print("请输入数字类型!")
return -1
if num < 0 and num > self.__num:
print("商品的数目不足!")
return -1
self.__num += num
return self.__num
def mainmenu():
good = Good("good1", 100)
xiaoshou = Xiaoshou("xiaoshou1")
while True:
print("" * 45)
print(" 1.进货系统 2.销售系统")
print("" * 45)
sele = int(input("请输入功能号:"))
if sele == 1:
good.add()
elif sele == 2:
xiaoshou.xiaos()
elif sele == 0:
return
if __name__ == "__main__":
mainmenu()
```
优化点:
1. 将 Good 类的 goodlist 属性删除,因为没有使用到。
2. 在 Good 类的 add 方法中,如果输入的 id 不存在于商品字典中,应该创建一个新的 Goods 对象,并将商品字典中的 id 和新的 Goods 对象关联起来。
3. 在 Good 类的 add 方法中,如果输入的 id 已经存在于商品字典中,应该将新的进货数目和价格加入到已有的 Goods 对象中。
4. 在 Xiaoshou 类的 xiaos 方法中,如果输入的 id 已经存在于销售字典中,应该将新的销售数量和价格加入到已有的销售列表中。
5. 在 Good 类的 num 属性的 setter 方法中,添加对输入参数类型的检查。
6. 在 mainmenu 函数中,创建 Good 和 Xiaoshou 对象,并在循环中调用相应的方法。
7. 添加 `if __name__ == "__main__":` 判断,使得代码可以被其他模块导入时不执行。
阅读全文