timmy / Python Mixin 類別設計
1 likes
0 forks
1 files
Last active 10 months ago
這段程式碼展示了如何使用 Mixin 類別來提供額外功能。GraphicMixin 提供 draw() 方法,而 ColorMixin 提供 set_color() 方法,ColoredGraphic 繼承這兩個 Mixin,使其具備繪圖與設定顏色的功能。這種設計可以在不影響主要類別結構的情況下,為不同類別添加額外行為。
| 1 | class GraphicMixin: |
| 2 | def draw(self): |
| 3 | print("Drawing the graphic") |
| 4 | |
| 5 | class ColorMixin: |
| 6 | def set_color(self, color): |
| 7 | self.color = color |
| 8 | print(f"Setting color to {color}") |
| 9 | |
| 10 | class ColoredGraphic(ColorMixin, GraphicMixin): |
timmy / Python 類別與方法
0 likes
0 forks
1 files
Last active 10 months ago
這段程式碼定義了一個 GreetingClass 類別,內含兩個方法 say_hello() 和 say_goodbye(),用來回傳問候語。透過建立 greeter 物件,可以呼叫這些方法,並測試它們是否符合預期的輸出,適合作為 Python 類別與方法的基礎學習示例。
| 1 | class GreetingClass: |
| 2 | name = "user" |
| 3 | |
| 4 | def say_hello(self): |
| 5 | """Class method.""" |
| 6 | return "Hello " + self.name |
| 7 | |
| 8 | def say_goodbye(self): |
| 9 | """Class method.""" |
| 10 | return "Goodbye " + self.name |
timmy / 投資報酬率 (ROI) 計算
0 likes
0 forks
1 files
Last active 10 months ago
這個 Python 函數計算投資報酬率 (ROI),衡量投資的盈利能力。ROI 公式為 (投資收益 - 投資成本) / 投資成本 * 100,用於評估投資回報的效率,適用於個人理財、企業投資和專案決策。
| 1 | def calculate_roi(investment_cost, investment_gain): |
| 2 | """ |
| 3 | 計算投資報酬率 (ROI) 的函數。 |
| 4 | |
| 5 | :param investment_cost: 投資成本 |
| 6 | :param investment_gain: 投資收益 |
| 7 | :return: 投資報酬率 (ROI) |
| 8 | """ |
| 9 | net_profit = investment_gain - investment_cost |
| 10 | roi = (net_profit / investment_cost) * 100 |
Last active 10 months ago
這兩個 Python 程式分別計算全年投資與不足一年投資的年化報酬率。calculate_annualized_return.py 適用於完整投資年度,而 calculate_annualized_return_for_part_years_investment.py 則適用於短期投資,允許投資期限以小數表示(如 6 個月 = 0.5 年)。這些函數可用於評估投資績效,幫助投資者比較不同投資期間的回報率。
| 1 | def calculate_annualized_return(initial_investment, final_value, investment_period): |
| 2 | """ |
| 3 | 計算年化報酬率的函數。 |
| 4 | |
| 5 | :param initial_investment: 初始投資金額 |
| 6 | :param final_value: 投資終值 |
| 7 | :param investment_period: 投資期限(年) |
| 8 | :return: 年化報酬率 |
| 9 | """ |
| 10 | annualized_return = ((final_value / initial_investment) ** (1 / investment_period)) - 1 |
Last active 10 months ago
此 Python 程式碼定義了一個 Card 類別,用來表示撲克牌的花色 (suit) 和數字 (number)。該類別包含屬性驗證機制,以確保設定的數值符合撲克牌的標準。此外,程式碼還建立了兩張撲克牌,並透過 assert 來驗證對象的變更是否符合預期,可用於模擬撲克牌遊戲的基礎單元。
| 1 | """ |
| 2 | 撲克牌 |
| 3 | """ |
| 4 | |
| 5 | |
| 6 | class Card: # 類別 |
| 7 | """ |
| 8 | 撲克牌 |
| 9 | """ |
timmy / 使用 asyncio 與 threading 進行非同步延遲執行
0 likes
0 forks
1 files
Last active 10 months ago
這段程式碼結合了 Python 的 asyncio 和 threading,透過 loop.run_in_executor 在背景執行同步的 blocking_sleep(),避免阻塞 asyncio 事件迴圈。這允許 async_sleep() 在等待時仍能執行其他非同步任務,適用於需要在 asyncio 應用程式中處理阻塞性 I/O 操作(如 time.sleep())的情境。
| 1 | import asyncio |
| 2 | import threading |
| 3 | import time |
| 4 | |
| 5 | async def delayed_execution(): |
| 6 | # 在這裡執行延遲後的任務 |
| 7 | print("Delayed execution") |
| 8 | |
| 9 | def blocking_sleep(seconds): |
| 10 | time.sleep(seconds) |
timmy / 使用 Threading 進行非同步延遲執行
0 likes
0 forks
1 files
Last active 10 months ago
這段程式碼使用 Python 的 threading 模組來實現非同步延遲執行。當 async_sleep(seconds) 被呼叫時,它會建立一個新的執行緒來執行 sleep() 函式,而不會阻塞主執行緒。這允許主程式繼續執行其他任務,同時在指定時間後執行 delayed_execution()。這對於需要非同步延遲執行的應用場景,如計時器或背景任務,特別有用。
| 1 | import threading |
| 2 | import time |
| 3 | |
| 4 | def delayed_execution(): |
| 5 | # 在這裡執行延遲後的任務 |
| 6 | print("Delayed execution") |
| 7 | |
| 8 | def async_sleep(seconds): |
| 9 | def sleep(): |
| 10 | time.sleep(seconds) |
timmy / 使用 argparse 解析命令列參數
0 likes
0 forks
1 files
Last active 10 months ago
這段程式碼使用 Python 的 argparse 模組來解析命令列參數。它支援必填的位置參數(輸入檔案路徑)、選填的輸出檔案路徑(-o 或 --output),以及一個開關參數(-v 或 --verbose)來啟用詳細模式。這適用於 CLI 工具,使得用戶可以透過命令列提供不同的參數來控制程式行為。
| 1 | import argparse |
| 2 | |
| 3 | # 建立參數解析器物件 |
| 4 | parser = argparse.ArgumentParser(description='這是一個範例程式,使用 argparse 模組解析命令列參數') |
| 5 | |
| 6 | # 添加位置參數 |
| 7 | parser.add_argument('input_file', help='輸入檔案的路徑') |
| 8 | |
| 9 | # 添加選擇性參數 |
| 10 | parser.add_argument('-o', '--output', help='輸出檔案的路徑') |
timmy / Streamlit 聊天應用示範
0 likes
0 forks
1 files
Last active 10 months ago
| 1 | import streamlit as st |
| 2 | import random |
| 3 | import time |
| 4 | |
| 5 | st.write("Streamlit loves LLMs! 🤖 [Build your own chat app](https://docs.streamlit.io/develop/tutorials/llms/build-conversational-apps) in minutes, then make it powerful by adding images, dataframes, or even input widgets to the chat.") |
| 6 | |
| 7 | st.caption("Note that this demo app isn't actually connected to any LLMs. Those are expensive ;)") |
| 8 | |
| 9 | # Initialize chat history |
| 10 | if "messages" not in st.session_state: |
timmy / 使用 Python 生成隨機密碼
0 likes
0 forks
1 files
Last active 10 months ago
這段程式碼定義了一個 PasswordGenerator 類別,依據指定的類型("easy" 或 "hard")和密碼長度,隨機產生密碼。其中 "easy" 模式生成的密碼僅包含去除易混淆字元的大小寫英文字母和數字,而 "hard" 模式則包含了所有大小寫字母及標點符號。程式最後示範如何使用該生成器產生 10 個隨機密碼。
| 1 | import random |
| 2 | import string |
| 3 | |
| 4 | |
| 5 | class PasswordGenerator: |
| 6 | def __init__(self, type, length=12): |
| 7 | |
| 8 | self.length = length |
| 9 | self.type = type |