2025年9月30日 星期二

[水井USR創新教材]Python一下智慧減碳節水三生一體-類別

 2025年9月28尚虎雲在雲林官邸兒童館發表尚虎雲產銷平台。



以下程式是由ChatGPT產生。

範例一:魚菜共生模擬器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import math
import random
import logging
import functools

# 設定日誌
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')

class AquaponicsSimulator:
    """
    魚菜共生系統模擬器:模擬每月減碳與節水量。
    """

    def __init__(self, months, area=3.3058, base_emission=1.5, base_water=0.5):
        """
        初始化模擬器。
        參數:
            months: 模擬月數
            area: 魚池面積(平方米)
            base_emission: 每平方米年排放量(kg CO₂e)
            base_water: 每平方米月用水量(m³)
        """
        self.months = months
        self.area = area
        self.base_emission = base_emission
        self.base_water = base_water
        self.tech_carbon_reduction = 0.95  # 魚菜共生減碳效果(減少 5%)
        self.tech_water_saving = 0.9       # 魚菜共生節水效果(減少 10%)
        self.results = []                  # 儲存每月模擬結果

    def _simulate_month(self, current_month):
        """
        模擬單一月份的減碳與節水量。
        """
        # 季節性波動:夏季(6-8 月)增加 20%
        seasonal_factor = 1.2 if 6 <= (current_month % 12 or 12) <= 8 else 1.0
        monthly_emission = self.base_emission / 12

        carbon = (monthly_emission * self.area * seasonal_factor * self.tech_carbon_reduction +
                  random.uniform(-5, 5))
        water = (self.base_water * self.area * seasonal_factor * self.tech_water_saving +
                 random.uniform(-0.05, 0.05))

        # 驗證非負
        carbon = max(0, round(carbon, 2))
        water = max(0, round(water, 2))

        # 記錄日誌
        logging.info(f"Month {current_month}: Carbon = {carbon} kg CO₂e, Water = {water} m³")

        return carbon, water

    def _recursive_simulation(self, current_month=1):
        """
        遞迴模擬每月資料。
        """
        if current_month > self.months:
            return

        # 計算當月數據
        carbon, water = self._simulate_month(current_month)
        self.results.append((carbon, water))

        # 遞迴下一月
        self._recursive_simulation(current_month + 1)

    def run(self):
        """
        執行模擬並返回所有月份的結果。
        """
        self.results.clear()  # 清空舊資料
        self._recursive_simulation(1)
        return self.results

# === 測試使用 ===
if __name__ == "__main__":
    simulator = AquaponicsSimulator(months=12)
    monthly_data = simulator.run()

    print("水井村魚菜共生每月減碳與節水數據:")
    for i, (carbon, water) in enumerate(monthly_data, 1):
        print(f"第 {i} 月 - 減碳量: {carbon} kg CO₂e, 節水量: {water} m³")


範例二:水井三寶

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 定義一個基礎寶物類別
class Treasure:
    def __init__(self, name, meaning, age):
        self.name = name
        self.meaning = meaning
        self.age = age

    def describe(self):
        return f"{self.name}:象徵 {self.meaning},已有 {self.age} 年歷史。"

    def __str__(self):
        return self.describe()

# 三寶:烏龜、白馬、番花

class Turtle(Treasure):
    def __init__(self):
        super().__init__("烏龜", "風水與守護", 300)

class WhiteHorse(Treasure):
    def __init__(self):
        super().__init__("白馬", "信仰與傳說", 150)

class Frangipani(Treasure):  # 雞蛋花的英文名稱
    def __init__(self):
        super().__init__("番花", "歷史與生命", 300)

# 建立物件
turtle = Turtle()
horse = WhiteHorse()
flower = Frangipani()

# 顯示介紹(透過 print(object) 直接呼叫 __str__)
print(turtle)
print(horse)
print(flower)

執行結果:
烏龜:象徵 風水與守護,已有 300 年歷史。
白馬:象徵 信仰與傳說,已有 150 年歷史。
番花:象徵 歷史與生命,已有 300 年歷史。

註:這些歷史時間只是ChatGPT對程式的預設值,需要再考證。

2025年9月27日 星期六

[水井USR創新教材]Python一下採用魚菜共生技術-函式

 


過去實作的魚菜共生技術:

以下範例是使用Grok AI產生:

範例一:函式使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import math
import random

def aquaponics_simulation(months, area=3.3058, base_emission=1.5, base_water=0.5):
    """
    模擬魚菜共生系統的減碳與節水數據(每月)。
    參數:
        months: 模擬月數
        area: 魚池面積(平方米,預設 1 分 ≈ 3.3058 m²)
        base_emission: 每平方米年排放量(kg CO₂e,轉為月均)
        base_water: 每平方米月用水量(m³)
    返回:
        生成器,產生 (減碳量, 節水量) 元組
    """
    tech_carbon_reduction = 0.85  # 魚菜共生減碳效果(減少 15%)
    tech_water_saving = 0.9       # 魚菜共生節水效果(減少 10%)
    monthly_emission = base_emission / 12  # 月均排放量
    
    for month in range(1, months + 1):
        # 季節性波動:夏季(6-8 月)增加 20%
        seasonal_factor = 1.2 if 6 <= (month % 12 or 12) <= 8 else 1.0
        # 計算減碳量(kg CO₂e)
        carbon = (monthly_emission * area * seasonal_factor * tech_carbon_reduction +
                  random.uniform(-5, 5))
        # 計算節水量(m³)
        water = (base_water * area * seasonal_factor * tech_water_saving +
                 random.uniform(-0.05, 0.05))
        yield round(carbon, 2), round(water, 2)

# 模擬 12 個月數據
simulator = aquaponics_simulation(12)
monthly_data = [(carbon, water) for carbon, water in simulator]  # 串列生成式收集數據

# 輸出結果
print("水井村魚菜共生每月減碳與節水數據:")
for i, (carbon, water) in enumerate(monthly_data, 1):
    print(f"第 {i} 月 - 減碳量: {carbon} kg CO₂e, 節水量: {water} m³")

執行結果:
水井村魚菜共生每月減碳與節水數據:
第 1 月 - 減碳量: 4.61 kg CO₂e, 節水量: 1.45 m³
第 2 月 - 減碳量: 2.21 kg CO₂e, 節水量: 1.51 m³
第 3 月 - 減碳量: 1.12 kg CO₂e, 節水量: 1.48 m³
第 4 月 - 減碳量: -0.71 kg CO₂e, 節水量: 1.5 m³
第 5 月 - 減碳量: 5.21 kg CO₂e, 節水量: 1.45 m³
第 6 月 - 減碳量: -1.18 kg CO₂e, 節水量: 1.74 m³
第 7 月 - 減碳量: 5.01 kg CO₂e, 節水量: 1.8 m³
第 8 月 - 減碳量: 4.25 kg CO₂e, 節水量: 1.76 m³
第 9 月 - 減碳量: 2.44 kg CO₂e, 節水量: 1.46 m³
第 10 月 - 減碳量: 2.55 kg CO₂e, 節水量: 1.45 m³
第 11 月 - 減碳量: 3.25 kg CO₂e, 節水量: 1.45 m³
第 12 月 - 減碳量: -3.3 kg CO₂e, 節水量: 1.47 m³

範例二:採用遞迴
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import math
import random

def aquaponics_recursive(months, current_month=1, area=3.3058, base_emission=1.5, base_water=0.5):
    """
    遞迴函式:模擬魚菜共生系統的減碳與節水數據(每月)。
    參數:
        months: 總模擬月數
        current_month: 當前月份(遞迴追蹤)
        area: 魚池面積(平方米,預設 1 分 ≈ 3.3058 m²)
        base_emission: 每平方米年排放量(kg CO₂e,轉為月均)
        base_water: 每平方米月用水量(m³)
    返回:
        生成器,產生 (減碳量, 節水量) 元組
    """
    if current_month > months:
        return  # 遞迴終止條件:超過指定月份

    # 季節性波動:夏季(6-8 月)增加 20%
    seasonal_factor = 1.2 if 6 <= (current_month % 12 or 12) <= 8 else 1.0
    tech_carbon_reduction = 0.95  # 魚菜共生減碳效果(減少 5%)
    tech_water_saving = 0.9       # 魚菜共生節水效果(減少 10%)
    monthly_emission = base_emission / 12  # 月均排放量

    # 計算當月減碳量(kg CO₂e)與節水量(m³)
    carbon = (monthly_emission * area * seasonal_factor * tech_carbon_reduction +
              random.uniform(-5, 5))
    water = (base_water * area * seasonal_factor * tech_water_saving +
             random.uniform(-0.05, 0.05))

    # 產生當前月份數據
    yield round(carbon, 2), round(water, 2)

    # 遞迴呼叫下一月份
    yield from aquaponics_recursive(months, current_month + 1, area, base_emission, base_water)

# 模擬 12 個月數據
simulator = aquaponics_recursive(12)
monthly_data = [(carbon, water) for carbon, water in simulator]  # 串列生成式收集數據

# 輸出結果
print("水井村魚菜共生每月減碳與節水數據:")
for i, (carbon, water) in enumerate(monthly_data, 1):
    print(f"第 {i} 月 - 減碳量: {carbon} kg CO₂e, 節水量: {water} m³")

執行結果:
水井村魚菜共生每月減碳與節水數據:
第 1 月 - 減碳量: -0.09 kg CO₂e, 節水量: 1.53 m³
第 2 月 - 減碳量: -3.0 kg CO₂e, 節水量: 1.48 m³
第 3 月 - 減碳量: 2.79 kg CO₂e, 節水量: 1.5 m³
第 4 月 - 減碳量: 0.02 kg CO₂e, 節水量: 1.49 m³
第 5 月 - 減碳量: 3.88 kg CO₂e, 節水量: 1.5 m³
第 6 月 - 減碳量: -2.87 kg CO₂e, 節水量: 1.8 m³
第 7 月 - 減碳量: 3.24 kg CO₂e, 節水量: 1.75 m³
第 8 月 - 減碳量: -0.6 kg CO₂e, 節水量: 1.75 m³
第 9 月 - 減碳量: -2.14 kg CO₂e, 節水量: 1.44 m³
第 10 月 - 減碳量: -1.64 kg CO₂e, 節水量: 1.45 m³
第 11 月 - 減碳量: 4.4 kg CO₂e, 節水量: 1.52 m³
第 12 月 - 減碳量: 1.04 kg CO₂e, 節水量: 1.51 m³

範例三:採用裝飾器
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import math
import random
import functools
import logging

# 設定日誌
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')

def log_and_validate(func):
    """
    裝飾器:記錄模擬數據並驗證非負值。
    """
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        for carbon, water in func(*args, **kwargs):
            # 驗證數據:確保減碳量和節水量不為負
            carbon = max(0, carbon)
            water = max(0, water)
            # 記錄日誌
            logging.info(f"Month {kwargs.get('current_month', 1)}: Carbon = {carbon} kg CO₂e, Water = {water} m³")
            yield carbon, water
    return wrapper

@log_and_validate
def aquaponics_recursive(months, current_month=1, area=3.3058, base_emission=1.5, base_water=0.5):
    """
    遞迴函式:模擬魚菜共生系統的減碳與節水數據(每月)。
    參數:
        months: 總模擬月數
        current_month: 當前月份(遞迴追蹤)
        area: 魚池面積(平方米,預設 1 分 ≈ 3.3058 m²)
        base_emission: 每平方米年排放量(kg CO₂e,轉為月均)
        base_water: 每平方米月用水量(m³)
    返回:
        生成器,產生 (減碳量, 節水量) 元組
    """
    if current_month > months:
        return  # 遞迴終止條件:超過指定月份

    # 季節性波動:夏季(6-8 月)增加 20%
    seasonal_factor = 1.2 if 6 <= (current_month % 12 or 12) <= 8 else 1.0
    tech_carbon_reduction = 0.95  # 魚菜共生減碳效果(減少 5%)
    tech_water_saving = 0.9       # 魚菜共生節水效果(減少 10%)
    monthly_emission = base_emission / 12  # 月均排放量

    # 計算當月減碳量(kg CO₂e)與節水量(m³)
    carbon = (monthly_emission * area * seasonal_factor * tech_carbon_reduction +
              random.uniform(-5, 5))
    water = (base_water * area * seasonal_factor * tech_water_saving +
             random.uniform(-0.05, 0.05))

    # 產生當前月份數據
    yield round(carbon, 2), round(water, 2)

    # 遞迴呼叫下一月份
    yield from aquaponics_recursive(months, current_month + 1, area, base_emission, base_water)

# 模擬 12 個月數據
simulator = aquaponics_recursive(12)
monthly_data = [(carbon, water) for carbon, water in simulator]  # 串列生成式收集數據

# 輸出結果
print("水井村魚菜共生每月減碳與節水數據:")
for i, (carbon, water) in enumerate(monthly_data, 1):
    print(f"第 {i} 月 - 減碳量: {carbon} kg CO₂e, 節水量: {water} m³")

執行結果:
2025-09-27 20:49:40,437 - Month 1: Carbon = 3.41 kg CO₂e, Water = 1.44 m³
2025-09-27 20:49:40,449 - Month 1: Carbon = 0 kg CO₂e, Water = 1.5 m³
2025-09-27 20:49:40,453 - Month 1: Carbon = 0 kg CO₂e, Water = 1.5 m³
2025-09-27 20:49:40,459 - Month 1: Carbon = 4.2 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,465 - Month 1: Carbon = 4.2 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,470 - Month 1: Carbon = 4.2 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,476 - Month 1: Carbon = 4.37 kg CO₂e, Water = 1.5 m³
2025-09-27 20:49:40,482 - Month 1: Carbon = 4.37 kg CO₂e, Water = 1.5 m³
2025-09-27 20:49:40,488 - Month 1: Carbon = 4.37 kg CO₂e, Water = 1.5 m³
2025-09-27 20:49:40,492 - Month 1: Carbon = 4.37 kg CO₂e, Water = 1.5 m³
2025-09-27 20:49:40,498 - Month 1: Carbon = 0 kg CO₂e, Water = 1.51 m³
2025-09-27 20:49:40,503 - Month 1: Carbon = 0 kg CO₂e, Water = 1.51 m³
2025-09-27 20:49:40,509 - Month 1: Carbon = 0 kg CO₂e, Water = 1.51 m³
2025-09-27 20:49:40,519 - Month 1: Carbon = 0 kg CO₂e, Water = 1.51 m³
2025-09-27 20:49:40,524 - Month 1: Carbon = 0 kg CO₂e, Water = 1.51 m³
2025-09-27 20:49:40,531 - Month 1: Carbon = 0 kg CO₂e, Water = 1.82 m³
2025-09-27 20:49:40,537 - Month 1: Carbon = 0 kg CO₂e, Water = 1.82 m³
2025-09-27 20:49:40,542 - Month 1: Carbon = 0 kg CO₂e, Water = 1.82 m³
2025-09-27 20:49:40,547 - Month 1: Carbon = 0 kg CO₂e, Water = 1.82 m³
2025-09-27 20:49:40,553 - Month 1: Carbon = 0 kg CO₂e, Water = 1.82 m³
2025-09-27 20:49:40,559 - Month 1: Carbon = 0 kg CO₂e, Water = 1.82 m³
2025-09-27 20:49:40,565 - Month 1: Carbon = 0 kg CO₂e, Water = 1.79 m³
2025-09-27 20:49:40,570 - Month 1: Carbon = 0 kg CO₂e, Water = 1.79 m³
2025-09-27 20:49:40,575 - Month 1: Carbon = 0 kg CO₂e, Water = 1.79 m³
2025-09-27 20:49:40,581 - Month 1: Carbon = 0 kg CO₂e, Water = 1.79 m³
2025-09-27 20:49:40,586 - Month 1: Carbon = 0 kg CO₂e, Water = 1.79 m³
2025-09-27 20:49:40,593 - Month 1: Carbon = 0 kg CO₂e, Water = 1.79 m³
2025-09-27 20:49:40,599 - Month 1: Carbon = 0 kg CO₂e, Water = 1.79 m³
2025-09-27 20:49:40,604 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,610 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,618 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,624 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,632 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,638 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,642 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,649 - Month 1: Carbon = 0.01 kg CO₂e, Water = 1.77 m³
2025-09-27 20:49:40,654 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,659 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,665 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,671 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,677 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,682 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,688 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,694 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,699 - Month 1: Carbon = 4.98 kg CO₂e, Water = 1.46 m³
2025-09-27 20:49:40,704 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,710 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,715 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,720 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,726 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,732 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,737 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,743 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,749 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,753 - Month 1: Carbon = 0 kg CO₂e, Water = 1.48 m³
2025-09-27 20:49:40,759 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,764 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,770 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,776 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,781 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,787 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,792 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,798 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,803 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,808 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,814 - Month 1: Carbon = 0 kg CO₂e, Water = 1.52 m³
2025-09-27 20:49:40,819 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,824 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,830 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,837 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,841 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,847 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,852 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,858 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,863 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,868 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,874 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
2025-09-27 20:49:40,880 - Month 1: Carbon = 0.84 kg CO₂e, Water = 1.53 m³
水井村魚菜共生每月減碳與節水數據:
第 1 月 - 減碳量: 3.41 kg CO₂e, 節水量: 1.44 m³
第 2 月 - 減碳量: 0 kg CO₂e, 節水量: 1.5 m³
第 3 月 - 減碳量: 4.2 kg CO₂e, 節水量: 1.46 m³
第 4 月 - 減碳量: 4.37 kg CO₂e, 節水量: 1.5 m³
第 5 月 - 減碳量: 0 kg CO₂e, 節水量: 1.51 m³
第 6 月 - 減碳量: 0 kg CO₂e, 節水量: 1.82 m³
第 7 月 - 減碳量: 0 kg CO₂e, 節水量: 1.79 m³
第 8 月 - 減碳量: 0.01 kg CO₂e, 節水量: 1.77 m³
第 9 月 - 減碳量: 4.98 kg CO₂e, 節水量: 1.46 m³
第 10 月 - 減碳量: 0 kg CO₂e, 節水量: 1.48 m³
第 11 月 - 減碳量: 0 kg CO₂e, 節水量: 1.52 m³
第 12 月 - 減碳量: 0.84 kg CO₂e, 節水量: 1.53 m³



[水井USR創新教材]Python一下模擬智慧減碳-生成式與產生器



水井村智慧減碳節水三生一體實踐計畫有一個很重要的KPI,就是要減碳5%, 本篇我們就先來用模擬的方式來看減碳5%對於場域的的影響,我們也考慮確保 6-8 月排放增加,模擬夏季高耗能情境,例如:6 <= (month % 12 or 12) <= 8。

範例一:生成式

1
2
month=[f"第{i}月" for i in range(1, 13)]
print(month)

執行結果:
['第1月', '第2月', '第3月', '第4月', '第5月', '第6月', '第7月', '第8月', '第9月', '第10月', '第11月', '第12月']

範例二:含有判斷式的生成式

1
2
3
4
5
import random
base_emission = 100  # 基準碳排放量(噸)
tech_impact = 0.95   # 技術介入的減碳效果(每月減少5%)
impact=[round(base_emission * ((1.2 if 6 <= (month % 12 or 12) <= 8 else 1.0)) * (tech_impact ** month)+random.uniform(-5, 5), 2) for month in range(1, 12 + 1)]
print(impact)
執行結果:
[96.57, 87.64, 83.33, 80.68, 73.26, 90.74, 83.72, 84.43, 65.35, 63.81, 56.53, 50.54]

範例三:把範例一和二合成字典

1
2
3
4
5
6
7
import random
month=[f"第{i}月" for i in range(1, 13)]
base_emission = 100  # 基準碳排放量(噸)
tech_impact = 0.95   # 技術介入的減碳效果(每月減少5%)
impact=[round(base_emission * ((1.2 if 6 <= (month % 12 or 12) <= 8 else 1.0)) * (tech_impact ** month)+random.uniform(-5, 5), 2) for month in range(1, 12 + 1)]
month_impact=dict(zip(month,impact))
print(month_impact)
執行結果:
{'第1月': 97.5, '第2月': 87.14, '第3月': 85.1, '第4月': 86.0, '第5月': 76.31, '第6月': 86.06, '第7月': 80.19, '第8月': 82.19, '第9月': 64.37, '第10月': 55.71, '第11月': 54.77, '第12月': 50.24}
 
範例四:字典生成式
1
2
3
4
5
import random
base_emission = 100  # 基準碳排放量(噸)
tech_impact = 0.95   # 技術介入的減碳效果(每月減少5%)
month_impact={f"第{month}月":round(base_emission * ((1.2 if 6 <= (month % 12 or 12) <= 8 else 1.0)) * (tech_impact ** month)+random.uniform(-5, 5), 2) for month in range(1, 12 + 1)}
print(month_impact)
執行結果:
{'第1月': 94.96, '第2月': 87.65, '第3月': 90.21, '第4月': 78.92, '第5月': 75.33, '第6月': 90.81, '第7月': 84.18, '第8月': 75.96, '第9月': 60.68, '第10月': 60.1, '第11月': 61.06, '第12月': 50.56}

範例五:產生器 
1
2
3
4
5
6
7
import random
base_emission = 100  # 基準碳排放量(噸)
tech_impact = 0.95   # 技術介入的減碳效果(每月減少5%)
impact=(round(base_emission * ((1.2 if 6 <= (month % 12 or 12) <= 8 else 1.0)) * (tech_impact ** month)+random.uniform(-5, 5), 2) for month in range(1, 12 + 1))
for month, value in enumerate(impact):
    month=month+1
    print(f"第{month}月碳排為{value}噸")

執行結果:
第1月碳排為92.95噸
第2月碳排為90.24噸
第3月碳排為89.17噸
第4月碳排為77.57噸
第5月碳排為80.54噸
第6月碳排為90.5噸
第7月碳排為84.88噸
第8月碳排為75.62噸
第9月碳排為61.72噸
第10月碳排為57.54噸
第11月碳排為58.99噸
第12月碳排為58.33噸

範例六:產生器只會出現過一次,使用2次迴圈,也只會在第一次時才有值
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import random
base_emission = 100  # 基準碳排放量(噸)
tech_impact = 0.95   # 技術介入的減碳效果(每月減少5%)
impact=(round(base_emission * ((1.2 if 6 <= (month % 12 or 12) <= 8 else 1.0)) * (tech_impact ** month)+random.uniform(-5, 5), 2) for month in range(1, 12 + 1))
for month, value in enumerate(impact):
    month=month+1
    print(f"第{month}月碳排為{value}噸")
for month, value in enumerate(impact):
    month=month+1
    print(f"第{month}月碳排為{value}噸")

執行結果:
第1月碳排為93.49噸
第2月碳排為89.92噸
第3月碳排為87.4噸
第4月碳排為84.28噸
第5月碳排為73.18噸
第6月碳排為92.6噸
第7月碳排為79.19噸
第8月碳排為78.11噸
第9月碳排為67.45噸
第10月碳排為58.03噸
第11月碳排為54.94噸
第12月碳排為49.71噸

[水井USR創新教材]Python一下水井村村民與大學教授實務交流-迴圈結構

 

114年7月22日,國立虎尾科技大學電機資訊學院許永和院長率領萌芽型大學社會責任實踐計畫-「智慧減碳節水三生一體社會實踐計畫」生產、生態、和生活等子計畫以及各執行方案主持人,前往雲林縣口湖鄉水井村進行一場水井村村民與大學教授實務交流。此次活動以SIG(Special Interest Group)形式展開,結合在地魚塭業者的養殖智慧與科研團隊的科技創新,共同探索低碳智慧養殖與永續生態之跨域協作的可能性。

相關報導:水井村村民與大學教授實務交流

範例一:使用for

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
主持團隊=["許永和","張耀南","林正敏","莊文河", "郭永明","吳添全", "陳鳳雀"]
助理=["陳靜美"]
村民=["林文欽", "林水欽", "葉坤生"]
print("水井村村民與大學教授實務交流參與人士如下:")      
for villager in 村民:
    print(villager)
for 主持人 in 主持團隊:
    print(主持人)
for assistant in 助理:
    print(assistant)

執行結果:
水井村村民與大學教授實務交流參與人士如下:
林文欽
林水欽
葉坤生
許永和
張耀南
林正敏
莊文河
郭永明
吳添全
陳鳳雀
陳靜美

範例二:使用while

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
主持團隊 = ["許永和", "張耀南", "林正敏", "莊文河", "郭永明", "吳添全", "陳鳳雀"]
助理 = ["陳靜美"]
村民 = ["林文欽", "林水欽", "葉坤生"]
print("水井村村民與大學教授實務交流參與人士如下:")
i = 0
while i < len(村民):
    print(村民[i])
    i += 1
j = 0
while j < len(主持團隊):
    print(主持團隊[j])
    j += 1
k = 0
while k < len(助理):
    print(助理[k])
    k += 1

執行結果:
水井村村民與大學教授實務交流參與人士如下:
林文欽
林水欽
葉坤生
許永和
張耀南
林正敏
莊文河
郭永明
吳添全
陳鳳雀
陳靜美

範例三:巢狀結構

1
2
3
4
5
6
7
8
主持團隊=["許永和","張耀南","林正敏","莊文河", "郭永明","吳添全", "陳鳳雀"]
助理=["陳靜美"]
村民=["林文欽", "林水欽", "葉坤生"]
參與人士={"主持團隊":主持團隊, "助理":助理, "村民":村民}
print("水井村村民與大學教授實務交流參與人士如下:")      
for key, value in 參與人士.items():
    for item in value:
        print(item)

執行結果:
水井村村民與大學教授實務交流參與人士如下:
許永和
張耀南
林正敏
莊文河
郭永明
吳添全
陳鳳雀
陳靜美
林文欽
林水欽
葉坤生

[水井USR創新教材]Python一下不蒜花點亮水井村永續工藝-選擇結構if

 

國立虎尾科技大學「水井村智慧減碳節水三生一體社會實踐計畫」團隊2025/4/22(二)於雲林口湖鄉水井社區舉辦「農廢蒜糢新花漾」活動,與在地家政班媽媽及新住民媽媽們攜手推動「不蒜花」母親節花藝活動。這場活動背後的推手是該計畫C.1社會實踐課群以及C.2永續工藝產品兩個行動方案的主持人陳鳳雀助理教授,她是通識教育中心老師,同時也是永續發展暨社會責任處在地關懷學習組組長。
相關報導:

範例一:單向選擇結構

1
2
3
永續工藝="不蒜花"
if 永續工藝=="不蒜花":
    print("團隊2025/4/22(二)於雲林口湖鄉水井社區舉辦「農廢蒜糢新花漾」活動。")

執行結果:
團隊2025/4/22(二)於雲林口湖鄉水井社區舉辦「農廢蒜糢新花漾」活動。

範例二:雙向結構

1
2
3
4
5
永續工藝="不蒜花"
if 永續工藝=="不蒜花":
    print("由蒜頭膜設計而成的不蒜花")
else:
    print("由種子和玉米籜設計而成的水井三寶")

執行結果:
由蒜頭膜設計而成的不蒜花

範例三:多向選擇結構

1
2
3
4
5
6
7
8
永續工藝=input("您想知道水井村USR在永續工藝上那些?")

if 永續工藝=="不蒜花":
    print("由蒜頭膜設計而成的不蒜花")
elif 永續工藝=="水井三寶":
    print("由種子和玉米籜設計而成的水井三寶")
else:
    print("虎科大USR團隊在永續工藝協助水井村協助製作兩項永續工藝有不蒜花和水井三寶")

執行結果:
您想知道水井村USR在永續工藝上那些?不清楚
虎科大USR團隊在永續工藝協助水井村協助製作兩項永續工藝有不蒜花和水井三寶

2025年9月21日 星期日

[水井USR創新教材]Python一下水井村村民主要生產事業-dict



水井村生產食物有:

農業:稻米、地瓜、番茄、香瓜

漁業:文蛤、白蝦、龍膽石斑、吳郭魚、虱目魚、龍鬚菜

畜牧業:猪

以上資料是經由訪談,由水井社區發展協會提供

字典的觀念和集合很像,但以鍵查值來存取字典內的元素內容,因此字典內元素以 鍵:值 的形態,存在字典中,在字典內的每個元素的 鍵 不可以重複,但 值 可以。

範例一:用字典來儲存水井村的農漁畜牧業

水井村={"農業":["稻米","地瓜","番茄","香瓜","龍鬚菜"],

     "漁業":["文蛤", "白蝦","龍膽石斑","吳郭魚","虱目魚","龍鬚菜"],

     "畜牧業":["猪"]}

print("在水井村有那農產品",水井村["農業"])

執行結果:

在水井村有那農產品 ['稻米', '地瓜', '番茄', '香瓜', '龍鬚菜']


範例二:判斷元素是否存在字典中

水井村={"農業":["稻米","地瓜","番茄","香瓜","龍鬚菜"],

     "漁業":["文蛤", "白蝦","龍膽石斑","吳郭魚","虱目魚","龍鬚菜"],

     "畜牧業":["猪"]}

print("玉米是水井村的農產品嗎","玉米" in 水井村["農業"])

print("文蛤是水井村的漁產品嗎","文蛤" in 水井村["漁業"])

執行結果:

玉米是水井村的農產品嗎 False

文蛤是水井村的漁產品嗎 True


範例三:刪除字典中的元素以及加入新元素

水井村={"農業":["稻米","地瓜","番茄","香瓜","龍鬚菜"],

     "漁業":["文蛤", "白蝦","龍膽石斑","吳郭魚","虱目魚","龍鬚菜"],

     "畜牧業":["猪"]}

print("水井村的生產事業有",水井村)

del 水井村["畜牧業"]

print("水井村的生產事業有",水井村)

水井村["農業"]="玉米"

print("水井村的生產事業有",水井村)

執行結果:

水井村的生產事業有 {'農業': ['稻米', '地瓜', '番茄', '香瓜', '龍鬚菜'], '漁業': ['文蛤', '白蝦', '龍膽石斑', '吳郭魚', '虱目魚', '龍鬚菜'], '畜牧業': ['猪']}

水井村的生產事業有 {'農業': ['稻米', '地瓜', '番茄', '香瓜', '龍鬚菜'], '漁業': ['文蛤', '白蝦', '龍膽石斑', '吳郭魚', '虱目魚', '龍鬚菜']}

水井村的生產事業有 {'農業': '玉米', '漁業': ['文蛤', '白蝦', '龍膽石斑', '吳郭魚', '虱目魚', '龍鬚菜']}

[水井USR創新教材]Python一下水井村的農漁畜業-set



水井村生產食物有:

農業:稻米、地瓜、番茄、香瓜

漁業:文蛤、白蝦、龍膽石斑、吳郭魚、虱目魚、龍鬚菜

畜牧業:猪

以上資料是經由訪談,由水井社區發展協會提供

集合中元素具備沒有順序的特性,因此無法像串列(List)一樣可以用索引算符或切片方式來存取,當然不能使用串接算符+和重複算符*,集合常用的算符是in和not in,用來判斷元素是否在集合中。

範例一:集合會過濾掉重複的元素

漁溫={"文蛤","白蝦","龍膽石斑", "白蝦","龍膽石斑","吳郭魚", "虱目魚"}

print("漁溫養殖的魚蝦類有", 漁溫)

執行結果:

漁溫養殖的魚蝦類有 {'白蝦', '龍膽石斑', '文蛤', '吳郭魚', '虱目魚'}

範例二:把字串變成集合,單字變成集合內的元素,重複的單字也不見了,而且集合是沒有次序

漁溫=set("漁業:文蛤、白蝦、龍膽石斑、吳郭魚、虱目魚、龍鬚菜")

print("水井養殖的魚蝦的單字有", 漁溫)

執行結果:

水井養殖的魚蝦的單字有 {'業', '虱', '石', '菜', '、', ':', '膽', '魚', '吳', '鬚', '蛤', '郭', '漁', '文', '白', '龍', '斑', '蝦', '目'}

範例三:判斷是否為集合的元素

農業={"稻米","地瓜","番茄","香瓜"}

漁業={"文蛤", "白蝦","龍膽石斑","吳郭魚","虱目魚","龍鬚菜"}

畜牧業={"猪"}

print("文蛤是農業","文蛤"in 農業)

print("文蛤是漁業", "文蛤" in 漁業)

print("文蛤是畜牧業", "文蛤"in 畜牧業)

執行結果:

文蛤是農業 False

文蛤是漁業 True

文蛤是畜牧業 False

範例四:集合的聯集

農業={"稻米","地瓜","番茄","香瓜"}

漁業={"文蛤", "白蝦","龍膽石斑","吳郭魚","虱目魚","龍鬚菜"}

畜牧業={"猪"}

print("水井村的農漁畜業",農業|漁業|畜牧業)

執行結果:

水井村的農漁畜業 {'香瓜', '文蛤', '猪', '龍鬚菜', '虱目魚', '番茄', '白蝦', '地瓜', '龍膽石斑', '吳郭魚', '稻米'}

範例四:集合的交集

農業={"稻米","地瓜","番茄","香瓜","龍鬚菜"}

漁業={"文蛤", "白蝦","龍膽石斑","吳郭魚","虱目魚","龍鬚菜"}

畜牧業={"猪"}

print("在水井村有什麼特產是植物但又養在漁溫中",農業&漁業)

執行結果:

在水井村有什麼特產是植物但又養在漁溫中 {'龍鬚菜'}