今天就教大家用之前有跟大家分享过的python基础学习教程完成首个MVP,如何用CLI(command-line interface,命令行界面)来执行第一个空气质量查询程序。
知识点
所需工具
话不多说,带着大家开始梭哈~
1.读取文件
本次主要涉及的是文本文件的读取,
Python的文本文件的内容读取,有三种方法:
这次采用readlines()来读取文件:
pm25 = open(‘pm2.5.txt‘,‘rb‘).readlines()
print(pm25_data)
输出结果为:
[‘北京,晴 ‘, ‘海淀,晴 ‘, ‘朝阳,晴 ‘, ‘顺义,晴 ‘, ‘怀柔,晴 ‘, ......]
大家可以自己试试其他方式读取~
2.把列表转化成字典
此时读取的的内容把城市和其对应的天气作为字符串存在pm25列表中(,列表中的字符串不能直接拆开查询,这里需要对列表处理让其转化为字典。
代码如下:
pm25_data = {}
for i in pm25:
i = i.decode(‘utf-8‘).strip(‘ ‘)
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(" 输入城市名>")
if user_input in pm25_data:
print(" %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(" %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)
6.退出
从sys库里导入一个exit函数用来退出程序,sys是Python自带的模块,直接调用就可以用:
from sys import exit
if user_input == "quit" or user_input == "exit":
print(" 下次见咯~ ")
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(‘ ‘)
i = i.split(‘,‘)
key = i[0]
value = i[1]
pm25_data[key] = value
history_data = []
while True:
user_input = input(" 输入城市名>")
if user_input in pm25_data:
print(" %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(" 下次见咯~ ")
exit() break
else:
print(" 我还不知道这个城市哦,换换别的城市吧 ")
其实不用while循环,直接用if条件判断也不影响结果,大家可以把while去掉试试。
cmd执行效果如下:
pycharm执行结果:
这只是一个最小可行性程序,后期会继续带着大家完善,直到能公网可查询实时PM2.5~
更多的Python基础学习教程也会继续为大家分享!
Python基础学习教程:如何用Python来写pm2.5空气质量查询程序
原文:https://www.cnblogs.com/cherry-tang/p/11151404.html