2021年7月18日 星期日

此蟲非蟲

 2021年7月14日正在教Python/Dajngo百香果程式設計微學分,上到"用Python來撰寫顯示今天百香果市場交易情形的程式",程式居然無法順利執行,於是我們展開找出百香果市場交易情形的程式無法順利執行的"蟲"。

很懷念兩年前撰寫"用Python來撰寫顯示今天百香果市場交易情形的程式",其程式碼如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import requests
import json
r = requests.get('https://data.coa.gov.tw/Service/OpenData/FromM/FarmTransData.aspx')
text = json.loads(r.text)
for row in text:
    if '百香果' in row['作物名稱']:
        print ('交易日期:'+row['交易日期'])
        print ('作物名稱:'+row['作物名稱'])
        print ('市場名稱:'+row['市場名稱'])
        print ('平均價:'+str(row['平均價']))
        print ('交易量:'+str(row['交易量']))

執行結果:

居然有TypeError: argument of type 'NoneType' is not iterable的問題,這時當然要請教谷歌大神,找到解答,有三種方式,前兩種在介紹in和==的差別,而第三種方法中,採用if先判斷物件是否是為None,於是我們選擇了第三種。

新增2行程式,程式修改如下:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import requests
import json
r = requests.get('https://data.coa.gov.tw/Service/OpenData/FromM/FarmTransData.aspx')
text = json.loads(r.text)
for row in text:
    if row['作物名稱'] is None:
        continue;
    if '百香果' in row['作物名稱']:
        print ('交易日期:'+row['交易日期'])
        print ('作物名稱:'+row['作物名稱'])
        print ('市場名稱:'+row['市場名稱'])
        print ('平均價:'+str(row['平均價']))
        print ('交易量:'+str(row['交易量']))

執行結果為:
交易日期:110.07.18
作物名稱:百香果-其他
市場名稱:台北二
平均價:93.4
交易量:237.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:台北二
平均價:60.8
交易量:4121.0
交易日期:110.07.18
作物名稱:百香果-其他
市場名稱:台北一
平均價:44.9
交易量:149.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:台北一
平均價:58.6
交易量:5593.0
交易日期:110.07.18
作物名稱:百香果-其他
市場名稱:板橋區
平均價:25.0
交易量:15.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:板橋區
平均價:24.1
交易量:947.0
交易日期:110.07.18
作物名稱:百香果-其他
市場名稱:三重區
平均價:33.9
交易量:202.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:三重區
平均價:42.8
交易量:8561.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:宜蘭市
平均價:65.0
交易量:1400.0
交易日期:110.07.18
作物名稱:百香果-其他
市場名稱:桃農
平均價:45.0
交易量:52.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:桃農
平均價:35.9
交易量:406.0
交易日期:110.07.18
作物名稱:百香果-其他
市場名稱:台中市
平均價:17.0
交易量:30.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:台中市
平均價:50.5
交易量:8907.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:豐原區
平均價:42.75
交易量:414.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:嘉義市
平均價:38.0
交易量:800.0
交易日期:110.07.18
作物名稱:百香果-其他
市場名稱:高雄市
平均價:42.4
交易量:684.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:高雄市
平均價:51.4
交易量:1833.0
交易日期:110.07.18
作物名稱:百香果-改良種
市場名稱:鳳山區
平均價:28.4
交易量:2650.0

為什麼資料中會有None,於是我們檢視農委會介接程式送出來的資料,真的有none的資料。


學習Python雖然有好玩,但會經常碰到版本或資料格式上的問題,要有耐心地找資料,最重要的是要有永不放棄的毅力和決心。

沒有留言:

張貼留言