空气质量指数计算

空气质量指数计算方法
JSON格式

  • JSON是一种轻量级数据交换格式

  • 可以对复杂数据进行表达和存储,易于阅读和理解

  • 规则:
    1.数据保存在键值对中
    2.键值对之间由逗号分隔
    3.花括号用于保存键值对数据组成的对象
    4.方括号用于保存键值对数据组成的数组

  • 采用对象、数组方式组织起来的键值对可以表示任何结构的数据

  • JSON格式是互联网上主要使用的复杂数据格式之一
    JSON库

  • JSON库是处理JSON格式的python标准库

  • 两个过程:
    编码,将python数据类型转换成JSON格式的过程
    解码,将JSON格式 中解析数据对应到python数据类型的过程

函数 含义
dumps() 将python数据类型转换为JSON格式
loads() 将JSON格式字符串转换为python数据类型
dump() 与dumps()功能一致,输出到文件
losd() 与losds()功能一致,从文件读入

列表排序

  • list.sort(func)
    func指定了排序的方法
  • func可以通过lambda函数实现
    CSV格式
  • CSV是一种通用的、相对简单的文件格式
  • 在商业和科学领域上广泛使用
  • 规则
    1.以行为单位
    2.每行代表一条记录
    3.以英文逗号分割每列数据(如果数据为空,逗号也要保留)
    4.列名通常放置在文件第一行
    import csv
    csv.writerow(list)将列表中的元素写入文件的一行中
    文件操作补充
  • CSV文件读取
    import csv
    csv.reader() 将每行记录作为列表返回
  • 使用with语句操作文件对象
with open('file_name') as somefile:
	for line in somefile:
		print(line)
  • 使用with语句,不管在处理文件过程中是否发生异常,都能保证with语句执行完毕后关闭文件。不需要close()语句。
    os模块
  • os模块提供了与系统、目录操作相关的功能,不受平台的限制
函数 含义
os.remove() 删除文件
os.makedirs() 创建多层目录
os.rmdir() 删除单击目录
os.rename() 重命名文件
os.path.isfile() 判断是否为文件
os.path.isdir 判断是否为目录
os.path.join() 连接目录,如path1 连接path2 为path1/path2
os.path.splitext() 将文件分割成文件名与拓展名, 如分割tmp.txt为tmp 和 .txt

request模块

  • requests模块是一个简洁且简单的处理HTTP请求的工具
  • 支持非常丰富的链接访问功能,包括URL获取, HTTP会话, Cookie记录等
  • requests网页请求
函数 含义
get() 对应HTTP的GET方式
post() 对应HTTP的POST方式, 用于传递用户的数据
  • requests对象属性
函数 含义
status_code HTTP请求的返回状态, 200表示连接成功, 400表示连接失败
text HTTP相应内容的字符串形式, 即url对应的页面内容
  • 更多方法参考:https://requests.kennethreitz.org/en/master/
    BeautifulSoup

  • 用于解析HTML或XML

  • pip install beautifulsoup4

  • import bs4

  • 步骤
    1.创建BeautifulSoup对象
    2.查询节点
    find , 找到第一个满足条件的节点
    find_all , 找到所有满足条件的节点
    创建对象

  • 创建BeautifulSoup对象

  • bs = BeautifulSoup(
    url,
    html_parser, 指定解析器
    ecoding 指定编码格式(确保和网页编码格式一致)

    查找节点

  • < a href = ‘a.html’ class = ‘a_link’>next page

  • 可按节点类型、属性或内容访问

  • 按类型查找节点
    bs.find_all(‘a’)

  • 按属性查找节点
    bs.find_all(‘a’, herf = ‘a.html’)
    bs.find_all(‘a’, herf = ‘a,html’, string = ‘next page’)
    bs.find_all(‘a’, class_=‘a_link’)
    注意:是class_

  • 或者bs.find_all(‘a’, {‘class’ : ‘a_link’})

版本1.0

"""
    作者:陈洁
    日期:23/10/2019
    功能: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.5IAQI
    """
    if 0 <= pm_val < 36:
        iaqi = cal_linear(0, 50, 0, 35, pm_val)
    elif 36 <= pm_val < 75:
        iaqi = cal_linear(50, 100, 35, 75, pm_val)
    elif 76 <= pm_val < 116:
        iaqi = cal_linear(100, 150, 75, 115, pm_val)
    else:
        pass

def cal_co_iaqi(co_val):
    """
        计算pm2.5IAQI
    """
    if 0 <= co_val < 3:
        iaqi = cal_linear(0, 50, 0, 3, co_val)
    elif 3 <= co_val < 5:
        iaqi = cal_linear(50, 100, 2, 4, co_val)
    else:
        pass



def cal_cp_iaqi(co_val):
    """
    计算CO的IAQI
    """
    pass


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_cp_iaqi(co_val)

    iaqi_list = []
    iaqi_list.append(pm_val)
    iaqi_list.append(co_val)

    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 = []
    param_list.append(pm_val)
    param_list.append(co_val)

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

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


if __name__ == '__main__':
    main()

你可能感兴趣的:(python基础)