2026年8月30日 星期日

用文蛤養殖數據學會資料型別、變數與運算子

Python一下|第3篇

用文蛤養殖數據學會資料型別、變數與運算子

《從風土資料到智慧生活的程式設計》——把水溫、鹽度、溶氧與用電量,轉化成Python看得懂的資料。

本篇學習目標
  • 認識intfloatstrbool四種基本資料型別。
  • 理解變數命名、指定與重新指定。
  • 使用算術、比較、邏輯及指定運算子。
  • 分辨「計算結果」與「判斷結果」。
  • 完成一份文蛤養殖數據摘要程式。

一、真實場域中的資料不只一種

智慧養殖系統會接收許多不同資料:文蛤數量可能是整數,水溫與溶氧常帶有小數,養殖池名稱是文字,設備是否運轉則只有「是」或「否」。Python必須知道資料的性質,才能正確儲存、計算與判斷。

int

整數
數量、次數、人數

float

浮點數
水溫、鹽度、價格

str

字串
名稱、地點、說明

bool

布林值
開關、正常與否

二、用type()認識資料型別

clam_count = 1200
water_temperature = 28.5
pond_name = "水井村一號養殖池"
aerator_running = True

print(type(clam_count))
print(type(water_temperature))
print(type(pond_name))
print(type(aerator_running))
<class 'int'> <class 'float'> <class 'str'> <class 'bool'>
注意:TrueFalse的第一個字母要大寫,而且不能加引號。"True"只是文字,不是布林值。

整數int

沒有小數點的正整數、負整數與零都屬於int

ponds = 7
visitors = 30
change = -2
print(ponds, visitors, change)

浮點數float

帶有小數點的數值通常是float。即使寫成28.0,仍然是浮點數。

temperature = 28.5
salinity = 18.2
dissolved_oxygen = 5.8
print(temperature, salinity, dissolved_oxygen)

字串str

文字要放在單引號或雙引號中,數字加上引號後也會變成字串。

village = "水井村"
product = "文蛤"
sensor_id = "001"
print(village, product, sensor_id)

感測器編號"001"雖然由數字組成,但它不拿來計算,而且前面的零需要保留,因此適合使用字串。

布林值bool

aerator_running = True
sensor_offline = False
print(aerator_running, sensor_offline)

三、變數是資料的名稱標籤

變數讓資料有容易理解的名稱。等號=在Python中表示「把右邊的值指定給左邊的變數」,不是數學中的相等證明。

water_temperature = 28.5
print(water_temperature)

water_temperature = 29.1
print(water_temperature)

第二次指定後,變數改為記住新的水溫。

良好的變數命名

原則建議不建議
以字母或底線開始water_temperature1temperature
名稱表達資料意義dissolved_oxygenx
多個英文單字用底線分隔daily_energydailyenergy
避免Python保留字pond_nameclass
大小寫要一致salinitySalinitysalinity混用
中文變數可以用嗎?Python 3允許中文變數,但跨平台協作、查找文件與團隊維護時,建議程式變數使用有意義的英文小寫名稱;輸出內容與地方名稱則保留繁體中文。

四、算術運算子:把數據轉成資訊

運算子功能範例
+加法總數、增加量
-減法差值、節省量
*乘法功率×時間
/除法,結果通常為float平均值
//整數除法可裝滿幾箱
%餘數剩餘數量
**次方面積或科學計算

範例:計算每日用電量與節電率

old_power = 1.25
new_power = 0.23
hours = 10

old_energy = old_power * hours
new_energy = new_power * hours
saved_energy = old_energy - new_energy
saving_rate = saved_energy / old_energy * 100

print(f"改善前每日用電:{old_energy:.2f} kWh")
print(f"改善後每日用電:{new_energy:.2f} kWh")
print(f"每日節省用電:{saved_energy:.2f} kWh")
print(f"依此組模擬數值計算,節電率為:{saving_rate:.1f}%")
資料解讀:程式只會依輸入數值計算。結果能否代表實際節能成效,還要確認設備規格、量測期間、負載、運轉時數與比較基準,不能把一次模擬直接當成正式成果。

範例:文蛤分箱

clam_count = 128
box_capacity = 12

full_boxes = clam_count // box_capacity
remaining_clams = clam_count % box_capacity

print(f"可裝滿{full_boxes}箱")
print(f"剩下{remaining_clams}顆")

五、比較運算子:產生True或False

運算子意義範例
==等於temperature == 28
!=不等於status != "離線"
>大於temperature > 30
<小於oxygen < 5
>=大於或等於salinity >= 15
<=小於或等於salinity <= 25
water_temperature = 28.5
dissolved_oxygen = 5.8

print(water_temperature > 30)
print(dissolved_oxygen >= 5)
False True
最常見錯誤:=是指定值,==才是比較是否相等。

六、邏輯運算子:組合多個條件

運算子意義結果為True的時機
and而且左右兩個條件都成立
or或者至少一個條件成立
not不是反轉原本的布林結果
water_temperature = 28.5
dissolved_oxygen = 5.8
sensor_online = True

temperature_in_range = water_temperature >= 25 and water_temperature <= 30
needs_attention = dissolved_oxygen < 5 or not sensor_online

print("水溫在示範範圍內:", temperature_in_range)
print("需要留意:", needs_attention)

此處先觀察邏輯運算產生的TrueFalse;如何根據結果執行不同指令,會在後續「選擇結構」學習。

七、指定運算子:更新累積資料

寫法等同用途
x += 1x = x + 1累加數量
x -= 1x = x - 1扣除數量
x *= 2x = x * 2倍增
x /= 2x = x / 2除法更新
visitor_count = 20
visitor_count += 5
print("更新後參訪人數:", visitor_count)

八、運算先後順序

Python通常依「括號、次方、乘除、加減、比較、not、and、or」的方向處理。複雜算式應主動加入括號,提高可讀性。

price = 80
quantity = 15
shipping = 100

total = (price * quantity) + shipping
print("估計總額:", total)

九、文蛤養殖數據摘要程式

pond_name = input("養殖池名稱:")
water_temperature = float(input("水溫(°C):"))
salinity = float(input("鹽度:"))
dissolved_oxygen = float(input("溶氧(mg/L):"))
power = float(input("設備功率(kW):"))
hours = float(input("今日運轉時數:"))
sensor_online = True

daily_energy = power * hours
temperature_in_demo_range = 25 <= water_temperature <= 30
oxygen_in_demo_range = dissolved_oxygen >= 5
data_available = sensor_online and temperature_in_demo_range and oxygen_in_demo_range

print("\n===== 文蛤養殖數據摘要 =====")
print(f"養殖池:{pond_name}")
print(f"水溫:{water_temperature:.1f}°C")
print(f"鹽度:{salinity:.1f}")
print(f"溶氧:{dissolved_oxygen:.1f} mg/L")
print(f"今日估計用電:{daily_energy:.2f} kWh")
print(f"感測器在線:{sensor_online}")
print(f"示範條件皆成立:{data_available}")
教學數值說明:程式中的25~30°C與5 mg/L僅用來練習比較及邏輯運算,不是文蛤養殖的正式管理標準。真實告警門檻應由養殖戶、專業人員及場域量測資料共同確認。

十、常見錯誤

問題原因修正
"28.5" + 1失敗字串不能直接和整數相加先用float()轉換
True寫成truePython區分大小寫使用TrueFalse
判斷相等寫成=指定與比較混淆改成==
小數計算出現很長尾數浮點數以二進位近似表示顯示時用格式化;財務資料採Decimal
變數突然變成其他型別Python允許重新指定不同型別維持清楚命名,必要時用type()檢查

十一、漸進式練習

基礎:四種型別盤點

為「養殖池編號、文蛤數量、水溫、設備啟動狀態」選擇適合型別,建立變數並用type()驗證。

進階:平均水溫

morning = 27.2
noon = 29.1
evening = 28.0
average = (morning + noon + evening) / 3
print(f"平均水溫:{average:.1f}°C")

USR挑戰:節能前後比較

輸入改善前與改善後的設備功率、每日運轉時數,計算每日用電量、節省量與節省百分比;在輸出中特別標示這是「依輸入條件估算」,而非直接宣稱場域成果。

十二、學習檢核

  1. 2828.0"28"分別是哪一種型別?
  2. 為何感測器編號001適合存成字串?
  3. ===有何不同?
  4. andor何時會得到True
  5. //%如何用在分箱問題?
  6. 為什麼模擬計算結果不能直接當成USR正式績效?

十三、AI協作提示詞

請擔任Python初學者助教。
我要用地方農漁資料練習int、float、str、bool、變數與運算子。
請先問我有哪些資料欄位、單位及一組示範數值,
再協助判斷每個欄位適合的資料型別。

程式只能使用變數、input、print、type、型別轉換、
算術運算子、比較運算子、邏輯運算子與f-string,
不要使用if、for、while、函式或類別。
請清楚區分教學門檻、模擬結果與真實場域標準。

十四、本篇小結

資料型別決定資料能做什麼,變數讓資料有清楚名稱,運算子則把原始數據轉化成計算結果與布林判斷。當學生能正確描述一筆水溫、一個設備狀態與一次用電估算,就已踏出理解智慧養殖資料的第一步。

資料不是只有數字;先理解資料的意義,才能用Python做出負責任的場域判讀。
系列:《Python一下:從風土資料到智慧生活的程式設計》
上一篇:《讓水井三寶開口說話——input、print與型別轉換》
下一篇:《水井村農漁產資料該用List、Tuple、Dict還是Set?》
教學定位:國立虎尾科技大學USR × 智慧養殖 × 資料素養 × 社會實踐

沒有留言:

張貼留言