Python的听课笔记案例8--空气污染指数计算1.0

原创
小哥 3年前 (2022-10-29) 阅读数 5 #大杂烩

这是微信的小象学院Python入门课程的最后一个案例,从第一个案例到现在。1一年多来,我还没有把这个8在了解了一个案例后,我感到内疚。有我自己的懒惰和拖延,或者其他原因,但这些都不是原因。从今天起,我们要认真抓好学习,Python它一直是银的,如果你不努力工作,它就过时了。

别废话了,开始学习最后一个案例吧。首先截图两张,然后介绍计算方法:

第一张图是显示与总质量指数对应的各子污染物的值的对比表;

第二张图是如何计算各污染物分项指数的计算公式,空气质量总指数为各分项指数的最大值。

如果你不明白,那就换一张照片。

最后是代码的介绍,主要是计算出来的。PM2.5和CO分项指数,再通过两个分项指数得出最大空气质量指数。

将变量引入寻求最大值的函数的主函数。cal_aqi;

寻求最大值的函数cal_aqi,函数内部调用计算PM2.5分类指数的功能cal_pm_iaqi和CO分类指数的功能cal_co_iaqi;

一个计算PM2.5的函数cal_pm_iaqi

一个计算CO的函数cal_co_iaqi

"""
    作者:lanxingbudui
    日期:2019-10-26 最近成文20200215早晨5点
    功能:AQI计算
    版本:1.0
"""

def cal_linear(iaqi_lo, iaqi_hi, bp_lo, bp_hi, cp):
    """
        范围缩放
    """
    iaqi = (iaqi_hi - iaqi_lo) * (cp - bp_lo) / (bp_hi - bp_lo) + iaqi_lo
    return iaqi

def cal_pm_iaqi(pm_val):
    """
        计算PM2.5的IAQI
    """
    if 0 <= pm_val < 36:
        iaqi = cal_linear(0, 50, 0, 35, pm_val)
    elif 36 <= pm_val < 76:
        iaqi = cal_linear(50, 100, 35, 75, pm_val)
    elif 76 <= pm_val < 116:
        iaqi = cal_linear(100, 150, 75, 115, pm_val)
    elif 116 <= pm_val < 151:
        iaqi = cal_linear(150, 200, 115, 150, pm_val)
    elif 151 <= pm_val < 251:
        iaqi = cal_linear(200, 300, 150, 250, pm_val)
    elif 251 <= pm_val < 351:
        iaqi = cal_linear(300, 400, 250, 350, pm_val)
    elif 351 <= pm_val < 501:
        iaqi = cal_linear(400, 500, 350, 500, pm_val)
    else:
        pass
    return iaqi

def cal_co_iaqi(co_val):
    """
        计算CO的IAQI
    """
    if 0 <= co_val < 3:
        iaqi = cal_linear(0, 50, 0, 2, co_val)
    elif 3 <= co_val < 5:
        iaqi = cal_linear(50, 100, 2, 4, co_val)
    elif 5 <= co_val < 15:
        iaqi = cal_linear(100, 150, 4, 14, co_val)
    elif 15 <= co_val < 25:
        iaqi = cal_linear(150, 200, 14, 24, co_val)
    elif 25 <= co_val < 37:
        iaqi = cal_linear(200, 300, 24, 36, co_val)
    elif 37 <= co_val < 49:
        iaqi = cal_linear(300, 400, 36, 48, co_val)
    elif 49 <= co_val < 61:
        iaqi = cal_linear(400, 500, 48, 60, co_val)
    else:
        pass
    return iaqi

def cal_aqi(param_list):
    """
        AQI计算
    """

    pm_val = param_list[0]
    co_val = param_list[1]

    pm_iaqi = cal_pm_iaqi(pm_val)
    co_iaqi = cal_co_iaqi(co_val)

    iaqi_list = [pm_iaqi, co_iaqi]

    aqi = max(iaqi_list)
    return aqi

def main():
    """
        主函数
    """
    pass
    print(请输入以下信息并用空格分隔。)
    input_str = input((1)PM2.5 (2)CO:)
    str_list = input_str.split( )
    pm_val = float(str_list[0])
    co_val = float(str_list[1])

    param_list = [pm_val, co_val]

    # 调用AQI计算函数cal_aqi(param_list)
    aqi_val = cal_aqi(param_list)

    print(空气质素指数为:{}.format(aqi_val))

if __name__ == __main__:
    main()

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除