美文网首页
Python基础学习教程:如何用Python来写pm2.5空气质

Python基础学习教程:如何用Python来写pm2.5空气质

作者: EchoPython | 来源:发表于2019-08-16 13:49 被阅读0次

    今天就教大家用之前有跟大家分享过的python基础学习教程完成首个MVP,如何用CLI(command-line interface,命令行界面)来执行第一个空气质量查询程序。

    知识点

    • 如何进行txt文件的读取
    • 数据类型的转换
    • 列表
    • 字典
    • 在命令行界面下和程序进行交互
    • 条件判断
    • while循环

    所需工具

    • python3
    • Notepad++、Sublime等任一编辑器
    • cmd、Terminal、pycharm等能执行命运界面
    • 天气数据文本文件

    话不多说,带着大家开始梭哈~

    在这里插入图片描述

    1.读取文件

    本次主要涉及的是文本文件的读取,

    Python的文本文件的内容读取,有三种方法:

    • read(),读取整个文件,通常用于将整个文件内容放到一个字符串变量中;
    • readline(),逐行读取,当不需要读取整个文件时可以用;
    • readlines(),一次性读取文本内容,并自动将文件内容分析成一个行的列表。
      这次采用readlines()来读取文件:

    pm25 = open('pm2.5.txt','rb').readlines()
    print(pm25_data)

    输出结果为:

    ['北京,晴\n', '海淀,晴\n', '朝阳,晴\n', '顺义,晴\n', '怀柔,晴\n', ......]

    大家可以自己试试其他方式读取~

    2.把列表转化成字典

    此时读取的的内容把城市和其对应的天气作为字符串存在pm25列表中(,列表中的字符串不能直接拆开查询,这里需要对列表处理让其转化为字典。

    • 首先,定义一个字典pm25_data={}
    • 用for循环遍历pm25列表每个字符串
    • 用strip()方法去掉列表中每个字符串的换行符\n
    • 再用split()方法用','切分字符串,此时会返回一个列表
    • 把每次循环都写进pm25_data字典中

    代码如下:

    pm25_data = {}
    for i in pm25:
     i = i.decode('utf-8').strip('\n')
     i = i.split(',')
     key = i[0]
     value = i[1]
     pm25_data[key] = value
    

    这样,城市和其对应的pm2.5的数值作为key和value分别存入到pm25_data中了。

    在我们搜索的过程中,只需要找到该城市在字典中的位置,则可以得到其对应的pm2.5值。

    3.获取用户输入的值

    完成了天气的读取,下面要实现的是用户的交互,采用input()来读取用户想要查询的城市,并用其输入的值作为key去字典里面进行查询:

    user_input = input("\n输入城市名>")
    if user_input in pm25_data:
    print("\n%s的PM2.5为:" % user_input, pm25_data[user_input])
    

    user_input为用户输入的城市名, pm25_data[user_input]是其所对应的pm2.5值。

    4.历史记录

    可以在最开始的是定义一个history_data = []作为缓存,用于存储历史记录。

    用户查询一次记录一次,所以存储历史数据的代码为:

    history_data = []if user_input in pm25_data:
     print("\n%s的PM2.5为:" % user_input, pm25_data[user_input])
     history_data.append(user_input)
    

    temp.append用于在列表中增加一组。

    想要读取这个缓存里面的内容,则可以使用循环来进行查看:

    if user_input == "history" or user_input == "查询历史": 
    for i in history_data:
    print(i, pm25_data[i])
    
    

    for i in history_data:可以遍历history_data中的每一个数据。

    5.帮助

    还可以定义下help指令,当输入help或者帮助的时候可以查看帮助文档,用三引号来输入多行文字:

    if user_input == "help" or user_input == "帮助":
    print("""
    这里是为您准备好的帮助说明:
    输入城市名可查询该城市的天气
    输入help或帮助可获取帮助说明
    输入hitory,可查看历史查询记录
    输入quit或者exit和我说拜拜~
    """)
    

    文字可以自定义,也可以用or来添加多个指令

    文字较多时,为了显示好看,也可以文字的前后用print('-'*30)加入横线来什么的来美化一下什么的

    if user_input == "help" or user_input == "帮助":
     print("-"*30)
     print("""
     这里是为您准备好的帮助说明:
     输入城市名可查询该城市的天气
     输入help或帮助可获取帮助说明
     输入hitory,可查看历史查询记录
     输入quit或者exit和我说拜拜~
     """)
     print("-"*30)
     
    如果你依然在编程的世界里迷茫,
    不知道自己的未来规划,
    对python感兴趣,
    这里推荐一下我的学习交流圈QQ群:895 797 751,
    里面都是学习python的,
    

    6.退出

    从sys库里导入一个exit函数用来退出程序,sys是Python自带的模块,直接调用就可以用:

    from sys import exit
    if user_input == "quit" or user_input == "exit":
     print("\n下次见咯~\n")
     exit() 
     break
    

    当输入quit或者exit的时候,就可以退出这个程序。

    也可以定义为中文“退出”来退出程序,大家可以改动下试试。

    7.完成

    最后,再添加上while循环把刚才提到的几个逻辑串联起来,这个简单的程序就完成了:

    # -*- coding: utf-8 -*-
    from sys import exit
    pm25 = open('pm25.txt','rb').readlines()
    pm25_data = {}for i in pm25:
     i = i.decode('utf-8').strip('\n')
     i = i.split(',')
     key = i[0]
     value = i[1]
     pm25_data[key] = value
    history_data = []
    while True:
     user_input = input("\n输入城市名>")
     if user_input in pm25_data:
     print("\n%s的PM2.5为:" % user_input, pm25_data[user_input])
     history_data.append(user_input) 
     
     elif user_input == "help" or user_input == "帮助":
     print("-" * 30)
     print("""
     这里是为您准备好的帮助说明:
     输入城市名可查询该城市的天气
     输入help可获取帮助说明
     输入hitory,可查看历史查询记录
     输入quit或者exit和我说拜拜~
     """)
     print ("-" * 30)
     
     elif user_input == "history" or user_input == "查询历史":
     for i in history_data:
     print(i, pm25_data[i])
     
     elif user_input == "quit" or user_input == "exit":
     print("\n下次见咯~\n")
     exit() break
     else:
     print("\n我还不知道这个城市哦,换换别的城市吧\n")
     
    

    其实不用while循环,直接用if条件判断也不影响结果,大家可以把while去掉试试。

    cmd执行效果如下


    在这里插入图片描述

    pycharm执行结果:


    在这里插入图片描述

    这只是一个最小可行性程序,后期会继续带着大家完善,直到能公网可查询实时PM2.5~

    更多的Python基础学习教程也会继续为大家分享!

    相关文章

      网友评论

          本文标题:Python基础学习教程:如何用Python来写pm2.5空气质

          本文链接:https://www.haomeiwen.com/subject/xkwfsctx.html