今天就教大家用之前有跟大家分享过的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() breakelse:print("\n我还不知道这个城市哦,换换别的城市吧\n")

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

cmd执行效果如下

pycharm执行结果:

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

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

Python基础学习教程:如何用Python来写pm2.5空气质量查询程序相关推荐

  1. python exit()什么意思_Python基础学习教程:如何用Python来写pm2.5空气质量查询程序...

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

  2. 如何用Python来写pm2.5空气质量查询程序

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

  3. Python基础入门教程:使用 Python 3 协程快速获得一个代理池

    Python基础入门教程:使用 Python 3 协程快速获得一个代理池 前言 在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞.比如我们使用 requests 库来进行网络爬虫请求的话, ...

  4. 字字谏言!Python入门学习教程:关于Python不得不说的事儿

    作为程序员,你肯定遇到过这样的领导: "别人还没走,你先走了不合适吧." "不能确定功劳,总得有苦劳吧!你看别人9点谁走了?" 说到996,这很有可能是诱因之一 ...

  5. Python编程学习教程:用python给自己DIY一款小说阅读器

    前一段时间书荒的时候,在喜马拉雅APP发现一个主播播讲的小说-大王饶命.听起来感觉很好笑,挺有意思的,但是只有前200张是免费的,后面就要收费.一章两毛钱,本来是想要买一下,发现说的进度比较慢而且整本 ...

  6. Python编程学习教程:用python给自己DIY一款小说阅读器,很简单!

    前一段时间书荒的时候,在喜马拉雅APP发现一个主播播讲的小说-大王饶命.听起来感觉很好笑,挺有意思的,但是只有前200张是免费的,后面就要收费.一章两毛钱,本来是想要买一下,发现说的进度比较慢而且整本 ...

  7. python基础学习教程:Python基础语法

    Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异. 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程. 第一个 Python ...

  8. python爬虫学习教程,用python爬取新浪微博数据

    爬取新浪微博信息,并写入csv/txt文件,文件名为目标用户id加".csv"和".txt"的形式,同时还会下载该微博原始图片(可选). 运行环境 开发语言:p ...

  9. python基础学习笔记12:Python面向对象编程

    面向对象编程思想 1.什么是面向过程 传统的面向过程的编程思想总结起来就八个字--自顶向下,逐步细化! 将要实现的功能描述为一个从开始到结束按部就班的连续的"步骤" 依次逐步完成这 ...

最新文章

  1. 与时俱进:在JAX-RS API中采用OpenAPI v3.0.0
  2. 【渝粤教育】电大中专常见病药物治疗 (2)作业 题库
  3. java invoke 泛型_利用Java反射机制和泛型,全自动解析json
  4. vector 不初始化时什么状态_Vue原理解析(三):初始化时created之前做了什么?...
  5. 养成一个习惯有多难?不如先从一个小目标开始
  6. 装饰器模式与代理模式的区别_JS设计模式(三):装饰器模式、代理模式
  7. 算法之【大整数乘法】
  8. win10系统做游戏服务器吗,win10架构游戏服务器
  9. matlab函数_常用于连通区域
  10. 杭电1181--变形课(Dfs)
  11. Eclipse中经常出现的问题解决方案
  12. Java笔记:Statement和PreparedStatement的区别
  13. 《防患未然:实施情报先导的信息安全方法与实践》——2.3 情报循环
  14. 攻防世界 WEB bilibili
  15. 大项目售前、售中和售后感悟
  16. 用java程序实现记单词_GitHub - whypro/Hello-Word: 用 JAVA(J2SE) 实现的一个背单词程序,可自由选择词库。...
  17. 冬训成果何在?林丹无缘新赛季首冠状态成迷
  18. [Maven实战-许晓斌]-[第二章]-2.4设置HTTP代理
  19. Windows 10打开Java控制面板
  20. jsp开发中cannot resolve taglib with uri的解决方法

热门文章

  1. 联想拯救者14实现快捷键调屏幕亮度
  2. GitHub 入门 : https://help.github.com/
  3. 2019年小程序代理加盟赚钱最后红利
  4. w7设置双显示器_Win7系统如何设置两个显示器即多屏幕模式
  5. 咋克伯格的Pinterest帐号再次被入侵
  6. Freemarker简单实现一个代码生成器。
  7. PAT1013. Battle Over Cities (25)
  8. 机器视觉方案设计及开发流程
  9. Git 16. 配置Git忽略文件
  10. Install Oracle JDK