题目
22.假设列表 lst weather 中存放了一周内每天的天气情况(包括最低气温、最高气温、天气状况、风力和空气质量等级)。试编写程序,统计以下数据:
(1)空气质量为优的天数。
(2)风力低于3级且最高气温不超过 25℃的天数。
(3)平均气温低于 20℃的天数。测试数据:1st weather =[["周一","16℃","26℃","多云","1级”,"优“],["周二”"17℃""27℃”“晴””2 级”,"优”],["周三”,"16℃","28℃","晴","3 级","优”],["周四","16℃”"25℃",“阴”“2 级”"良”],["周五”,"15℃”,"24℃”,"阴","2 级”,"良",["周六",“15℃","25℃","晴”,"3 级”"优”],["周曰","14℃","23℃","小雨”,"3 级","良”]]
要求
(1)可使用带条件的列表生成式对列表数据进行筛选。例如,表达式[xforximlst_weatherifx[5]=-"良”]的结果为[[“周四",“16℃","25℃","阴","2 级","良"],["周五","15℃","24℃""阴”"2 级”,"良”],["周日","14℃","23℃","小雨","3 级","良"],,表示空气质量为“良”的某几天的天气信息;表达式[x[1]for xin lst weather if x[5]--"良"]的结果为["16℃","15℃""14℃”],表示空气质量为“良”的某几天的最低气温。
(2)输出结果格式如下:
空气质量为优的天数:4,它们分别是:周一,周二,周三,周六风力低于3级且最高气温不超过25℃的天数:2,它们分别是:周四,周五平均气温低于20℃的天数:2,它们分别是:周五,周日
参考代码
lst_weather =[["周一","16℃","26℃","多云","1 级","优"],["周二","17℃","27℃","晴","2 级","优"],
["周三","16℃","28℃","晴","3 级","优"],["周四","16℃","25℃","阴","2 级","良"],
["周五","15℃","24℃","阴","2 级","良"],["周六","15℃","25℃","晴","3 级","优"], ["周日","14℃","23℃","小雨","3 级","良"]]
good = 0
wind =0
tem = 0
lst_good =[]
lst_wind =[]
lst_tem=[]
for i in lst_weather:
if i[-1]=="优":
good+=1
lst_good.append(i[0])
if int(i[-2][0])<3 and int(i[2][0:2])<=25:
wind+=1
lst_wind.append(i[0])
if (int(i[1][0:2])+int(i[2][0:2]))/2<20:
tem+=1
lst_tem.append(i[0])
lst_good_1=','.join(str(i)for i in lst_good)
lst_windy_1=','.join(str(i) for i in lst_wind)
lst_tem_1=','.join(str(i) for i in lst_tem)
print("空气质量为优的天数:{},它们分别是:{}".format(good,lst_good_1))
print("周六风力低于3级且最高气温不超过25℃的天数:{},它们分别是:{}".format(wind,lst_windy_1))
print("平均气温低于20℃的天数:{},它们分别是:{}".format(tem,lst_tem_1))
运行结果
空气质量为优的天数:4,它们分别是:周一,周二,周三,周六
周六风力低于3级且最高气温不超过25℃的天数:2,它们分别是:周四,周五
平均气温低于20℃的天数:2,它们分别是:周五,周日
说明
此方法仅供学习参考,欢迎讨论