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的沙龍
159會員
314內容數
本業是影像辨識軟體開發,閒暇時間進修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
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這份專案 global-stock-data-warehouse 是 stock-reminder-bot 的進階資料後援庫。如果說之前的 Bot 是「傳令兵」,這套系統就是「軍械庫」,負責儲存、同步全球市場(台、美、港)的歷史數據。 在進行量化分析或技術指標篩選時,「資料的穩定性」是成敗關鍵。
Thumbnail
這份專案 global-stock-data-warehouse 是 stock-reminder-bot 的進階資料後援庫。如果說之前的 Bot 是「傳令兵」,這套系統就是「軍械庫」,負責儲存、同步全球市場(台、美、港)的歷史數據。 在進行量化分析或技術指標篩選時,「資料的穩定性」是成敗關鍵。
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
🍔 一、走7步,會到哪裡? 想像你走出家門,往右邊走了7步。 這個「7」代表什麼?只是數字,還是一段有方向的移動? 7 是「你走了幾步」,但如果我不知道你是往哪裡走,我其實什麼也不知道。 如果我告訴你:「你往北走了 7 公尺」,這才是有意義的資訊。 📌 所以,「有方向」的數字,才叫「向
Thumbnail
🍔 一、走7步,會到哪裡? 想像你走出家門,往右邊走了7步。 這個「7」代表什麼?只是數字,還是一段有方向的移動? 7 是「你走了幾步」,但如果我不知道你是往哪裡走,我其實什麼也不知道。 如果我告訴你:「你往北走了 7 公尺」,這才是有意義的資訊。 📌 所以,「有方向」的數字,才叫「向
Thumbnail
你是不是跟我一樣:文章都寫在 Notion,結果每次要貼到方格子還要手動複製貼上、重新排版、上傳圖片……每次都貼到懷疑人生? 好消息來了!我們可以用 Python 一鍵把 Notion 文章自動貼到方格子草稿區,還能保留格式,貼完直接編輯、發佈,不再重複勞動, 讓我們專注在撰寫精選文章上, 發
Thumbnail
你是不是跟我一樣:文章都寫在 Notion,結果每次要貼到方格子還要手動複製貼上、重新排版、上傳圖片……每次都貼到懷疑人生? 好消息來了!我們可以用 Python 一鍵把 Notion 文章自動貼到方格子草稿區,還能保留格式,貼完直接編輯、發佈,不再重複勞動, 讓我們專注在撰寫精選文章上, 發
Thumbnail
藉由Telegram的機器播報,模擬出以下成功的交易!
Thumbnail
藉由Telegram的機器播報,模擬出以下成功的交易!
Thumbnail
UPBIT交易所上新幣能引發短時間內的爆拉潮,搞一個自動買入系統!
Thumbnail
UPBIT交易所上新幣能引發短時間內的爆拉潮,搞一個自動買入系統!
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
在日常生活和工作中,我們經常需要發送電子郵件來進行溝通和分享資訊。本文將介紹如何使用Python的pywin32模組連接到Outlook,並通過程式來自動發送郵件。
Thumbnail
在日常生活和工作中,我們經常需要發送電子郵件來進行溝通和分享資訊。本文將介紹如何使用Python的pywin32模組連接到Outlook,並通過程式來自動發送郵件。
Thumbnail
第一個實戰,我們就先從如何連接自己的網站開始,當我們輸入「部落格」時,機器人就會輸出一個表格,只要點選「馬上觀看」,我們就可以直接連接到自己的部落格,此功能其實也可以運用在連接粉專或是其他想要觀看的網站唷!! Flex Message 實際製作教學 選擇模板 更改圖片 修改內容物 修改底部box
Thumbnail
第一個實戰,我們就先從如何連接自己的網站開始,當我們輸入「部落格」時,機器人就會輸出一個表格,只要點選「馬上觀看」,我們就可以直接連接到自己的部落格,此功能其實也可以運用在連接粉專或是其他想要觀看的網站唷!! Flex Message 實際製作教學 選擇模板 更改圖片 修改內容物 修改底部box
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News