仓库出纳的烦恼。
有一张仓库总数据,然后就是每天的入库流水,出库流水。一个星期后,做总结的时候,发现流水里的物料到底是在库房里还是出库了!
如下图:库房物品用数字代替, 出库流水,入库流水。
库存: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
出库1: 7,8,3,6 入库1: 11,13
出库2: 4,9,2,1 入库2: 9,8,3
出库3: 3,8,5,10 入库3: 2,5,7
出库4: 5,2 入库4: 4,10,1
出库5: 10,4,9 入库5: 6, 5, 8, 4
出库6: 1,8,13,6,5 入库6: 2, 5, 6, 8
出库7: 11, 4, 6, 2 入库7: 3, 11, 2
尝试过用字典,或者 列表,不知道怎么个算法。
请问怎么用python 统计出最后库存是哪些?出库是哪些?某个物品被重复领用了多少次?
kf = []
wp = {}
qzmc=[]
wpcf={}
def ruku():
wpm = input("请输入存入库房的物品名:")
wpsl = eval(input("请输入存入库房物品{}的数量:".format(wpm)))
if kf == []:
wp["{}".format(wpm)] = "{}".format(wpsl)
kf.append(wp)
else:
for i in kf:
if "{}".format(wpm) in i.keys():
dqwps = int(wp["{}".format(wpm)])
sl = dqwps + wpsl
wp["{}".format(wpm)] = "{}".format(sl)
if "{}".format(wpm) not in i.keys():
wp["{}".format(wpm)] = "{}".format(wpsl)
kf.clear()
kf.append(wp)
def chuku():
wpm = input("请输入取出库房的物品名:")
qzmc.append(wpm)
for i in kf:
if "{}".format(wpm) in i.keys():
wpsl = eval(input("请输入取出库房物品{}的数量:".format(wpm)))
dqwps = int(wp["{}".format(wpm)])
sl = dqwps - wpsl
if sl >= 0:
wp["{}".format(wpm)] = "{}".format(sl)
for i in qzmc:
wpcf[i] = qzmc.count(i)
elif sl < 0:
print("物品{}库存不足!".format(wpm))
elif "{}".format(wpm) not in i.keys():
print("物品{}不在库房!".format(wpm))
while True:
cz = eval(input("请输入1或2,1表示存货,2表示取货:"))
if cz == 1:
ruku()
print("《===当前库房所有商品及库存数量!及各物品被重复领用的次数===》")
for kk, vv in kf[0].items():
print("物品名:{} 库存数为:{}".format(kk,vv))
elif cz == 2:
if kf != [] or wpcf !={} :
chuku()
print("《===当前库房所有商品及库存数量!及各物品被重复领用的次数===》")
for kk, vv in kf[0].items():
print("物品名:{} 库存数为:{}".format(kk, vv))
for kk, vv in wpcf.items():
print("物品名:{} 重复取出次数:{}".format(kk, (int(vv)-1)))
else:
print("当前仓库没有货!请先增加货物!")
希望对你能有帮助!
class Stock():
def __init__(self, initial_inventory:set):
self.stock = initial_inventory
self.inventory = {i:0 for i in self.stock}
def put(self, inventory:set): # 入库
for i in inventory:
if i in self.stock:
print(f"库存已有{i},请检查入库信息")
return
self.stock |= inventory
for i in inventory:
if i not in self.inventory:
self.inventory[i]=0
def get(self, inventory:set): # 出库
for i in inventory:
if i not in self.stock:
print(f"库存没有{i},请检查出库信息")
return
self.stock -= inventory
for i in inventory:
self.inventory[i] += 1
s = Stock({1,2,3,4,5,6,7,8,9,10})
# 1
s.get({7,8,3,6})
s.put({11,13})
print(s.stock)
print(s.inventory)
# 2
s.get({4,9,2,1})
s.put({9,8,3})
print(s.stock)
print(s.inventory)
# 3
s.get({3,8,5,10})
s.put({2,5,7})
print(s.stock)
print(s.inventory)
# 4
s.get({5,2})
s.put({4,10,1})
print(s.stock)
print(s.inventory)
# 5
s.get({10,4,9})
s.put({6,5,8,4})
print(s.stock)
print(s.inventory)
# 6
s.get({1,8,13,6,5})
s.put({2,5,6,8})
print(s.stock)
print(s.inventory)
# 7
s.get({11,4,6,2})
s.put({3,11,2})
print(s.stock)
print(s.inventory)