开场:仓库爆仓还手动量面积算库存?Python爆仓预警脚本,库管套用,新手练函数位置参数

进货时,或者仓库快要爆仓时,库管如果全靠手动核算码垛——每层码多少件、每层怎么码、码几层、码几垛、码垛高度——以及每垛占地面积、所有码的垛的占地面积,不仅没法在有限的地方放更多货、解决不了爆仓、码垛超高的问题,还耽误时间、影响效率。
怎么解决这些问题呢?不用担心,我写了一个Python爆仓预警脚本,能解决库管上述的问题。库管可以直接复制粘贴使用,也可以稍微加做修改;Python新手还能拿这个脚本练手,达到熟练掌握Python函数位置参数的语法知识的目的。

爆仓预警系统源码(复制粘贴就能用,可直接修改参数)

核心功能

爆仓预警系统的核心功能如下图所示。在下方流程图中,max () 表示取括号内数值的最大值,min () 表示取括号内数值的最小值;// 为整除运算,只保留商的整数部分(不四舍五入);* 为乘法运算符号。

在这里插入图片描述

代码详解:代码里有注释,看不懂也能用

下方是仓库爆仓预警完整Python源码,复制粘贴即可运行。
爆仓预警系统的源码运用了 Python 函数的调用、形参实参、位置参数的语法知识。如果你们因为不懂 Python 函数的调用、形参实参、位置参数的语法知识而看不懂爆仓预警系统的源码,请阅读如下两篇文章。
Python函数参数报错?PyCharm中新手1招解决实参形参混淆!
Python函数默认参数错?PyCharm中新手1招根治

import math


def layer_qty(box_l, box_w, pallet_l, pallet_w):
    """计算单层码放件数。位置参数:箱长、箱宽、码放区长、码放区宽。"""
    # 两种摆法:①箱长沿码放区长、箱宽沿码放区宽  ②旋转90°
    a = int(pallet_l // box_l) * int(pallet_w // box_w)  # 摆法①:长对长、宽对宽
    b = int(pallet_l // box_w) * int(pallet_w // box_l)  # 摆法②:长对宽、宽对长(旋转)
    return max(a, b)                                      # 取两种摆法中的最大值


def pallet_capacity(layer_qty, plan_layers, box_h, max_h):
    """计算单垛容量。位置参数:单层件数、计划层数、箱高、垛限高。"""
    # 实际层数受两个限制:计划层数 和 垛限高/箱高(向下取整)
    actual = min(plan_layers, int(max_h // box_h))        # 取较小值,确保不超垛限高
    return layer_qty * actual, actual                     # 返回:(单垛总件数, 实际层数)


def ground_area(total, per_pallet, pallet_l, pallet_w, aisle):
    """计算占地面积。位置参数:总件数、单垛件数、垛长、垛宽、通道比例。"""
    pallets = math.ceil(total / per_pallet)               # 向上取整:总件数需要多少垛
    pure = pallets * pallet_l * pallet_w                  # 纯货物占地 = 垛数 × 单垛底面积
    return pure * (1 + aisle), pallets, pure              # 返回:(含通道占地, 垛数, 纯占地)


def reserve(total, box_l, box_w, box_h, pallet_l, pallet_w, max_h, layers, aisle, warehouse_h):
    """
    仓库预留面积规划。10个位置参数依次:
    总件数、箱长、箱宽、箱高、垛长、垛宽、垛限高、计划层数、通道比例、仓库高度。
    """
    layer = layer_qty(box_l, box_w, pallet_l, pallet_w)   # ① 单层能放多少件
    per_pallet, actual = pallet_capacity(layer, layers, box_h, max_h)  # ② 单垛能放多少件、实际码几层
    area, pallets, pure = ground_area(total, per_pallet, pallet_l, pallet_w, aisle)  # ③ 需要多大面积

    # 校验:码垛总高度是否超过仓库高度
    stack_height = actual * box_h                         # 码垛高度 = 实际层数 × 单箱高度
    print("-" * 42)
    if stack_height > warehouse_h:
        print(f"【警告】码垛高度 {stack_height:.2f}m 超过仓库高度 {warehouse_h}m!")
    else:
        print(f"【校验通过】码垛高度 {stack_height:.2f}m ≤ 仓库高度 {warehouse_h}m")
    print("-" * 42)

    # 清晰报表格式
    print(f"{'输入参数':=^42}")
    print(f"  来货总件数    : {total} 件")
    print(f"  标准箱尺寸    : {box_l}m × {box_w}m × {box_h}m")
    print(f"  码垛区尺寸    : {pallet_l}m × {pallet_w}m")
    print(f"  垛高        : {max_h}m")
    print(f"  仓库高度      : {warehouse_h}m")
    print(f"  计划码垛层数  : {layers} 层")
    print(f"  通道预留比例  : {aisle * 100:.0f}%")
    print(f"{'码垛方案':=^42}")
    print(f"  单层码放      : {layer} 件/层")
    print(f"  实际层数      : {actual} 层")
    print(f"  单垛容量      : {per_pallet} 件/垛")
    print(f"  需垛数        : {pallets} 垛")
    print(f"{'空间计算':=^42}")
    print(f"  纯货物占地    : {pure:.2f} ㎡")
    print(f"  含通道预留    : {area:.2f} ㎡")
    print(f"  建议预留面积  : {area * 1.1:.2f} ㎡ (含10%缓冲)")
    print("=" * 42)

    return area


# 通过 input() 按 reserve() 的位置参数顺序收集10个值
params = [
    int(input("来货总件数: ")),
    float(input("标准箱长度(米): ")),
    float(input("标准箱宽度(米): ")),
    float(input("标准箱高度(米): ")),
    float(input("码垛区长度(米): ")),
    float(input("码垛区宽度(米): ")),
    float(input("垛高(米): ")),
    int(input("计划码垛层数: ")),
    float(input("通道预留比例(如0.35): ")),
    float(input("仓库高度(米): ")),
]

reserve(*params)

运行结果:自动生成报表,截图给你看效果

爆仓预警系统的运行结果如下四幅图所示。
来货总件数、标准箱的长宽高、码垛区的长宽高、计划码垛层数、通道预留比例、仓库高度等参数,均可根据实际业务场景灵活设置。设置完成后,爆仓预警系统将自动检验码垛高度是否超过仓库高度。无论检验结果如何,系统都会输出完整报表。
如下两幅图所示,我根据实际工作场景,将上述参数依次设为 0.5、0.25、0.25、1.25、0.75、2.75、11、0.4、3。经系统检验,码垛高度未超过仓库高度,并输出了完整报表。
在这里插入图片描述
在这里插入图片描述
如下两幅图所示,本次我将来货总件数、标准箱的长宽高、码垛区的长宽高、计划码垛层数、通道预留比例、仓库高度设为与上次相同的参数。经系统检验,码垛高度超过仓库高度,系统及时发出警告,并输出了完整报表。
在这里插入图片描述
在这里插入图片描述

这个脚本能帮你做什么?(3分钟看完,复制粘贴就能跑)

对于库管来说,Python爆仓预警脚本能帮你自动核算码垛(每层码放件数、每层怎么码,码几层、码几垛、码垛高度)和每垛占地面积、所有码的垛的占地面积,还能自动把码垛高度和输入的仓库高度进行对比,并给出码垛高度是否超过仓库高度的提示,帮你解决码垛超高、爆仓的问题,让你在有限的地方放更多的货,同时缩短你核算仓库码垛、占地面积的时间。
对于Python新手来说,通过练习编写Python爆仓预警脚本,可以达到熟练掌握Python函数位置参数语法知识的目的。
库管和Python新手复制粘贴就能运行。

新手/库管照做就能搞定Python运行环境

在使用这个脚本之前,库管和Python新手必须先学会Pycharm和Python.exe的安装和使用,因为不会安装和使用它们,脚本就无法运行。
如果库管和Python新手还没有熟练掌握Pycharm和Python.exe的安装和使用,请阅读如下两篇文章。
安装Pycharm+配置python.exe:0基础新手一次成功
如何使用PyCharm?0基础新手必看!七大核心功能+越用越有意思

举一反三:这套代码还能算货架/车厢装载

Python爆仓预警脚本的应用场景,除了仓库进货码垛,还包括在货架上放货、给车装货等。因为它的功能是通用的。

复盘总结

Python爆仓预警脚本的功能是:自动核算码垛方案——包括每层码放件数、每层怎么码、码几层、码几垛、码垛高度——以及每垛占地面积、所有垛的总占地面积。它还能自动将码垛高度与输入的仓库高度进行对比,并给出是否超高的提示。
Python爆仓预警脚本解决了库管进货时爆仓的问题,解决了核算码垛效率低的问题,解决了码垛超高的问题,让库管能在有限的空间里放下更多的货。
同时,这个脚本运用了Python函数位置参数的语法知识,能让你在实战练手中熟练掌握Python函数位置参数的用法。
如果你读到了这里,相信你已经赢了一大半还在被仓库爆仓、核算码垛效率低、码垛超高困扰,以及还没学到Python函数位置参数语法知识、还没读到这篇文章的人。

专栏下篇预告

在专栏中,下篇文章将继续讲解利用Python函数语法知识解决库存管理痛点的干货。
如果你觉得我的文章对你有帮助、让你收益多多,或者你喜欢我的文章,那么请动一动你宝贵的手指,点赞、收藏、转发、关注。你的支持是我继续创作的动力。
关注我,我会发布更多关于编程软件的安装与使用和Python及其他编程语言的语法知识、基础语法痛点突破、实战干货等内容。
如果你在库存管理方面存在痛点,或者对我的文章有疑问,欢迎来到评论区聊聊。

更多推荐