最後修改於 2026 / 3 / 17 by CML
🪄正在取得您的 IP...
https://www.codejudger.com/
@gcloud.csu.edu.tw
19911223
python -m pip install pyyaml requests beautifulsoup4 lxml pandas numpy matplotlib
Python第一類
Python 101 文化部展覽資訊
1. 題目說明:
請開啟PYD01.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA01.py再進行評分。
程式所產出的檔案,須輸出與程式同一層資料夾。
2. 設計說明:
請撰寫一程式,讀取文化部展覽資訊read.json,請將其中title(活動名稱)、showUnit(演出單位)、startDate(活動起始日期)、endDate(活動結束日期)等四個欄位內容轉存為write.csv (需為UTF-8編碼格式),各欄位內容之間以一個半形逗號隔開。
提示:只需要輸出資料,不需要輸出欄位名稱。
3. 輸入輸出:
輸入說明
讀取read.json
輸出說明
將四個欄位的內容:title、showUnit、startDate、endDate,輸出至write.csv檔案,各欄位內容之間以一個半形逗號隔開
原始填空
# 載入 json 與 csv 模組
import ___
import ___
# 讀取 json 檔案並指定編碼為 utf8
with ___("___", encoding='___') as file:
data = json.load(file)
# 寫入 csv 檔案並指定編碼為 utf8
with ___("___", "___", encoding='___') as file:
csv_file = csv.writer(file)
# 寫入 title(活動名稱)、showUnit(演出單位)、startDate(活動起始日期)、endDate(活動結束日期)等四個欄位
for item in data:
csv_file.writerow([___['___'], ___['___'],
___['___'], ___['___']])
填空答案
# 載入 json 與 csv 模組
import json
import csv
# 讀取 json 檔案並指定編碼為 utf8
with open("read.json", encoding='utf8') as file:
data = json.load(file)
# 寫入 csv 檔案並指定編碼為 utf8
with open("write.csv", "w", encoding='utf8') as file:
csv_file = csv.writer(file)
# 寫入 title(活動名稱)、showUnit(演出單位)、startDate(活動起始日期)、endDate(活動結束日期)等四個欄位
for item in data:
csv_file.writerow([item['title'], item['showUnit'],
item['startDate'], item['endDate']])
Python 102 新北市公共自行車即時資訊
1. 題目說明:
請開啟PYD01.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA01.py再進行評分。
程式所產出的檔案,須輸出與程式同一層資料夾。
2. 設計說明:
請撰寫一程式,讀取新北市公共自行車即時資訊read.xml,請將其中sno(站點代號)、sna(中文場站名稱)、tot(場站總停車格)等三個欄位轉存為write.csv (需為UTF-8編碼格式),各欄位內容之間以一個半形逗號隔開。
提示:只需要輸出資料,不需要輸出欄位名稱。
3. 輸入輸出:
輸入說明
讀取read.xml
輸出說明
將三個欄位的內容:sno、sna、tot,輸出至write.csv檔案,各欄位內容之間以一個半形逗號隔開
原始填空
# 載入 xml.etree.ElementTree 模組並縮寫為 ET
import ___ as ___
# 載入 csv 模組
import ___
# 讀取 xml
tree = ___.___("___")
root = tree.getroot()
# 寫入 csv 檔案,編碼設定為 utf8
ubikefile = ___("___", "___", encoding='___')
csvwriter = csv.writer(ubikefile)
# 將其中 sno(站點代號)、sna(中文場站名稱)、tot(場站總停車格)等三個欄位寫出
for row in root:
ubike = []
sno = row.find('___').text
ubike.append(___)
sna = row.find('___').text
ubike.append(___)
tot = row.find('___').text
ubike.append(___)
csvwriter.writerow(ubike)
ubikefile.close()
填空答案
# 載入 xml.etree.ElementTree 模組並縮寫為 ET
import xml.etree.ElementTree as ET
# 載入 csv 模組
import csv
# 讀取 xml
tree = ET.parse("read.xml")
root = tree.getroot()
# 寫入 csv 檔案,編碼設定為 utf8
ubikefile = open("write.csv", "w", encoding='utf8')
csvwriter = csv.writer(ubikefile)
# 將其中 sno(站點代號)、sna(中文場站名稱)、tot(場站總停車格)等三個欄位寫出
for row in root:
ubike = []
sno = row.find('sno').text
ubike.append(sno)
sna = row.find('sna').text
ubike.append(sna)
tot = row.find('tot').text
ubike.append(tot)
csvwriter.writerow(ubike)
ubikefile.close()
Python 103 勞保投保薪資分級表
1. 題目說明:
請開啟PYD01.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA01.py再進行評分。
程式所產出的檔案,須輸出與程式同一層資料夾。
2. 設計說明:
請撰寫一程式,讀取勞保投保薪資分級表read.json內的資料後,將資料轉存為write.yaml。
3. 輸入輸出:
輸入說明
讀取read.json
輸出說明
將資料輸出至write.yaml
模組安裝:python -m pip install pyyaml
原始填空
# 載入 yaml 與 json 模組
import ___
import ___
# 讀取 json 檔案
with ___("___", encoding='utf-8-sig') as file:
data = ___.___(___)
# 寫入 yaml 檔案
with ___("___", "___", encoding="utf-8") as f:
___.___(data, f, default_flow_style=False, allow_unicode=True)
填空答案
# 載入 yaml 與 json 模組
import yaml
import json
# 讀取 json 檔案
with open("read.json", encoding='utf-8-sig') as file:
data = json.load(file)
# 寫入 yaml 檔案
with open("write.yaml", "w", encoding="utf-8") as f:
yaml.dump(data, f, default_flow_style=False, allow_unicode=True)
Python 104 JSON檔案輸出處理
1. 題目說明:
請開啟PYD01.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA01.py再進行評分。
2. 設計說明:
請撰寫一程式,建立以下資料並將其輸出為write.json檔案:
{
'people' :
[{
'id': '1',
'name': 'Peter',
'country': 'Taiwan'
},
{
'id': '2',
'name': 'Jack',
'country': 'USA'
},
{
'id': '3',
'name': 'Cindy',
'country': 'Japan'
}]
}
3. 輸入輸出:
輸入說明
無
輸出說明
將資料輸出至write.json
原始填空
# 載入 json 模組
import ___
# 建立資料
# 'id': '1'
# 'name': 'Peter'
# 'country': 'Taiwan'
#
# 'id': '2'
# 'name': 'Jack'
# 'country': 'USA'
#
# 'id': '3'
# 'name': 'Cindy'
# 'country': 'Japan'
# 將資料寫入json檔案
with ___('___', '___') as outfile:
json.dump(___, ___)
填空答案
# 載入 json 模組
import json
# 建立資料
data = {
'people': [
{
'id': '1',
'name': 'Peter',
'country': 'Taiwan'
},
{
'id': '2',
'name': 'Jack',
'country': 'USA'
},
{
'id': '3',
'name': 'Cindy',
'country': 'Japan'
}
]
}
# 將資料寫入json檔案
with open('write.json', 'w') as outfile:
json.dump(data, outfile)
Python 105 受僱員工資料表
1. 題目說明:
請開啟PYD01.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA01.py再進行評分。
2. 設計說明:
請撰寫一程式連結read.db資料庫,讀取Employee資料表,輸出Employee資料表內的資料。
3. 輸入輸出:
輸入說明
無
輸出說明
輸出Employee資料表內的資料
原始填空
# 載入 sqlite3 模組
import ___
# 建立資料庫連結
con = ___.___('___')
# 建立cursor物件
___ = con.___
# 查詢Employee資料表
___.___("SELECT * FROM Employee")
# 印出查詢結果
for ___ in ___:
print(___)
# 關閉與資料庫的連結
con.close()
填空答案
# 載入 sqlite3 模組
import sqlite3
# 建立資料庫連結
con = sqlite3.connect('read.db')
# 建立cursor物件
cur = con.cursor()
# 查詢Employee資料表
cur.execute("SELECT * FROM Employee")
# 印出查詢結果
for t in cur.fetchall():
print(t)
# 關閉與資料庫的連結
con.close()
Python第二類
Python 201 搜尋字詞
1. 題目說明:
請開啟PYD02.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA02.py再進行評分。
2. 設計說明:
請撰寫一程式,爬取https://www.codejudger.com/target/5201.html,程式須回傳下列資訊:
讓使用者輸入欲搜尋的字詞,再輸出字詞的搜尋結果及字詞出現的次數。
3. 輸入輸出:
輸入說明
爬取網頁
搜尋的字詞
輸出說明
字詞的搜尋結果
字詞出現的次數
範例輸入及輸出
模組安裝:python -m pip install requests
範例輸入及輸出
請輸入欲搜尋的字串 : TQC
TQC 搜尋成功
TQC 出現 23 次
原始填空
# 載入模組
import ___
import ___
url = '___'
# 使用 GET 請求
htmlfile = requests.___(___)
# 驗證HTTP Status Code
if htmlfile.status_code == ___:
# 欲搜尋的字串
___ = input("請輸入欲搜尋的字串 : ")
___ = re.findall(___, htmlfile.text)
if ___ in htmlfile.text:
print(___, "搜尋成功")
print(___, "出現 %d 次" % len(___))
else:
print(___, "搜尋失敗")
print(___, "出現 0 次")
else:
print("網頁下載失敗")
填空答案
# 載入模組
import requests
import re
url = 'https://www.codejudger.com/target/5201.html'
# 使用 GET 請求
htmlfile = requests.get(url)
# 驗證HTTP Status Code
if htmlfile.status_code == 200:
# 欲搜尋的字串
s = input("請輸入欲搜尋的字串 : ")
l = re.findall(s, htmlfile.text)
if s in htmlfile.text:
print(s, "搜尋成功")
print(s, "出現 %d 次" % len(l))
else:
print(s, "搜尋失敗")
print(s, "出現 0 次")
else:
print("網頁下載失敗")
Python 202 美元收盤匯率
1. 題目說明:
請開啟PYD02.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA02.py再進行評分。
程式所產出的檔案,須輸出與程式同一層資料夾。
2. 設計說明:
請撰寫一程式,爬取read.html,取得「新臺幣對美元銀行間成交之收盤匯率」資料,並將其中日期、NTD/USD兩個欄位的名稱與資料轉存為write.csv (需為UTF-8編碼格式)。
3. 輸入輸出:
輸入說明
爬取網頁
輸出說明
日期、NTD/USD兩個欄位的名稱與資料,輸出至write.csv
模組安裝:python -m pip install beautifulsoup4 lxml
原始填空
# 載入 csv 模組
import csv
# 自 urllib.request 模組載入 urlopen 函數
from ___ import ___
# 自 bs4 模組載入 BeautifulSoup 函數
from ___ import ___
# 將資料寫入csv檔案,編碼為 utf8
file_name = "___"
f = open(file_name, "w", encoding='___')
# 以 csv 模組的 writer 函數初始化寫檔
w = ___.___(f)
# 爬取的目標網頁
htmlname = "___"
# urlopen 函數讀取 html 檔案
html = urlopen(___)
# 指定 BeautifulSoup 的解析器為 lxml
bsObj = BeautifulSoup(html, "___")
count = 0
# 將其中日期、NTD/USD 兩個欄位的名稱與資料轉存為csv
# 資料位置
for single_tr in bsObj.find("___", {"class": "___"}).findAll("___"):
if count == 0:
# 擷取資料位置
cell = single_tr.findAll("___")
else:
# 擷取資料位置
cell = single_tr.findAll("___")
F0 = cell[0].text
F1 = cell[1].text
data = [[F0, F1]]
w.writerows(data)
count = count + 1
f.close()
填空答案
# 載入 csv 模組
import csv
# 自 urllib.request 模組載入 urlopen 函數
from urllib.request import urlopen
# 自 bs4 模組載入 BeautifulSoup 函數
from bs4 import BeautifulSoup
# 將資料寫入csv檔案,編碼為 utf8
file_name = "write.csv"
f = open(file_name, "w", encoding='utf8')
# 以 csv 模組的 writer 函數初始化寫檔
w = csv.writer(f)
# 爬取的目標網頁
htmlname = "file:./read.html"
# urlopen 函數讀取 html 檔案
html = urlopen(htmlname)
# 指定 BeautifulSoup 的解析器為 lxml
bsObj = BeautifulSoup(html, "lxml")
count = 0
# 將其中日期、NTD/USD 兩個欄位的名稱與資料轉存為csv
# 資料位置
for single_tr in bsObj.find("table", {"class": "DataTable2"}).findAll("tr"):
if count == 0:
# 擷取資料位置
cell = single_tr.findAll("th")
else:
# 擷取資料位置
cell = single_tr.findAll("td")
F0 = cell[0].text
F1 = cell[1].text
data = [[F0, F1]]
w.writerows(data)
count = count + 1
f.close()
Python 203 台灣彩券
1. 題目說明:
請開啟PYD02.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA02.py再進行評分。
2. 設計說明:
請撰寫一程式,爬取https://www.codejudger.com/target/5203.html,程式須回傳下列資訊:
大樂透的開出順序
大樂透的大小順序
大樂透的特別號
3. 輸入輸出:
輸入說明
爬取網頁
輸出說明
大樂透的開出順序
大樂透的大小順序
大樂透的特別號
模組安裝:python -m pip install requests beautifulsoup4 lxml
原始填空
# -*- coding: utf-8 -*-
import ___
import requests
url = '___'
# GET 請求
html = requests.___(___)
# 使用 lxml 解析器
objSoup = bs4.BeautifulSoup(html.text, '___')
dataTag = objSoup.select('.contents_box02')
balls = dataTag[2].find_all('___', {'class': '___'})
print("大樂透開獎 : ")
print('-------------')
# 開出順序
print("開出順序 : ", end='')
for i in range(6):
print(____.____, end=' ')
# 大小順序
print("\n大小順序 : ", end='')
for i in range(6, len(balls)):
print(____.____, end=' ')
# 特別號:資料位於 <div class="ball_red"></div>
redball = dataTag[2].find_all('___', {'class': '___'})
print("\n特別號 :", ____)
填空答案
# -*- coding: utf-8 -*-
import bs4
import requests
url = 'https://www.codejudger.com/target/5203.html'
# GET 請求
html = requests.get(url)
# 使用 lxml 解析器
objSoup = bs4.BeautifulSoup(html.text, 'lxml')
dataTag = objSoup.select('.contents_box02')
balls = dataTag[2].find_all('div', {'class': 'ball_yellow'})
print("大樂透開獎 : ")
print('-------------')
# 開出順序
print("開出順序 : ", end='')
for i in range(6):
print(balls[i].get_text(), end=' ')
# 大小順序
print("\n大小順序 : ", end='')
for i in range(6, len(balls)):
print(balls[i].get_text(), end=' ')
# 特別號:資料位於 <div class="ball_red"></div>
redball = dataTag[2].find_all('div', {'class': 'ball_red'})
print("\n特別號 :", redball[0].get_text())
Python 204 新北市大專院校名
1. 題目說明:
請開啟PYD02.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA02.py再進行評分。
2. 設計說明:
(1) 請撰寫一程式,爬取新北市大專院校名單,API連結如下:https://www.codejudger.com/target/5204.json
(2) 程式須輸出:新北市每一所大專院校的相關訊息:名稱、地址、聯絡電話、網站、資料更新時間。
3. 輸入輸出:
輸入說明
爬取API資料
輸出說明
新北市每一所大專院校的相關訊息:名稱、地址、聯絡電話、網站、資料更新時間
模組安裝:python -m pip install requests
原始填空
# 載入 requests 模組
import ___
# 載入 json 模組
import ___
# 開放資料連結
url = '____'
# 以 requests 模組發出 HTTP GET 請求
res = ___.___(url)
# 將回傳結果轉換成標準JSON格式
data = json.loads(res.text)
# 輸出新北市大專院校名單
print('新北市大專院校名單:\n')
for record in data:
if record['type'] == '大專院校':
print('名稱:%s' % record['___'])
print('地址:%s' % record['___'])
print('聯絡電話:%s' % record['___'])
print('網站:%s' % record['___'])
print('資料更新時間:%s' % record['___'])
print()
填空答案
# 載入 requests 模組
import requests
# 載入 json 模組
import json
# 開放資料連結
url = 'https://www.codejudger.com/target/5204.json'
# 以 requests 模組發出 HTTP GET 請求
res = requests.get(url)
# 將回傳結果轉換成標準JSON格式
data = json.loads(res.text)
# 輸出新北市大專院校名單
print('新北市大專院校名單:\n')
for record in data:
if record['type'] == '大專院校':
print('名稱:%s' % record['name'])
print('地址:%s' % record['address'])
print('聯絡電話:%s' % record['tel'])
print('網站:%s' % record['website'])
print('資料更新時間:%s' % record['update_date'])
print()
Python 205 空氣品質指標(AQI)
1. 題目說明:
請開啟PYD02.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA02.py再進行評分。
2. 設計說明:
(1) 請撰寫一程式,爬取政府AQI開放資料,API連結:https://www.codejudger.com/target/5205.json
(2) 程式須回傳下列資訊:
內容長度
新北市每一個地區的相關訊息:地區名稱、AQI指數、PM2.5指數、PM10指數、資料更新時間;
在輸出時,AQI指數、PM2.5指數、PM10指數與資料更新時間四項資訊前加入一個 tab 鍵(\t)
3. 輸入輸出:
輸入說明
爬取API資料
輸出說明
內容長度
新北市每一個地區的相關訊息:地區名稱、AQI指數、PM2.5指數、PM10指數、資料更新時間
在輸出時,AQI指數、PM2.5指數、PM10指數與資料更新時間四項資訊前加入一個 tab 鍵(\t)
原始填空
# 載入 requests 與 json 模組
import ___
import ___
# 開放資料Json格式連結
url = ___
# 發出Get請求
response = ___
# 回傳內容長度
print(___, ___)
# 將取得的回傳內容轉換成Json格式
response = ___
print()
# 顯示新北市每一個地區的PM2.5相關資料
print('新北市PM2.5相關資料:')
for record in response:
if record['County'] == '___':
print('%s:' % record['___'])
print('AQI:%s' % record['___'])
print('PM2.5:%s' % record['___'])
print('PM10:%s' % record['___'])
print('資料更新時間:%s' % record['___'])
填空答案
# 載入 requests 與 json 模組
import requests
import json
# 開放資料Json格式連結
url = 'https://www.codejudger.com/target/5205.json'
# 發出Get請求
response = requests.get(url)
# 回傳內容長度
print('Content-Length:', len(response.content))
# 將取得的回傳內容轉換成Json格式
response = json.loads(response.text)
print()
# 顯示新北市每一個地區的PM2.5相關資料
print('新北市PM2.5相關資料:')
for record in response:
if record['County'] == '新北市':
print('%s:' % record['SiteName'])
print('\tAQI:%s' % record['AQI'])
print('\tPM2.5:%s' % record['PM2.5'])
print('\tPM10:%s' % record['PM10'])
print('\t資料更新時間:%s' % record['PublishTime'])
Python第三類
Python 301 學生成績
1. 題目說明:
請開啟PYD03.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA03.py再進行評分。
2. 設計說明:
利用程式內提供的數據,依下列要求進行輸出:
輸出全部學生的成績,行標題設為科目的名稱;列標題為每個人的名字
輸出後二位學生的所有成績
將自然成績做遞減排序輸出
僅列小黃的成績,並將其英文成績改為80
3. 輸入輸出:
輸入說明
無
輸出說明
輸出全部學生的成績,行標題設為科目的名稱;列標題為每個人的名字
輸出後二位學生的所有成績
將自然成績做遞減排序輸出
僅列小黃的成績,並將其英文成績改為80
原始填空
# -*- coding: utf-8 -*-
# 載入 pandas 模組縮寫為 pd
import ___ as ___
# 資料輸入
datas = [[75, 62, 85, 73, 60], [91, 53, 56, 63, 65],
[71, 88, 51, 69, 87], [69, 53, 87, 74, 70]]
indexs = ["小林", "小黃", "小陳", "小美"]
columns = ["國語", "數學", "英文", "自然", "社會"]
df = pd.DataFrame(___, columns=___, index=___)
print('行標題為科目,列題標為個人的所有學生成績')
print(___)
print()
# 輸出後二位學生的所有成績
print('後二位的成績')
print(___)
print()
# 將自然成績做遞減排序輸出
df1 = df.sort_values(by="___", ascending=___)
print('以自然遞減排序')
print(___)
print()
# 僅列小黃的成績,並將其英文成績改為80
df.loc["___", "___"] = 80
print('小黃的成績')
print(___)
填空答案
# -*- coding: utf-8 -*-
# 載入 pandas 模組縮寫為 pd
import pandas as pd
# 資料輸入
datas = [[75, 62, 85, 73, 60], [91, 53, 56, 63, 65],
[71, 88, 51, 69, 87], [69, 53, 87, 74, 70]]
indexs = ["小林", "小黃", "小陳", "小美"]
columns = ["國語", "數學", "英文", "自然", "社會"]
df = pd.DataFrame(datas, columns=columns, index=indexs)
print('行標題為科目,列題標為個人的所有學生成績')
print(df)
print()
# 輸出後二位學生的所有成績
print('後二位的成績')
print(df.iloc[-2:]) # 或是 df.tail(2)
print()
# 將自然成績做遞減排序輸出
df1 = df.sort_values(by="自然", ascending=False)
print('以自然遞減排序')
print(df1['自然'])
print()
# 僅列小黃的成績,並將其英文成績改為80
df.loc["小黃", "英文"] = 80
print('小黃的成績')
print(df.loc['小黃'])
Python 302 矩陣
1. 題目說明:
請開啟PYD03.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA03.py再進行評分。
2. 設計說明:
請用numpy隨機產生5~15之間,15個正整數並輸出
請將 1. 轉成3×5的X矩陣並輸出
請輸出X矩陣的最大值
請輸出X矩陣的最小值
請輸出X矩陣的總和
請輸出X矩陣四個角落的元素內容
3. 輸入輸出:
輸入說明
無
輸出說明
1.請用numpy隨機產生5~15之間,15個正整數並輸出
2.請將 1. 轉成3×5的X矩陣並輸出
3.請輸出X矩陣的最大值
4.請輸出X矩陣的最小值
5.請輸出X矩陣的總和
6.請輸出X矩陣四個角落的元素內容
原始填空
# --開始--批改評分使用,請勿變動
set_seed = 123
# --結束--批改評分使用,請勿變動
import numpy as np
x = np.random.RandomState(set_seed).randint(low=5, high=16, size=15)
print('隨機正整數:', ___)
x = x.reshape(___, ___)
print('X矩陣內容:')
print(___)
print('最大:', ___)
print('最小:', ___)
print('總和:', ___)
print('四個角落元素:')
print(x[np.ix_([___, ___], [___, ___])])
填空答案
# --開始--批改評分使用,請勿變動
set_seed = 123
# --結束--批改評分使用,請勿變動
import numpy as np
x = np.random.RandomState(set_seed).randint(low=5, high=16, size=15)
print('隨機正整數:', x)
x = x.reshape(3, 5)
print('X矩陣內容:')
print(x)
print('最大:', np.max(x))
print('最小:', np.min(x))
print('總和:', np.sum(x))
print('四個角落元素:')
print(x[np.ix_([0, -1], [0, -1])])
Python 303 果菜批發市場拍賣行情
1. 題目說明:
請開啟PYD03.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA03.py再進行評分。
2. 設計說明:
某日各果菜批發市場之西瓜與香瓜之拍賣行情價量表如下:
三重區
9
203674
13.2
18894
台中市
11.7
180785
12.3
54894
台北一
10.1
127802
14.7
18563
台北二
11.8
28604
14.9
21963
台東市
13.2
600
13.1
900
板橋區
6.9
38071
9.6
3555
高雄市
12.1
35660
10.6
9005
嘉義市
12
15000
13
12000
鳳山區
11.7
48770
9.1
14370
豐原區
9.84
6100
11.89
8980
上述的資料已在PYD03.py中,請撰寫一程式建立資料結構,其中直行標題為項目(西瓜價、西瓜量、香瓜價、香瓜價),橫列標題為交易市場;接著完成下列項目:
a. 輸出如拍賣行情價量表
b. 以西瓜價遞減排序後,輸出各市場的西瓜價
c. 計算台北一市場西瓜/香瓜價量的行情並輸出
d. 將「三重市」改為「三重區」、「香瓜價」改為「洋香瓜價」、「香瓜量」改為「洋香瓜量」,重新輸出整個表格
提示:若排序數值相同時,請依照資料出現先後順序進行排序。
3. 輸入輸出:
輸入說明
無
輸出說明
分別輸出下列4段資料:
a. 拍賣行情價量表
b. 以西瓜價遞減排序後,各市場的西瓜價
c. 台北一市場西瓜/香瓜價量的行情
d. 將「三重市」改為「三重區」、「香瓜價」改為「洋香瓜價」、「香瓜量」改為「洋香瓜量」,重新輸出整個表格
原始填空
# 載入 pandas 模組縮寫為 pd
import ___ as ___
# 建構資料
___ = [[9, 203674, 13.2, 18894],
[11.7, 180785, 12.3, 54894],
[10.1, 127802, 14.7, 18563],
[11.8, 28604, 14.9, 21963],
[13.2, 600, 13.1, 900],
[6.9, 38071, 9.6, 3555],
[12.1, 35660, 10.6, 9005],
[12, 15000, 13, 12000],
[11.7, 48770, 9.1, 14370],
[9.84, 6100, 11.89, 8980]]
___ = ["三重市", "台中市", "台北一", "台北二", "台東市", "板橋區", "高雄市", "嘉義市", "鳳山區", "豐原區"]
___ = ["西瓜價", "西瓜量", "香瓜價", "香瓜量"]
df = pd.___(___, columns=___, index=___)
print('西瓜與香瓜之拍賣行情價量表')
print(df)
print() # 使用print分隔
df1 = df.___(by="___", ascending=___)
print('以西瓜價遞減排序')
print(df1['西瓜價'])
print() # 使用print分隔
# 計算台北一市場西瓜/香瓜價量的行情並輸出
df.___["___"]
print('台北一市場的行情')
print(df.___["___"])
print() # 使用print分隔
indexs[0] = "三重區"
df.index = ____
____[____] = "洋香瓜價"
____[____] = "洋香瓜量"
df.____ = ____
print('全體市場行情')
print(df)
填空答案
# 載入 pandas 模組縮寫為 pd
import pandas as pd
# 建構資料
data = [[9, 203674, 13.2, 18894],
[11.7, 180785, 12.3, 54894],
[10.1, 127802, 14.7, 18563],
[11.8, 28604, 14.9, 21963],
[13.2, 600, 13.1, 900],
[6.9, 38071, 9.6, 3555],
[12.1, 35660, 10.6, 9005],
[12, 15000, 13, 12000],
[11.7, 48770, 9.1, 14370],
[9.84, 6100, 11.89, 8980]]
indexs = ["三重市", "台中市", "台北一", "台北二", "台東市", "板橋區", "高雄市", "嘉義市", "鳳山區", "豐原區"]
columns = ["西瓜價", "西瓜量", "香瓜價", "香瓜量"]
df = pd.DataFrame(data, columns=columns, index=indexs)
print('西瓜與香瓜之拍賣行情價量表')
print(df)
print() # 使用print分隔
df1 = df.sort_values(by="西瓜價", ascending=False)
print('以西瓜價遞減排序')
print(df1['西瓜價'])
print() # 使用print分隔
# 計算台北一市場西瓜/香瓜價量的行情並輸出
df.loc["台北一"]
print('台北一市場的行情')
print(df.loc["台北一"])
print() # 使用print分隔
indexs[0] = "三重區"
df.index = indexs
columns[2] = "洋香瓜價"
columns[3] = "洋香瓜量"
df.columns = columns
print('全體市場行情')
print(df)
Python 304 資料處理與分析
1. 題目說明:
請開啟PYD03.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA03.py再進行評分。
2. 設計說明:
請讀取read.csv中的資料轉換成numpy陣列,並輸出以下資訊:
資料集型態
平均數
中位數
標準差
變異數
極差值
註:數值需四捨五入至小數點後兩位
3. 輸入輸出:
輸入說明
讀取read.csv的內容
輸出說明
資料集型態
平均數
中位數
標準差
變異數
極差值
原始填空
# 載入 numpy 模組
# 載入 pandas 模組縮
# 讀入 read.csv 檔案
# 判斷資料型態
print('資料型態:%s' % ___(__))
# 計算平均數
print('平均值:%.2f' % __.___(__))
# 計算中位數
print('中位數:%.2f' % __.___(__))
# 計算標準差
print('標準差:%.2f' % __.___(__))
# 計算變異數
print('變異數:%.2f' % __.___(__))
# 計算極差值
print('極差值:%.2f' % __.___(__))
填空答案
# 載入 numpy 模組
import numpy as np
# 載入 pandas 模組縮
import pandas as pd
# 讀入 read.csv 檔案
n = np.array(pd.read_csv('read.csv'))
# 判斷資料型態
print('資料型態:%s' % type(n))
# 計算平均數
print('平均值:%.2f' % np.mean(n))
# 計算中位數
print('中位數:%.2f' % np.median(n))
# 計算標準差
print('標準差:%.2f' % np.std(n))
# 計算變異數
print('變異數:%.2f' % np.var(n))
# 計算極差值
print('極差值:%.2f' % (np.max(n) - np.min(n) ))
Python 305 登革熱病例統計
1. 題目說明:
請開啟PYD03.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA03.py再進行評分。
2. 設計說明:
請撰寫一程式,讀取登革熱近12個月每日確定病例統計read.csv,接著依序輸出下列項目:
a. 以遞減順序顯示居住縣市的病例人數
b. 顯示感染病例人數最多的5個國家,並按遞減順序顯示
c. 顯示台北市各區病例人數
d. 顯示台北市最近病例的日期
提示:若排序數值相同時,請依照資料出現先後順序進行排序。
3. 輸入輸出:
輸入說明
讀取read.csv
輸出說明
分別輸出下列四段資料:
a. 以遞減順序顯示居住縣市的病例人數
b. 顯示感染病例人數最多的5個國家,並按遞減順序顯示
c. 顯示台北市各區病例人數
d. 顯示台北市最近病例的日期
原始填空
# 載入 pandas 模組縮寫為 pd
import ___ as ___
# 讀取csv檔
df1 = pd.read_csv(___, encoding="utf-8", sep=",", header=0)
# 居住縣市病例人數,並按遞減順序顯示
df_county = df1.groupby("居住縣市")["___"].___
print(df_county.sort_values(___=___))
# 顯示感染病例人數最多的5個國家,並按遞減順序顯示
df_country = df1.groupby("感染國家")["___"].___
print(df_country.sort_values(___=___).___)
# 台北市各區病例人數
df_taipei = df1[df1.居住縣市 == "___"]
print(df_taipei.groupby("居住鄉鎮")["___"].___)
# 台北市最近病例的日期
print("發病日: " + df_taipei.___.___())
填空答案
# 載入 pandas 模組縮寫為 pd
import pandas as pd
# 讀取csv檔
df1 = pd.read_csv('read.csv', encoding="utf-8", sep=",", header=0)
# 居住縣市病例人數,並按遞減順序顯示
df_county = df1.groupby("居住縣市")["居住縣市"].count()
print(df_county.sort_values(ascending=False))
# 顯示感染病例人數最多的5個國家,並按遞減順序顯示
df_country = df1.groupby("感染國家")["感染國家"].count()
print(df_country.sort_values(ascending=False).head(5))
# 台北市各區病例人數
df_taipei = df1[df1.居住縣市 == "台北市"]
print(df_taipei.groupby("居住鄉鎮")["居住鄉鎮"].count())
# 台北市最近病例的日期
print("發病日: " + df_taipei.發病日.iloc[-1]) # 也可以 df_taipei.發病日.max()
Python第四類
Python 401 資料:折線圖
1. 題目說明:
請開啟PYD04.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA04.py再進行評分。
2. 設計說明:
利用程式內提供的數據,依下列要求以matplotlib輸出chart.png圖檔:
設定線條寬度設定為1,線條色彩與樣式各別為藍色虛點線與紅色虛點線
設定軸刻度調整至(0,0)開始至(8,70)
標題設定
圖表標題:Figure 字體大小:24
X軸標題:x-Value,字體大小:16
Y軸標題:y-Value,字體大小:16
3. 輸入輸出:
輸入說明
無
輸出說明
輸出chart.png圖檔
原始填空
# -*- coding: utf-8 -*-
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
# 載入 matplotlib.pyplot 並縮寫為 plt
import ___ as ___
data1 = [1, 4, 9, 16, 25, 36, 49, 64]
data2 = [1, 2, 3, 6, 9, 15, 24, 39]
seq = [1, 2, 3, 4, 5, 6, 7, 8]
# 數據及線條設定
plt.plot(seq, ___, ___, seq, ___, ___, ___)
# 軸刻度
plt.axis(___)
# 圖表標題
plt.title(___)
# X軸標題
plt.xlabel(___)
# Y軸標題
plt.ylabel(___)
# 輸出圖片檔案
plt.savefig('___')
plt.close()
填空答案
# -*- coding: utf-8 -*-
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
# 載入 matplotlib.pyplot 並縮寫為 plt
import matplotlib.pyplot as plt
data1 = [1, 4, 9, 16, 25, 36, 49, 64]
data2 = [1, 2, 3, 6, 9, 15, 24, 39]
seq = [1, 2, 3, 4, 5, 6, 7, 8]
# 數據及線條設定
plt.plot(seq, data1, '--.b', seq, data2, '--.r', linewidth=1)
# 軸刻度
plt.axis([0, 8, 0, 70])
# 圖表標題
plt.title('Figure', fontsize=24)
# X軸標題
plt.xlabel('x-Value', fontsize=16)
# Y軸標題
plt.ylabel('y-Value', fontsize=16)
# 輸出圖片檔案
plt.savefig('chart.png')
plt.close()
Python 402 市場成交行情:折線圖
1. 題目說明:
請開啟PYD04.py檔案,依下列題意進行組合改寫,使輸出值符合題意要求。作答完成請另存新檔為PYA04.py再進行評分。
2. 設計說明:
請讀取果菜市場香蕉成交行情read.csv資料,主要有兩個欄位:成交日期、成交平均價。再以matplotlib輸出折線圖chart.png,輸出圖表的參數如下:
顯示圖例(legend):banana
圖表標題:Market Average Price
以成交日期為X軸,X軸名稱:date
以成交平均價為Y軸,Y軸名稱:NT$
Y軸下限15、上限25
3. 輸入輸出:
輸入說明
讀取read.csv的內容
輸出說明
輸出chart.png圖檔
原始填空
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
# 載入 matplotlib.pyplot 並縮寫為 plt
import ___ as ___
# 載入 csv 模組
import ___
x = []
y = []
# 讀入 read.csv
with open('___', 'r', encoding='utf8') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
x.append(row[0])
y.append(float(row[1]))
x_ticks = range(1, len(x) + 1)
plt.___(x_ticks, y, label=___)
plt.xticks(x_ticks, x)
plt.xlabel(___)
plt.ylabel(___)
plt.ylim(___)
# 添加圖表標題 title()
plt.___('Market Average Price')
plt.legend()
# 使用 savefig() 函數
plt.___('chart.png')
plt.close()
填空答案
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
# 載入 matplotlib.pyplot 並縮寫為 plt
import matplotlib.pyplot as plt
# 載入 csv 模組
import csv
x = []
y = []
# 讀入 read.csv
with open('read.csv', 'r', encoding='utf8') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
x.append(row[0])
y.append(float(row[1]))
x_ticks = range(1, len(x) + 1)
plt.plot(x_ticks, y, label='banana')
plt.xticks(x_ticks, x)
plt.xlabel('date')
plt.ylabel('NT$')
plt.ylim(15, 25)
# 添加圖表標題 title()
plt.title('Market Average Price')
plt.legend()
# 使用 savefig() 函數
plt.savefig('chart.png')
plt.close()
Python 403 月份統計:長條圖與圓餅圖
1. 題目說明:
請開啟PYD04.py檔案,依下列題意進行組合改寫,使輸出值符合題意要求。作答完成請另存新檔為PYA04.py再進行評分。
2. 設計說明:
依下列要求以matplotlib輸出四個月份(labels = 'Jun', 'Jul', 'Aug', 'Sep')的統計圖形chart.png,輸出圖表的參數如下:
完成左右兩個圖,左圖為長條圖(bar),右圖為圓餅圖(pie)
長條圖以labels為X軸,sizes為Y軸,各長條顏色為藍色(blue)
圓餅圖以labels為圖標,sizes為各項所占百分比
圓餅圖colors為各項顏色,長寬比為1:1,並突顯「Aug」
圓餅圖顯示各項百分比到小數點第1位
3. 輸入輸出:
輸入說明
無
輸出說明
輸出chart.png圖檔
原始填空
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 四個月份
labels = [__, __, __, __]
sizes = [20, 30, 40, 10]
# 圓餅圖顏色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
# 長條圖 位置
plt.subplot(1, 2, ___)
xticks = range(1, len(labels) + 1)
# 長條圖以labels為X軸,sizes為Y軸,各長條顏色為藍色(blue)
plt.xticks(xticks, ___)
plt.bar(___, ___, color=___)
# 圓餅圖 位置
plt.subplot(1, 2, ___)
# 圓餅圖以labels為圖標,sizes為各項所占百分比
# 圓餅圖colors為各項顏色,突顯「Aug」
# 圓餅圖顯示各項百分比到小數點第1位
explode = (0, 0, 0.1, 0)
plt.pie(___, explode=___, labels=___,
colors=___, autopct='___')
# 長寬比為1:1
plt.axis('___')
plt.savefig('chart.png')
plt.close()
填空答案
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 四個月份
labels = ['Jun', 'Jul', 'Aug', 'Sep']
sizes = [20, 30, 40, 10]
# 圓餅圖顏色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
# 長條圖 位置
plt.subplot(1, 2, 1)
xticks = range(0, len(labels))
# 長條圖以labels為X軸,sizes為Y軸,各長條顏色為藍色(blue)
plt.xticks(xticks, labels)
plt.bar(labels, sizes, color='blue')
# 圓餅圖 位置
plt.subplot(1, 2, 2)
# 圓餅圖以labels為圖標,sizes為各項所占百分比
# 圓餅圖colors為各項顏色,突顯「Aug」
# 圓餅圖顯示各項百分比到小數點第1位
explode = (0, 0, 0.1, 0)
plt.pie(sizes, explode=explode, labels=labels,
colors=colors, autopct='%.1f%%')
# 長寬比為1:1
plt.axis('equal')
plt.savefig('chart.png')
plt.close()
Python 404 成績統計:長條圖
1. 題目說明:
請開啟PYD04.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA04.py再進行評分。
2. 設計說明:
請讀取read.csv中的資料,再以matplotlib輸出長條圖chart.png,輸出圖表的參數如下:
圖表標題:Score ranges count
X軸名稱:Range
Y軸名稱:Quantity
標題字型大小:20
X軸和Y軸字型大小:14
長條寬度:2
X軸刻度:0~19, 20~39, 40~59, 60~79, 80~100
Y軸刻度:0到25,間隔5
3. 輸入輸出:
輸入說明
讀取read.csv的內容
輸出說明
輸出chart.png圖檔
原始填空
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
# 讀取學生分數資料
# 讀取 read.csv
df = ___(___)
scores = df["___"].values
# range_count[0]: range0~19
# range_count[1]: range20~39
# range_count[2]: range40~59
# range_count[3]: range60~79
# range_count[4]: range80~100
# 以0初始化計數串列
range_count = [0] * 5
# 計數過程
for score in scores:
if score < 20:
range_count[0] += 1
elif score < 40:
range_count[1] += 1
elif score < 60:
range_count[2] += 1
elif score < 80:
range_count[3] += 1
else:
range_count[4] += 1
# y軸標籤
index = np.arange(___, ___, ___)
# X軸刻度
labels = [___, ___, '40~59', ___, '80~100']
# 畫出長條圖
plt.bar(___, range_count, ___)
# 設定X軸名稱
plt.xlabel('___', fontsize=___)
# 設定Y軸名稱
plt.ylabel('___', fontsize=___)
# 設定x軸標籤
plt.xticks(index, labels)
# 設定y軸標籤
plt.yticks(index)
# 設定圖名稱
plt.title('___', fontsize=___)
# 輸出圖片檔案
plt.___('___')
plt.close()
填空答案
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
# 讀取學生分數資料
# 讀取 read.csv
df = pd.read_csv('read.csv')
scores = df["scores"].values
# range_count[0]: range0~19
# range_count[1]: range20~39
# range_count[2]: range40~59
# range_count[3]: range60~79
# range_count[4]: range80~100
# 以0初始化計數串列
range_count = [0] * 5 # 結果: [0, 0, 0, 0, 0]
# 計數過程
for score in scores:
if score < 20:
range_count[0] += 1
elif score < 40:
range_count[1] += 1
elif score < 60:
range_count[2] += 1
elif score < 80:
range_count[3] += 1
else:
range_count[4] += 1
# y軸標籤
index = np.arange(0, 25, 5)
# X軸刻度
labels = ['0~19', '20~39', '40~59', '60~79', '80~100']
# 畫出長條圖
plt.bar(labels, range_count, width=0.4) # 題目寫長條寬度為 2,但是這樣會有重疊,所以改為 0.4
# 設定X軸名稱
plt.xlabel('Range', fontsize=14)
# 設定Y軸名稱
plt.ylabel('Quantity', fontsize=14)
# 設定x軸標籤
# plt.xticks(index, labels) # 多餘的,因為 plt.bar(...) 的部分已經設定了
# 設定y軸標籤
plt.yticks(index)
# 設定圖名稱
plt.title('Score ranges count', fontsize=20)
# 輸出圖片檔案
plt.savefig('chart.png')
plt.close()
Python 405 樣本:直方圖與散佈圖
1. 題目說明:
請開啟PYD04.py檔案,依下列題意進行組合改寫,使輸出值符合題意要求。作答完成請另存新檔為PYA04.py再進行評分。
2. 設計說明:
依下列要求以matplotlib輸出chart.png圖檔:
利用程式內提供的第一組sample1與第二組sample2數據輸出左右兩個圖,左圖為直方圖(histogram),右圖為散佈圖(scatter)。
直方圖疊合兩個直方圖,兩圖均請在-3~+3間均勻間隔分為100格,透明度(alpha)均為0.5。在左上角放置圖例,sample1的標記為samples 1,sample2的標記為samples 2。
散佈圖以 sample1 作為X軸資料、sample2作為Y軸資料,透明度設為 0.2。
3. 輸入輸出:
輸入說明
無
輸出說明
輸出chart.png圖檔
原始填空
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
set_seed = 123
# --結束--批改評分使用,請勿變動
# 載入 numpy 模組並縮寫為 np
import ___ as ___
# 載入 matplotlib.pyplot 並縮寫為 plt
import ___ as ___
samples_1 = np.random.RandomState(set_seed).normal(loc=1, scale=.5, size=1000)
samples_2 = np.random.RandomState(set_seed).standard_t(df=10, size=1000)
bins = np.linspace(___, ___, ___)
# 第一個子圖
plt.subplot(___, ___, ___)
plt.hist(___, bins=___, alpha=___, label='___')
plt.hist(___, bins=___, alpha=___, label='___')
# 在左上角 upper left 放置圖例 legend
plt.___(loc='___')
# 第二個子圖
plt.subplot(___, ___, ___)
plt.scatter(___, ___, alpha=___)
plt.savefig(___)
plt.close()
填空答案
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
set_seed = 123
# --結束--批改評分使用,請勿變動
# 載入 numpy 模組並縮寫為 np
import numpy as np
# 載入 matplotlib.pyplot 並縮寫為 plt
import matplotlib.pyplot as plt
samples_1 = np.random.RandomState(set_seed).normal(loc=1, scale=.5, size=1000)
samples_2 = np.random.RandomState(set_seed).standard_t(df=10, size=1000)
bins = np.linspace(-3, 3, 100)
# 第一個子圖
plt.subplot(2, 2, 1)
plt.hist(samples_1, bins=bins, alpha=0.5, label='samples 1')
plt.hist(samples_2, bins=bins, alpha=0.5, label='samples 2')
# 在左上角 upper left 放置圖例 legend
plt.legend(loc='upper left')
# 第二個子圖
plt.subplot(1, 2, 2)
plt.scatter(samples_1, samples_2, alpha=0.2)
plt.savefig('chart.png')
plt.close()