Python 自動氣象播報員教學

更新 發佈閱讀 10 分鐘

—— 用一個專案學會流程控制、函式、字串與 API 思維

在這個教學中,我們將透過一個 **「Python 自動氣象播報員」**的小專案,學會多個非常重要的 Python 基礎觀念,包括:

✅ 函式(Function)

✅ 條件判斷(if / elif / else)

✅ 字串處理(String)

✅ 字典與串列(Dictionary & List)

✅ f-string 格式化輸出

✅ API 與 JSON 的基本概念



📌 專案目標說明

這個程式可以讓使用者:

  1. 輸入想查詢的城市
  2. 取得該城市的氣溫與天氣描述(以 API 資料格式模擬)
  3. 根據天氣狀況,自動給出穿衣與生活建議

🧱 專案整體架構

程式主要分成三個部分:

  1. get_weather_advice()
    👉 根據氣溫與天氣狀況,產生貼心建議
  2. weather_reporter()
    👉 主程式,負責使用者互動與資料整合
  3. 主程式進入點 (if __name__ == "__main__":)

1️⃣ 匯入套件:requests

import requests

這行是用來匯入 requests 套件,它的用途是:

  • 向網路 API 發送請求
  • 取得 JSON 格式的資料

📌 本教學中先不實際呼叫 API,而是用模擬資料,讓初學者能專心理解邏輯。


2️⃣ 撰寫天氣建議函式 get_weather_advice

def get_weather_advice(temp, condition):
"""
根據氣溫和天氣狀況提供穿衣與生活建議
"""

🔹 函式參數說明

  • temp:目前氣溫(數字)
  • condition:天氣描述(字串)

🔸 條件判斷(if / elif / else)

if temp < 15:
advice += "❄️ 今天很冷,記得穿上厚外套喔!"
elif 15 <= temp <= 25:
advice += "☁️ 氣溫舒適,穿件薄長袖或外套就可以了。"
else:
advice += "☀️ 天氣炎熱,多喝水注意防曬!"

📘 這一段示範了:

  • 數值比較
  • 多重條件判斷
  • 根據不同情況給出不同結果

🔸 字串處理(檢查是否下雨)

if "rain" in condition.lower() or "雨" in condition:
advice += "\n☔ 外面好像會下雨,出門記得帶把傘。"

📘 這裡學到:

  • .lower():把字串轉成小寫
  • in:檢查字串是否包含某個關鍵字
  • 換行字元 \n

🔸 回傳結果

return advice

這樣主程式就可以拿到整理好的建議內容。


3️⃣ 主程式:weather_reporter()

def weather_reporter():

這是整個應用程式的核心。


🔹 使用者輸入

city = input("請輸入你想查詢的城市名稱: ")

📘 讓使用者與程式互動,是寫應用程式的第一步。


🔹 API 網址(示意)

api_url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&units=metric&appid=YOUR_API_KEY_HERE"

📘 這一行示範:

  • f-string
  • API Query 的基本結構
  • 為未來串接真實 API 做準備

4️⃣ 模擬 API 回傳資料(JSON 結構)

sample_data = {
"main": {"temp": 22.5, "humidity": 70},
"weather": [{"description": "clear sky"}],
"name": city
}

📘 這段非常重要,因為:

  • API 回傳的資料通常是 JSON
  • 在 Python 中會轉成 Dictionary + List

🔹 資料提取(容器操作)

current_temp = sample_data["main"]["temp"]
weather_desc = sample_data["weather"][0]["description"]

📘 學到:

  • 字典取值
  • 串列索引
  • 巢狀資料結構存取

5️⃣ 呼叫函式,取得建議

my_advice = get_weather_advice(current_temp, weather_desc)

📘 這就是「函式的價值」:

  • 把複雜邏輯包起來
  • 主程式變得乾淨又好讀

6️⃣ 美化輸出(f-string)

print(f"🌡️ 當前氣溫:{current_temp}°C")
print(f"💡 貼心建議:{my_advice}")

📘 f-string 的好處:

  • 可讀性高
  • 適合顯示動態資料
  • 幾乎是 Python 必學技能

7️⃣ 程式進入點

if __name__ == "__main__":
weather_reporter()

📘 這行的意思是:

  • 只有在直接執行此檔案時,才會啟動程式
  • 是 Python 專業寫法的基本配備

完整程式碼

import requests

def get_weather_advice(temp, condition):
"""
根據氣溫和天氣狀況提供穿衣與生活建議 (流程控制練習)
"""
advice = ""

# 1. 針對溫度的建議 (if-elif-else)
if temp < 15:
advice += "❄️ 今天很冷,記得穿上厚外套喔!"
elif 15 <= temp <= 25:
advice += "☁️ 氣溫舒適,穿件薄長袖或外套就可以了。"
else:
advice += "☀️ 天氣炎熱,多喝水注意防曬!"

# 2. 針對天氣描述的建議 (字串處理)
if "rain" in condition.lower() or "雨" in condition:
advice += "\n☔ 外面好像會下雨,出門記得帶把傘。"

return advice

def weather_reporter():
print("--- 🌟 歡迎使用 Python 自動氣象播報員 🌟 ---")
city = input("請輸入你想查詢的城市名稱 (例如: Taipei 或 London): ")

# 這裡使用一個開放的 API 範例 (OpenWeatherMap 邏輯)
# 註:實際教學時,學員需申請 API Key,此處為演示邏輯
api_url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&units=metric&appid=YOUR_API_KEY_HERE"

print(f"\n正在幫你連線到雲端資料庫,查詢 {city} 的天氣...")

# 模擬 API 回傳的資料結構 (Dictionary & List 練習)
# 在實際影片中,我們會解釋這是 Requests 抓回來的 JSON 格式
sample_data = {
"main": {"temp": 22.5, "humidity": 70},
"weather": [{"description": "clear sky"}],
"name": city
}

# 提取資料 (容器操作)
current_temp = sample_data["main"]["temp"]
weather_desc = sample_data["weather"][0]["description"]

# 取得建議 (呼叫函式)
my_advice = get_weather_advice(current_temp, weather_desc)

# 華麗的字串輸出 (f-string)
print("-" * 40)
print(f"📍 城市位置:{sample_data['name']}")
print(f"🌡️ 當前氣溫:{current_temp}°C")
print(f"☁️ 天氣狀況:{weather_desc}")
print(f"💡 貼心建議:{my_advice}")
print("-" * 40)
print("祝你有美好的一天!畢業快樂!🎓")

if __name__ == "__main__":
weather_reporter()

🎯 教學重點總結

透過這個小專案,你已經學會了:

✔ 如何設計與呼叫函式

✔ 如何使用條件判斷處理不同情況

✔ 如何操作 Dictionary 與 List

✔ 如何理解 API 與 JSON 的資料結構

✔ 如何寫出有「實用價值」的 Python 程式


留言
avatar-img
螃蟹_crab的沙龍
167會員
322內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2025/11/13
許多開發者在 Windows 上安裝了多個 Python 版本(例如 3.8、3.11、WinPython 3.12 等), 卻常常遇到「到底現在執行的是哪個 Python?」的困惑。 甚至有時候明明沒有把某個版本加入環境變數(PATH), 但在該資料夾中執行 python 時,卻發現系統竟然
2025/11/13
許多開發者在 Windows 上安裝了多個 Python 版本(例如 3.8、3.11、WinPython 3.12 等), 卻常常遇到「到底現在執行的是哪個 Python?」的困惑。 甚至有時候明明沒有把某個版本加入環境變數(PATH), 但在該資料夾中執行 python 時,卻發現系統竟然
2025/10/30
💻 在同一台電腦上讓程式互通:TCP/IP Socket 原理與實作 🧠 一、為什麼同一台電腦也能用 TCP/IP 通訊? 很多人以為 TCP/IP 只用在「跨網路」的通訊,其實不然。 TCP/IP 是一種協定(Protocol),而非實體連線。 Windows、macOS、Linux
Thumbnail
2025/10/30
💻 在同一台電腦上讓程式互通:TCP/IP Socket 原理與實作 🧠 一、為什麼同一台電腦也能用 TCP/IP 通訊? 很多人以為 TCP/IP 只用在「跨網路」的通訊,其實不然。 TCP/IP 是一種協定(Protocol),而非實體連線。 Windows、macOS、Linux
Thumbnail
2025/09/26
測試Python 3.12.10版本與目前使用的3.87版本 差異 參考以下文章 在 Python 3.8.6 vs 3.12.10 上跑同一組程式,比較不同類型任務的效能差異。 成果彙整 程式碼參考如下 🧮 數值運算密集 (CPU bound) import time def
Thumbnail
2025/09/26
測試Python 3.12.10版本與目前使用的3.87版本 差異 參考以下文章 在 Python 3.8.6 vs 3.12.10 上跑同一組程式,比較不同類型任務的效能差異。 成果彙整 程式碼參考如下 🧮 數值運算密集 (CPU bound) import time def
Thumbnail
看更多
你可能也想看
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
這份專案 global-stock-data-warehouse 是 stock-reminder-bot 的進階資料後援庫。如果說之前的 Bot 是「傳令兵」,這套系統就是「軍械庫」,負責儲存、同步全球市場(台、美、港)的歷史數據。 在進行量化分析或技術指標篩選時,「資料的穩定性」是成敗關鍵。
Thumbnail
這份專案 global-stock-data-warehouse 是 stock-reminder-bot 的進階資料後援庫。如果說之前的 Bot 是「傳令兵」,這套系統就是「軍械庫」,負責儲存、同步全球市場(台、美、港)的歷史數據。 在進行量化分析或技術指標篩選時,「資料的穩定性」是成敗關鍵。
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
Thumbnail
第一章:申請 Google Sheets API (最難的部分) 建立專案:進入 Google Cloud Console。https://console.cloud.google.com/ 2.啟用 API:搜尋並啟用 Google Sheets API 點選下圖中的Google Shee
Thumbnail
第一章:申請 Google Sheets API (最難的部分) 建立專案:進入 Google Cloud Console。https://console.cloud.google.com/ 2.啟用 API:搜尋並啟用 Google Sheets API 點選下圖中的Google Shee
Thumbnail
UPBIT交易所上新幣能引發短時間內的爆拉潮,搞一個自動買入系統!
Thumbnail
UPBIT交易所上新幣能引發短時間內的爆拉潮,搞一個自動買入系統!
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
你是不是跟我一樣:文章都寫在 Notion,結果每次要貼到方格子還要手動複製貼上、重新排版、上傳圖片……每次都貼到懷疑人生? 好消息來了!我們可以用 Python 一鍵把 Notion 文章自動貼到方格子草稿區,還能保留格式,貼完直接編輯、發佈,不再重複勞動, 讓我們專注在撰寫精選文章上, 發
Thumbnail
你是不是跟我一樣:文章都寫在 Notion,結果每次要貼到方格子還要手動複製貼上、重新排版、上傳圖片……每次都貼到懷疑人生? 好消息來了!我們可以用 Python 一鍵把 Notion 文章自動貼到方格子草稿區,還能保留格式,貼完直接編輯、發佈,不再重複勞動, 讓我們專注在撰寫精選文章上, 發
Thumbnail
🍔 一、走7步,會到哪裡? 想像你走出家門,往右邊走了7步。 這個「7」代表什麼?只是數字,還是一段有方向的移動? 7 是「你走了幾步」,但如果我不知道你是往哪裡走,我其實什麼也不知道。 如果我告訴你:「你往北走了 7 公尺」,這才是有意義的資訊。 📌 所以,「有方向」的數字,才叫「向
Thumbnail
🍔 一、走7步,會到哪裡? 想像你走出家門,往右邊走了7步。 這個「7」代表什麼?只是數字,還是一段有方向的移動? 7 是「你走了幾步」,但如果我不知道你是往哪裡走,我其實什麼也不知道。 如果我告訴你:「你往北走了 7 公尺」,這才是有意義的資訊。 📌 所以,「有方向」的數字,才叫「向
Thumbnail
藉由Telegram的機器播報,模擬出以下成功的交易!
Thumbnail
藉由Telegram的機器播報,模擬出以下成功的交易!
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News