用文蛤養殖數據學會資料型別、變數與運算子
《從風土資料到智慧生活的程式設計》——把水溫、鹽度、溶氧與用電量,轉化成Python看得懂的資料。
- 認識
int、float、str與bool四種基本資料型別。 - 理解變數命名、指定與重新指定。
- 使用算術、比較、邏輯及指定運算子。
- 分辨「計算結果」與「判斷結果」。
- 完成一份文蛤養殖數據摘要程式。
一、真實場域中的資料不只一種
智慧養殖系統會接收許多不同資料:文蛤數量可能是整數,水溫與溶氧常帶有小數,養殖池名稱是文字,設備是否運轉則只有「是」或「否」。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))True與False的第一個字母要大寫,而且不能加引號。"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_temperature | 1temperature |
| 名稱表達資料意義 | dissolved_oxygen | x |
| 多個英文單字用底線分隔 | daily_energy | dailyenergy |
| 避免Python保留字 | pond_name | class |
| 大小寫要一致 | salinity | Salinity與salinity混用 |
四、算術運算子:把數據轉成資訊
| 運算子 | 功能 | 範例 |
|---|---|---|
+ | 加法 | 總數、增加量 |
- | 減法 | 差值、節省量 |
* | 乘法 | 功率×時間 |
/ | 除法,結果通常為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)=是指定值,==才是比較是否相等。六、邏輯運算子:組合多個條件
| 運算子 | 意義 | 結果為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)此處先觀察邏輯運算產生的True或False;如何根據結果執行不同指令,會在後續「選擇結構」學習。
七、指定運算子:更新累積資料
| 寫法 | 等同 | 用途 |
|---|---|---|
x += 1 | x = x + 1 | 累加數量 |
x -= 1 | x = x - 1 | 扣除數量 |
x *= 2 | x = x * 2 | 倍增 |
x /= 2 | x = 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}")十、常見錯誤
| 問題 | 原因 | 修正 |
|---|---|---|
"28.5" + 1失敗 | 字串不能直接和整數相加 | 先用float()轉換 |
True寫成true | Python區分大小寫 | 使用True或False |
判斷相等寫成= | 指定與比較混淆 | 改成== |
| 小數計算出現很長尾數 | 浮點數以二進位近似表示 | 顯示時用格式化;財務資料採Decimal |
| 變數突然變成其他型別 | Python允許重新指定不同型別 | 維持清楚命名,必要時用type()檢查 |
十一、漸進式練習
基礎:四種型別盤點
為「養殖池編號、文蛤數量、水溫、設備啟動狀態」選擇適合型別,建立變數並用type()驗證。
進階:平均水溫
morning = 27.2
noon = 29.1
evening = 28.0
average = (morning + noon + evening) / 3
print(f"平均水溫:{average:.1f}°C")USR挑戰:節能前後比較
輸入改善前與改善後的設備功率、每日運轉時數,計算每日用電量、節省量與節省百分比;在輸出中特別標示這是「依輸入條件估算」,而非直接宣稱場域成果。
十二、學習檢核
28、28.0、"28"分別是哪一種型別?- 為何感測器編號
001適合存成字串? =和==有何不同?and與or何時會得到True?//和%如何用在分箱問題?- 為什麼模擬計算結果不能直接當成USR正式績效?
十三、AI協作提示詞
請擔任Python初學者助教。
我要用地方農漁資料練習int、float、str、bool、變數與運算子。
請先問我有哪些資料欄位、單位及一組示範數值,
再協助判斷每個欄位適合的資料型別。
程式只能使用變數、input、print、type、型別轉換、
算術運算子、比較運算子、邏輯運算子與f-string,
不要使用if、for、while、函式或類別。
請清楚區分教學門檻、模擬結果與真實場域標準。十四、本篇小結
資料型別決定資料能做什麼,變數讓資料有清楚名稱,運算子則把原始數據轉化成計算結果與布林判斷。當學生能正確描述一筆水溫、一個設備狀態與一次用電估算,就已踏出理解智慧養殖資料的第一步。
資料不是只有數字;先理解資料的意義,才能用Python做出負責任的場域判讀。
沒有留言:
張貼留言