< All Topics
Print

【研習】MPY x LLM

研習調查暨意見回饋:


研習資料下載:


綜合練習一、輸入出、函數、迴圈

import math

# 函數定義
def calculate_circumference(radius):
    """計算圓周長"""
    return 2 * math.pi * radius

def calculate_area(radius):
    """計算圓面積"""
    return math.pi * (radius ** 2)

# 主程式
while True:
    # 接收使用者輸入
    choice = input("請選擇計算項目(1: 圓周長, 2: 圓面積, q: 離開程式):")
    
    if choice == 'q':
        print("程式結束")
        break
    elif choice not in ['1', '2']:
        print("無效選項,請重新輸入")
        continue
    
    # 輸入半徑
    try:
        radius = float(input("請輸入圓的半徑:"))
    except ValueError:
        print("請輸入有效的數值!")
        continue
    
    # 執行對應的計算
    if choice == '1':
        circumference = calculate_circumference(radius)
        print(f"圓周長為:{circumference:.2f}")
    elif choice == '2':
        area = calculate_area(radius)
        print(f"圓面積為:{area:.2f}")

綜合練習二、值日生排班表

import random

# 建立座號名單
seat_numbers = list(range(1, 21))

# 排除座號函式
def exclude_seat(seat_list):
    """從座號名單中排除特定座號"""
    try:
        exclude_number = int(input("請輸入要排除的座號 (1-20),或直接按 Enter 繼續:"))
        if exclude_number in seat_list:
            seat_list.remove(exclude_number)
            print(f"座號 {exclude_number} 已排除。")
        else:
            print("該座號不在範圍內或已排除。")
    except ValueError:
        print("無排除座號。")
    return seat_list

# 配對函式
def create_pairs(seat_list):
    """隨機生成兩兩一對的配對"""
    random.shuffle(seat_list)
    pairs = []
    for i in range(0, len(seat_list) - 1, 2):
        pairs.append((seat_list[i], seat_list[i + 1]))
    
    # 若有單一剩餘座號,顯示無法配對
    if len(seat_list) % 2 != 0:
        print(f"剩餘座號無法配對:{seat_list[-1]}")
    
    return pairs

# 主程式
while True:
    print("\n座號名單:", seat_numbers)
    
    # 選擇是否排除座號
    seat_numbers = exclude_seat(seat_numbers)
    
    # 建立配對
    pairs = create_pairs(seat_numbers)
    print("\n隨機配對結果:")
    for pair in pairs:
        print(f"座號 {pair[0]} 與 座號 {pair[1]} 配對")

    # 詢問是否再次執行
    repeat = input("\n是否再次執行配對?(y/n):")
    if repeat.lower() != 'y':
        print("程式結束")
        break


綜合練習三、累進電費計算

def calculate_electricity_bill(month, usage):
    """
    根據輸入的月份和用電度數,計算電費。
    
    month: int - 輸入的月份 (1 到 12)
    usage: float - 輸入的用電度數
    """
    # 判斷是否為夏季
    if month in [6, 7, 8, 9]:
        # 夏季電價
        tier1_rate = 1.68  # 120度以下
        tier2_rate = 2.45  # 121度到330度
        tier3_rate = 3.70  # 331度到500度
        tier4_rate = 5.04  # 501度到700度
    else:
        # 非夏季電價
        tier1_rate = 1.68  # 120度以下
        tier2_rate = 2.16  # 121度到330度
        tier3_rate = 3.03  # 331度到500度
        tier4_rate = 4.14  # 501度到700度
    
    # 電費計算
    if usage <= 120:
        cost = usage * tier1_rate
    elif usage <= 330:
        cost = (120 * tier1_rate) + ((usage - 120) * tier2_rate)
    elif usage <= 500:
        cost = (120 * tier1_rate) + (210 * tier2_rate) + ((usage - 330) * tier3_rate)
    elif usage <= 700:
        cost = (120 * tier1_rate) + (210 * tier2_rate) + (170 * tier3_rate) + ((usage - 500) * tier4_rate)
    else:
        # 超過700度,使用最高費率
        tier5_rate = 6.41  # 701度以上
        cost = (120 * tier1_rate) + (210 * tier2_rate) + (170 * tier3_rate) + (200 * tier4_rate) + ((usage - 700) * tier5_rate)
    
    return cost

# 主程式
try:
    month = int(input("請輸入月份 (1-12):"))
    usage = float(input("請輸入用電度數:"))
    
    bill = calculate_electricity_bill(month, usage)
    print(f"本月的電費為:{bill:.2f} 元")
except ValueError:
    print("輸入的數值無效,請輸入有效的月份和用電度數!")



綜合練習四、請LLM產生計算資料,匯出csv檔

import pandas as pd
import random
from google.colab import files
# Step 1: 隨機生成 10 個學生的姓名
first_names = ["小明", "小華", "小美", "小強", "小玲", "小麗", "小天", "小英", "小亮", "小莉"]
last_names = ["陳", "林", "李", "王", "吳", "張", "劉", "楊", "黃", "趙"]
students = [random.choice(last_names) + random.choice(first_names) for _ in range(10)]
# Step 2: 隨機生成各科目分數
scores = {
    "姓名": students,
    "數學": [random.randint(50, 100) for _ in range(10)],
    "英文": [random.randint(50, 100) for _ in range(10)],
    "國文": [random.randint(50, 100) for _ in range(10)],
    "自然": [random.randint(50, 100) for _ in range(10)]
}
# Step 3: 將資料儲存到 DataFrame
df = pd.DataFrame(scores)
# Step 4: 將 DataFrame 儲存為 CSV 檔案
file_name = "student_scores.csv"
df.to_csv(file_name, index=False, encoding='utf-8-sig')
# Step 5: 提供下載 CSV 檔案
files.download(file_name)

綜合練習六、計算個人平均分數,再寫入Excel之中

# Step 1: 安裝所需的套件
!pip install openpyxl

# Step 2: 匯入相關的庫
import pandas as pd
from google.colab import files

# Step 3: 上傳 Excel 檔案到 Colab
uploaded = files.upload()

# 假設檔案名是 "student_scores.xlsx"(根據實際檔案名進行修改)
file_name = "practice.xlsx"

# Step 4: 讀取 Excel 文件
df = pd.read_excel(file_name)

# Step 5: 計算每位學生的平均分數,並將結果寫入 "平均分數" 欄位
df['平均分數'] = df[['數學', '英文', '國文', '自然']].mean(axis=1)

# Step 6: 將更新後的資料寫回 Excel 檔案
output_file_name = "student_scores_with_avg.xlsx"
df.to_excel(output_file_name, index=False)

# Step 7: 提供下載更新後的 Excel 檔案
files.download(output_file_name)

綜合練習七、爬蟲:爬取台灣銀行牌告匯率並轉存csv檔

# 如未安裝 BeautifulSoup4, 請執行以下指令
# !pip install beautifulsoup4 requests

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 定義台灣銀行牌告匯率的網址
url = "https://rate.bot.com.tw/xrt?Lang=zh-TW"

# 發送 GET 請求
response = requests.get(url)
response.encoding = 'utf-8'  # 確保正確的中文編碼

# 檢查請求是否成功
if response.status_code == 200:
    # 使用 BeautifulSoup 解析 HTML
    soup = BeautifulSoup(response.text, "html.parser")

    # 找到表格
    table = soup.find("table", {"title": "牌告匯率"})

    # 初始化空的列表來存放匯率資料
    currency_data = []

    # 遍歷表格的每一行,跳過標題行
    for row in table.tbody.find_all("tr"):
        # 取得幣別名稱
        currency_name = row.find("div", {"class": "visible-phone"}).get_text(strip=True)

        # 取得匯率買入和賣出價
        rates = row.find_all("td", {"data-table": "本行現金賣出"})
        cash_buying_rate = row.find_all("td")[1].get_text(strip=True)
        cash_selling_rate = row.find_all("td")[2].get_text(strip=True)
        spot_buying_rate = row.find_all("td")[3].get_text(strip=True)
        spot_selling_rate = row.find_all("td")[4].get_text(strip=True)

        # 將資料加入到列表
        currency_data.append([currency_name, cash_buying_rate, cash_selling_rate, spot_buying_rate, spot_selling_rate])

    # 使用 pandas 將資料轉換成 DataFrame
    columns = ["幣別", "現金買入", "現金賣出", "即期買入", "即期賣出"]
    df = pd.DataFrame(currency_data, columns=columns)

    # 顯示結果
    print("台灣銀行牌告匯率")
    print(df)
else:
    print("無法連接到台灣銀行網站,請檢查網址或網路連線")
Table of Contents