2026年9月28日 星期一

用 Python 認識雲林好食材:選擇結構實作

智慧生活科技專業社群|Python × 食農教育

用 Python 認識雲林好食材:選擇結構實作

如果程式能聽懂我們輸入的食材,再依照產地、價格或餐盤分類給出建議,就像一位「雲林食農小幫手」。這篇從雲林農漁產情境出發,練習 Python 的單向、雙向、多向與巢狀選擇結構,也認識條件判斷和 in。

ifif…elseif…elif…else巢狀判斷intuple・list・dict・set

一、課程挑戰:打造雲林食農小幫手

雲林有豐富的農漁產與飲食文化。課堂可以選用花生、地瓜、蒜頭、玉米、稻米、文蛤或虱目魚等食材,設計互動程式:輸入食材名稱,程式檢查是否在清單中,並根據條件顯示料理或採買提示。

教學提醒:下列食材清單、分類與價格是程式練習用的示例資料。實際產地、產季、價格及營養分類,請依課程選定的資料來源查證與更新。

二、先準備食材資料:變數與資料型別

變數可以保存文字、數字或真假判斷。先觀察食材名稱、價格及是否為在地食材各自屬於什麼資料型別。

food = "花生"
price = 80
is_local = True
season = "秋季"

print(type(food))
print(type(price))
print(type(is_local))
print(type(season))
變數範例內容資料型別用途
food「花生」str保存食材名稱
price80int保存整數價格
is_localTruebool保存是/否的判斷
season「秋季」str保存季節文字

三、選擇適合的資料容器

不同容器適合保存不同型態的食農資料。先建立資料,再用選擇結構判斷。

容器適合的資料範例
tuple 元組一組固定資料,例如食材、產地、示例價格("花生", "西螺", 80)
list 串列有順序、可能新增或修改的食材清單["花生", "地瓜", "蒜頭"]
dict 字典用欄位名稱查詢食材資料{"花生": 80}
set 集合不重複的分類或食材名稱{"蔬菜", "全穀雜糧"}

1. 用 tuple 保存一筆食材資料

food_info = ("花生", "西螺", 80)

print(food_info[0])  # 花生
print(food_info[1])  # 西螺
print(food_info[2])  # 80

2. 用 list 建立採買清單

local_foods = ["花生", "地瓜", "蒜頭", "玉米"]
local_foods.append("稻米")
print(local_foods)

3. 用 dict 查詢價格

food_prices = {
    "花生": 80,
    "地瓜": 45,
    "蒜頭": 120
}
print(food_prices["花生"])

4. 用 set 保存不重複的餐盤類別

food_groups = {"蔬菜", "全穀雜糧", "豆魚蛋肉", "水果"}
print(food_groups)
集合沒有固定順序。如果程式需要依照原本順序顯示食材,請使用串列。

四、條件判斷與運算子

條件判斷會得到 True 或 False。比較運算子用來比較資料,邏輯運算子可以組合多個條件。

運算子意思例子
==、!=相等、不相等food == "花生"
>、<、>=、<=大於、小於、大於等於、小於等於price <= 100
and兩個條件都成立is_local and price <= 100
or至少一個條件成立food == "地瓜" or food == "玉米"
not反轉真假結果not is_local

五、實作一:單向選擇結構

單向選擇是在條件成立時執行指定程式;條件不成立時就略過。

food = "花生"
is_local = True

if is_local:
    print(food, "是本地食材,支持在地農業!")

print("食農小幫手查詢完成。")
動手做:把 is_local 改成 False,觀察哪一行訊息會出現、哪一行不會出現。

六、實作二:雙向選擇結構

雙向選擇使用 if…else,讓條件成立與不成立時分別執行不同內容。

food = "地瓜"
is_local = True

if is_local:
    print(food, "可以標示為本地食材。")
else:
    print(food, "請再確認產地資訊。")
動手做:改變 is_local 的值,測試程式如何回應。再把食材換成自己熟悉的雲林農漁產品。

七、實作三:多向選擇結構

當程式需要處理多種情況,可以使用 if…elif…else。程式由上而下檢查,執行第一個符合的條件。

food = input("請輸入食材名稱:")

if food == "地瓜":
    print("料理方向:烤地瓜或地瓜粥")
elif food == "花生":
    print("料理方向:花生湯或花生粉")
elif food == "蒜頭":
    print("料理方向:蒜頭雞湯或蒜香料理")
elif food == "玉米":
    print("料理方向:玉米湯或蒸玉米")
else:
    print("目前沒有這項食材的料理建議,歡迎補充資料。")

程式執行時輸入食材名稱。字串需完全相同,例如「花生」和「花生米」會被視為不同內容。

依價格提供採買提示

price = 80

if price < 50:
    print("示例價格較低,可納入日常採買評估。")
elif price <= 100:
    print("示例價格中等,可依預算與需求選購。")
else:
    print("示例價格較高,建議比較資料或調整採買量。")

八、實作四:巢狀選擇結構

巢狀選擇是在一個條件區塊裡再放入另一個條件。以下先判斷是否為在地食材,再判斷價格。

food = "花生"
is_local = True
price = 80

if is_local:
    print(food, "是本地食材。")

    if price <= 100:
        print("示例價格在預算範圍內。")
    else:
        print("示例價格超過預算,建議比較或調整數量。")
else:
    print("請先確認食材產地。")
注意縮排:內層 if 比外層多縮排一層,因此只有外層條件成立時,才會進一步檢查價格。

九、條件判斷與運算子 in

in 可以檢查某筆資料是否存在於字串或容器中,結果為 True 或 False。

檢查食材是否在採買清單

shopping_list = ["花生", "地瓜", "蒜頭"]
food = input("輸入想查詢的食材:")

if food in shopping_list:
    print(food, "已列入採買清單。")
else:
    print(food, "尚未列入採買清單。")

用 in 查詢字典的鍵

food_info = {
    "花生": "可加工成花生油、花生糖等食品",
    "地瓜": "可蒸煮、烘烤或製作地瓜粥",
    "蒜頭": "常用於家常料理調味"
}

food = input("請輸入食材名稱:")

if food in food_info:
    print(food_info[food])
else:
    print("資料庫中還沒有這項食材。")

對字典使用 food in food_info,預設檢查的是「鍵」是否存在。若要檢查某個值,則可使用 food in food_info.values()。

十、綜合實作:雲林食農小幫手

把容器、in 與選擇結構整合起來。程式先確認食材是否在資料庫,再顯示示例價格,並依價格區間及食材種類提供提示。

local_foods = ["花生", "地瓜", "蒜頭", "玉米"]
food_prices = {
    "花生": 80,
    "地瓜": 45,
    "蒜頭": 120,
    "玉米": 35
}

food = input("請輸入想查詢的食材:")

if food in local_foods:
    price = food_prices[food]
    print(food, "在本次課堂食材清單中。")
    print("練習用示例價格:", price, "元")

    if price <= 50:
        print("採買提示:可依家庭需求與預算評估。")
    elif price <= 100:
        print("採買提示:可搭配預算與餐點需求選購。")
    else:
        print("採買提示:可比較不同資料來源或調整份量。")

    if food == "地瓜" or food == "玉米":
        print("料理提示:可嘗試蒸煮或搭配主食。")
    elif food == "花生":
        print("料理提示:可作為配料;食用前留意過敏情況。")
    else:
        print("料理提示:可查找適合的家常料理。")
else:
    print("這項食材不在本次課堂清單中,請查證後再補入資料。")
資料查證:價格只是程式練習資料,不代表即時市價。進行食農教育時,可讓學生訪問農友、查閱市場資訊或使用教師提供的資料,更新字典內容並註明來源。

十一、學生練習任務

  1. 單向選擇:建立 season 變數;若值為「秋季」,顯示秋季食材主題活動訊息。
  2. 雙向選擇:使用 is_local 判斷食材是否為本地食材,輸出兩種不同提示。
  3. 多向選擇:選擇至少三種雲林農漁產品,依名稱提供不同料理介紹。
  4. 巢狀選擇:先判斷食材是否在清單內;若在,再判斷價格是否高於自訂預算。
  5. 容器與 in:建立至少五項食材的串列,讓使用者輸入名稱,判斷是否在清單中。
  6. 挑戰題:建立字典儲存食材名稱、產地與料理建議,再用 in 檢查資料是否存在。

十二、課堂概念檢核

  1. 單向選擇結構使用哪個關鍵字?
  2. 如何讓條件成立與不成立時執行不同程式?
  3. if…elif…else 的條件檢查順序是什麼?
  4. 巢狀選擇中的縮排代表什麼?
  5. "花生" in ["花生", "地瓜"] 的結果是什麼?
  6. 使用 "花生" in food_info 時,字典檢查的是鍵還是值?
  7. 哪種容器適合保存可調整的採買清單?哪種容器適合用欄位名稱查詢資料?

十三、課程重點回顧

結構或概念用途
單向選擇 if條件成立才執行
雙向選擇 if…else成立與不成立分別處理
多向選擇 if…elif…else依多種情況選擇處理方式
巢狀選擇在一個條件區塊中再判斷條件
in檢查資料是否存在於字串或容器
tuple / list / dict / set依資料需求選擇適合的容器
從在地食材到程式邏輯
選擇結構讓程式能根據不同資料做出回應;食材清單、產地資料和料理知識則讓程式連結真實生活。學生可以從熟悉的家鄉食物開始,逐步完成自己的食農教育互動程式。

標籤:Python、選擇結構、食農教育、雲林、資料型別、串列、元組、字典、集合、條件判斷、in

沒有留言:

張貼留言