如何用 Python 精準計算投資回報期:金融分析師實戰指南

在投資決策中,瞭解資金何時能夠回籠至關重要。本文旨在解答「如何用Python計算投資回報期」這個關鍵問題,透過提供清晰的Python程式碼範例,引導您計算投資回報期,從而不評估投資項目的吸引力。您將學習如何使用Python計算不考慮貨幣時間價值和考慮貨幣時間價值的回報期. 此外,我建議您在實際應用中,結合NumPy和Pandas等函式庫,以提高計算效率和數據處理能力。

這篇文章的實用建議如下(更多細節請繼續往下閱讀)

  1. 善用Python函式庫: 在計算投資回報期時,積極使用NumPy進行數值計算,Pandas進行數據處理。Pandas 尤其擅長讀取和清洗包含投資數據的CSV檔案。這些函式庫能有效提高計算效率和準確性。
  2. 考慮貨幣時間價值: 簡單回報期計算忽略了貨幣的時間價值。為了更精確的評估,請務必使用折現現金流 (DCF) 方法,並仔細選擇折現率。可以考慮使用加權平均資本成本 (WACC) 作為折現率,以反映投資的風險。
  3. 結合其他指標與風險意識: 投資回報期有其局限性,例如忽略了回報期之後的現金流。因此,在進行投資決策時,務必結合淨現值 (NPV) 和內部收益率 (IRR) 等其他更全面的指標。同時,也要充分評估投資項目的風險,不要單獨依賴回報期作為決策依據。

Python 投資回報期計算:不考慮時間價值實例

在評估投資項目時,投資回報期 (Payback Period) 是一個簡單而直觀的指標,它告訴我們需要多長時間才能收回初始投資成本。雖然這種方法忽略了貨幣的時間價值,以及回報期之後的現金流,但它仍然是一種快速評估投資風險和流動性的有效工具. 尤其適合於初步篩選投資機會,或在現金流預測不確定性較高的情況下使用. 讓我們通過一個實際的例子,學習如何使用 Python 計算不考慮時間價值的投資回報期。

投資回報期概念與計算公式

投資回報期是指收回初始投資所需的時間,通常以年為單位. 計算公式非常簡單:

投資回報期 = 初始投資 / 每年現金流

這個公式適用於每年現金流相對穩定的情況. 如果現金流不均勻,則需要通過累計現金流來計算回報期.

Python 程式碼實現 (不考慮貨幣時間價值)

python
def payback_period_simple(initial_investment, cash_flows):
“””
計算不考慮時間價值的簡單投資回報期。

Args:
initial_investment (float): 初始投資金額。
cash_flows (list): 每年現金流列表。

Returns:
float or None: 投資回報期(年)。如果投資永遠無法回本,則返回 None。
“””
cumulative_cash_flow = 0
for i, cash_flow in enumerate(cash_flows):
cumulative_cash_flow += cash_flow
if cumulative_cash_flow >= initial_investment:
return i + 1 Payback period in years
return None Investment never pays back

程式碼解釋:

  • 這個函數 `payback_period_simple` 接受兩個參數:`initial_investment` (初始投資金額) 和 `cash_flows` (每年現金流的列表).
  • `cumulative_cash_flow` 變數用於追蹤累計現金流。
  • 函數使用 `enumerate` 遍歷 `cash_flows` 列表,`i` 是索引(年份),`cash_flow` 是該年的現金流。
  • 在迴圈中,我們將每年的現金流加到 `cumulative_cash_flow` 中。
  • 如果 `cumulative_cash_flow` 大於或等於 `initial_investment`,則表示投資已回本,函數返回回報期 `i + 1`。
  • 如果迴圈結束後,`cumulative_cash_flow` 仍然小於 `initial_investment`,則表示投資永遠無法回本,函數返回 `None`。

示例

假設我們有一個初始投資為 100,000 元的項目,未來 5 年的現金流分別為 20,000 元、30,000 元、30,000 元、20,000 元和 10,000 元。我們可以使用上面的函數計算回報期:

python
initial_investment = 100000
cash_flows =
payback_period = payback_period_simple(initial_investment, cash_flows)

if payback_period:
print(f”投資回報期為:{payback_period} 年”)
else:
print(“投資永遠無法回本”)

在這個例子中,程式碼會輸出 “投資回報期為:4 年”,因為累計現金流在第 4 年超過了初始投資。

實際應用場景

這種簡單的回報期計算方法適用於快速評估小型投資項目,或者在現金流預測不確定性較高的情況下. 例如,一個小型零售企業在考慮是否購買一台新的收銀機時,可以使用這種方法快速評估多久能收回投資成本。

風險提示與注意事項

需要注意的是,這種簡單的回報期計算方法存在一些侷限性:

  • 忽略了貨幣的時間價值: 沒有考慮到今天的 1 元與未來某天的 1 元價值不同.
  • 忽略了回報期之後的現金流: 沒有考慮到回報期之後項目可能產生的收益.
  • 沒有考慮投資的風險: 沒有對不同風險水平的項目進行區分.

因此,在進行更全面的投資評估時,建議結合其他指標,例如淨現值 (NPV)內部收益率 (IRR). 在後續的章節中,我們將會探討如何使用 Python 計算考慮貨幣時間價值的投資回報期,以及如何使用 Pandas 處理更複雜的投資數據。

希望這個段落對您有所幫助!

Python 投資回報期計算:考慮時間價值,折現現金流法

在上一節中,我們學習瞭如何使用 Python 計算不考慮貨幣時間價值的投資回報期。 然而,現實世界的投資決策往往更加複雜。 由於通貨膨脹機會成本等因素,今天的 100 元顯然比一年後的 100 元更有價值。 因此,為了更準確地評估投資的回報期,我們需要考慮貨幣的時間價值,這就是折現現金流 (Discounted Cash Flow, DCF) 方法發揮作用的地方。

什麼是折現現金流 (DCF)?

折現現金流是一種評估投資吸引力的方法,它使用預計的未來自由現金流,並使用折現率將它們折算回今天的價值。 簡單來說,DCF 試圖確定一項投資根據其預期產生的未來現金流的價值。

折現現金流如何影響投資回報期計算?

在計算考慮時間價值的投資回報期時,我們不再簡單地將未來的現金流加總,而是需要將每個現金流折算回其現值。 具體步驟如下:

  1. 確定折現率: 折現率代表投資的機會成本,以及與投資相關的風險。 常用的折現率包括加權平均資本成本 (Weighted Average Cost of Capital, WACC), WACC 考量了公司所有資金來源(包括債務和權益)的成本,並根據其在公司資本結構中的比例進行加權平均。讀者可參考Weighted Average Cost of Capital (WACC) Calculation – Medium,以瞭解如何使用 Python 有效計算 WACC。
  2. 計算折現現金流: 對於每個預期的現金流,使用以下公式計算其現值:

    現值 = 未來現金流 / (1 + 折現率)^時間

  3. 累計折現現金流: 將每個期間的折現現金流累加,直到累計值等於或超過初始投資額。
  4. 確定投資回報期: 投資回報期是指累計折現現金流達到初始投資額所需的年數。

Python 程式碼範例 (考慮貨幣時間價值)

python
import numpy as np

def payback_period_discounted(initial_investment, cash_flows, discount_rate):
“””
計算考慮貨幣時間價值的投資回報期

Args:
initial_investment (float): 初始投資金額
cash_flows (list): 未來現金流列表
discount_rate (float): 折現率

Returns:
float: 投資回報期(年),如果投資永遠無法回本,則返回 None
“””
cumulative_cash_flow = 0
for i, cash_flow in enumerate(cash_flows):
discounted_cash_flow = cash_flow / (1 + discount_rate)(i + 1)
cumulative_cash_flow += discounted_cash_flow
if cumulative_cash_flow >= initial_investment:
return i + 1
return None

示例
initial_investment = 1000
cash_flows =
discount_rate = 0.05

payback_period = payback_period_discounted(initial_investment, cash_flows, discount_rate)

if payback_period:
print(f”考慮貨幣時間價值的投資回報期為:{payback_period} 年”)
else:
print(“投資永遠無法回本”)

在這個例子中,我們使用了 NumPy 庫來計算折現現金流。 payback_period_discounted 函數接收初始投資額、現金流列表和折現率作為輸入,並返回考慮貨幣時間價值的投資回報期。

注意事項

  • 折現率的選擇: 折現率的選擇至關重要,它直接影響計算結果的準確性。 投資者應根據投資的具體情況,選擇合適的折現率。
  • 現金流的預測: 未來現金流的預測可能存在不確定性。 投資者應仔細評估現金流預測的準確性,並考慮使用情境分析來評估不同情境下的投資回報期。
  • 侷限性: 即使考慮了貨幣的時間價值,投資回報期仍然存在侷限性。 它忽略了回報期之後的現金流,也沒有考慮投資的風險。 因此,投資者應結合其他投資評估指標,例如淨現值 (NPV)內部收益率 (IRR),來做出更全面的投資決策。

總之,通過使用 Python 和折現現金流方法,我們可以更精確地計算投資回報期,從而做出更明智的投資決策。 在下一節中,我們將學習如何使用 Pandas 處理投資數據,並將其應用於投資回報期計算中。

如何用 Python 精準計算投資回報期:金融分析師實戰指南

如何用Python計算投資回報期. Photos provided by unsplash

Pandas 數據導入與清洗:Python 助你快速分析投資回報期

在金融分析中,數據的品質直接影響到分析結果的準確性。原始的投資數據往往格式混亂、包含缺失值或異常值,這些都會干擾投資回報期的計算。Pandas 是一個功能強大的 Python 庫,專門用於數據處理和分析,它能幫助我們高效地導入、清洗和轉換數據,為後續的投資分析奠定堅實的基礎。

從不同來源導入數據

Pandas 支援從多種數據來源導入數據,例如 CSV 文件、Excel 文件、SQL 數據庫等。

  • 從 CSV 文件導入:
    CSV (Comma Separated Values) 是一種常見的數據儲存格式,許多金融數據都可以 CSV 格式取得。使用 Pandas 的 read_csv 函數可以輕鬆將 CSV 文件導入為 DataFrame。

python
import pandas as pd

讀取 CSV 文件
df = pd.read_csv(‘investment_data.csv’)

顯示 DataFrame 的前幾行
print(df.head)

  • 從 Excel 文件導入:
    如果數據儲存在 Excel 文件中,可以使用 read_excel 函數導入。

python
import pandas as pd

讀取 Excel 文件
df = pd.read_excel(‘investment_data.xlsx’, sheet_name=’CashFlows’)

顯示 DataFrame 的前幾行
print(df.head)

  • 從 SQL 數據庫導入:
    對於儲存在 SQL 數據庫中的數據,可以使用 read_sql_query 函數執行 SQL 查詢並將結果導入為 DataFrame.

python
import pandas as pd
import sqlite3

連接到 SQLite 數據庫
conn = sqlite3.connect(‘investment_data.db’)

執行 SQL 查詢
query = “SELECT FROM cash_flows”
df = pd.read_sql_query(query, conn)

關閉連接
conn.close

顯示 DataFrame 的前幾行
print(df.head)

數據清洗與預處理

導入數據後,通常需要進行一系列的清洗和預處理操作,以確保數據的準確性和一致性。

  • 處理缺失值:
    金融數據中經常會出現缺失值 (Missing Values),可能是由於數據收集錯誤或記錄遺漏所致。Pandas 提供了多種處理缺失值的方法,例如:

    • 刪除包含缺失值的行: 使用 dropna 函數刪除包含任何缺失值的行.

    python
    刪除包含缺失值的行
    df_cleaned = df.dropna

    • 填補缺失值: 使用 fillna 函數用特定值(例如平均值、中位數或 0)填補缺失值.

    python
    使用平均值填補缺失值
    df_filled = df.fillna(df.mean)

    使用 0 填補缺失值
    df_filled_zero = df.fillna(0)

  • 處理重複值:
    重複的數據會影響分析結果的準確性。可以使用 drop_duplicates 函數刪除 DataFrame 中的重複行.

python
刪除重複行
df_no_duplicates = df.drop_duplicates

  • 轉換數據類型:
    有時,數據的類型可能不正確,例如數值型的數據被讀取為字串型。可以使用 astype 函數將數據轉換為正確的類型.

python
將 ‘Cash Flow’ 列轉換為數值型
df[‘Cash Flow’] = df[‘Cash Flow’].astype(float)

  • 處理異常值:
    異常值 (Outliers) 是指明顯偏離其他數據的值,可能會對分析結果產生不良影響。可以使用多種方法檢測和處理異常值,例如:

    • 使用箱形圖 (Box Plot) 可視化異常值:

    python
    import seaborn as sns
    import matplotlib.pyplot as plt

    繪製箱形圖
    sns.boxplot(x=df[‘Cash Flow’])
    plt.show

    • 使用四分位距 (Interquartile Range, IQR) 方法過濾異常值:

    python
    計算 IQR
    Q1 = df[‘Cash Flow’].quantile(0.25)
    Q3 = df[‘Cash Flow’].quantile(0.75)
    IQR = Q3 – Q1

    定義異常值的上下界
    lower_bound = Q1 – 1.5 IQR
    upper_bound = Q3 + 1.5 IQR

    過濾異常值
    df_no_outliers = df[(df[‘Cash Flow’] >= lower_bound) & (df[‘Cash Flow’] <= upper_bound)]

  • 統一數據格式:
    為了確保數據的一致性,可能需要統一數據的格式,例如日期格式、貨幣符號等.

實際案例

假設我們有一個包含以下欄位的 CSV 文件 `investment_data.csv`:

  • `Year`: 投資年份
  • `Cash Flow`: 現金流

python
import pandas as pd

讀取 CSV 文件
df = pd.read_csv(‘investment_data.csv’)

顯示 DataFrame 的信息
print(“原始數據信息:”)
print(df.info)

處理缺失值
df[‘Cash Flow’] = df[‘Cash Flow’].fillna(0)

轉換數據類型
df[‘Cash Flow’] = df[‘Cash Flow’].astype(float)

刪除重複行
df = df.drop_duplicates

顯示清洗後的數據信息
print(“\n清洗後的數據信息:”)
print(df.info)

顯示清洗後的 DataFrame 的前幾行
print(“\n清洗後的 DataFrame 的前幾行:”)
print(df.head)

通過以上步驟,我們可以將原始的投資數據轉換為乾淨、一致的格式,為後續的投資回報期計算提供可靠的數據基礎. 更多關於 Pandas 的資訊,可以參考 Pandas 官方網站 https://pandas.pydata.org/

Pandas 數據導入與清洗
主題 描述 範例程式碼
從 CSV 文件導入 使用 Pandas 的 read_csv 函數可以輕鬆將 CSV 文件導入為 DataFrame。
import pandas as pd

讀取 CSV 文件
df = pd.read_csv('investment_data.csv')

顯示 DataFrame 的前幾行
print(df.head)
從 Excel 文件導入 如果數據儲存在 Excel 文件中,可以使用 read_excel 函數導入。
import pandas as pd

讀取 Excel 文件
df = pd.read_excel('investment_data.xlsx', sheet_name='CashFlows')

顯示 DataFrame 的前幾行
print(df.head)
從 SQL 數據庫導入 對於儲存在 SQL 數據庫中的數據,可以使用 read_sql_query 函數執行 SQL 查詢並將結果導入為 DataFrame.
import pandas as pd
import sqlite3

連接到 SQLite 數據庫
conn = sqlite3.connect('investment_data.db')

執行 SQL 查詢
query = "SELECT  FROM cash_flows"
df = pd.read_sql_query(query, conn)

關閉連接
conn.close

顯示 DataFrame 的前幾行
print(df.head)
處理缺失值:刪除包含缺失值的行 使用 dropna 函數刪除包含任何缺失值的行。
刪除包含缺失值的行
df_cleaned = df.dropna
處理缺失值:填補缺失值 使用 fillna 函數用特定值(例如平均值、中位數或 0)填補缺失值。
使用平均值填補缺失值
df_filled = df.fillna(df.mean)

使用 0 填補缺失值
df_filled_zero = df.fillna(0)
處理重複值 可以使用 drop_duplicates 函數刪除 DataFrame 中的重複行。
刪除重複行
df_no_duplicates = df.drop_duplicates
轉換數據類型 可以使用 astype 函數將數據轉換為正確的類型。
將 'Cash Flow' 列轉換為數值型
df['Cash Flow'] = df['Cash Flow'].astype(float)
處理異常值:箱形圖 (Box Plot) 使用箱形圖可視化異常值。
import seaborn as sns
import matplotlib.pyplot as plt

繪製箱形圖
sns.boxplot(x=df['Cash Flow'])
plt.show
處理異常值:四分位距 (Interquartile Range, IQR) 方法 使用四分位距 (Interquartile Range, IQR) 方法過濾異常值。
計算 IQR
Q1 = df['Cash Flow'].quantile(0.25)
Q3 = df['Cash Flow'].quantile(0.75)
IQR = Q3 - Q1

定義異常值的上下界
lower_bound = Q1 - 1.5  IQR
upper_bound = Q3 + 1.5  IQR

過濾異常值
df_no_outliers = df[(df['Cash Flow'] >= lower_bound) & (df['Cash Flow'] <= upper_bound)]
實際案例 清洗 investment_data.csv 數據。
import pandas as pd

讀取 CSV 文件
df = pd.read_csv('investment_data.csv')

顯示 DataFrame 的信息
print("原始數據信息:")
print(df.info)

處理缺失值
df['Cash Flow'] = df['Cash Flow'].fillna(0)

轉換數據類型
df['Cash Flow'] = df['Cash Flow'].astype(float)

刪除重複行
df = df.drop_duplicates

顯示清洗後的數據信息
print("\n清洗後的數據信息:")
print(df.info)

顯示清洗後的 DataFrame 的前幾行
print("\n清洗後的 DataFrame 的前幾行:")
print(df.head)

程式碼優化與錯誤處理:讓你的 Python 投資回報期計算更可靠

在金融分析中,程式碼的效率和準確性至關重要。 尤其是在計算投資回報期時,必須確保程式碼能夠快速處理大量數據,並能妥善處理各種可能出現的錯誤情況。本節將探討如何優化 Python 程式碼,提高計算效率,並介紹一些常見的錯誤處理技巧,以確保投資回報期計算的可靠性。

向量化操作:利用 NumPy 提升計算效率

Python 的迴圈在處理大量數據時效率較低。 NumPy 庫提供了向量化操作,可以一次性對整個數組執行計算,從而顯著提高計算速度。在計算折現現金流時,可以使用 NumPy 的向量化操作來代替迴圈,從而加速計算過程。例如:

python
import numpy as np

def payback_period_discounted_vectorized(initial_investment, cash_flows, discount_rate):
"""
使用向量化操作計算考慮貨幣時間價值的投資回報期。
"""
discounted_cash_flows = cash_flows / (1 + discount_rate)np.arange(1, len(cash_flows) + 1)
cumulative_cash_flow = np.cumsum(discounted_cash_flows)
try:
payback_period = np.where(cumulative_cash_flow >= initial_investment) + 1
return payback_period
except IndexError:
return None 投資永遠無法回本

在這個例子中,`np.arange` 建立一個數組表示時間週期,然後直接用它來計算所有現金流的折現值。 `np.cumsum` 函數計算累積現金流,而 `np.where` 則用於查找累積現金流首次超過初始投資的年份。 向量化操作避免了顯式迴圈,從而大大提高了計算效率。

錯誤處理:防範潛在的程式崩潰

在實際應用中,程式碼可能會遇到各種錯誤,例如無效的輸入數據、除以零等。為了確保程式的穩定性,需要加入適當的錯誤處理機制。 Python 提供了 `try...except` 語法來捕獲和處理異常。

  • 處理現金流為負數的情況: 在某些情況下,現金流可能為負數(例如,維護費用)。 程式碼應能正確處理這些情況,避免計算錯誤。
  • 處理投資永遠無法回本的情況: 如果投資在預定的時間範圍內永遠無法回本,程式碼應返回 `None` 或其他適當的值,而不是陷入無限迴圈或拋出異常。
  • 處理折現率為零的情況: 如果折現率為零,則不應執行折現現金流計算,可以將折現率設為一個很小的正數,或者直接使用未折現的現金流進行計算。
  • 處理 Pandas 數據中的缺失值: 在導入和處理數據時,務必檢查缺失值(`NaN`)。可以使用 Pandas 的 `fillna` 函數填充缺失值,或使用 `dropna` 函數刪除包含缺失值的行或列。

python
import numpy as np
import pandas as pd

def payback_period_discounted_safe(initial_investment, cash_flows, discount_rate):
"""
使用錯誤處理機制計算考慮貨幣時間價值的投資回報期。
"""
if discount_rate <= 0: raise ValueError("折現率必須為正數。") cash_flows = pd.Series(cash_flows).fillna(0).tolist 處理缺失值 try: discounted_cash_flows = [cf / (1 + discount_rate)i for i, cf in enumerate(cash_flows, start=1)] cumulative_cash_flow = 0 for i, dcf in enumerate(discounted_cash_flows): cumulative_cash_flow += dcf if cumulative_cash_flow >= initial_investment:
return i + 1
return None 投資永遠無法回本
except ZeroDivisionError:
return None 折現率為零,無法計算
except TypeError:
return None 現金流數據類型錯誤

使用加權平均資本成本 (WACC) 作為折現率

選擇合適的折現率對於計算投資回報期至關重要。 一種常用的方法是使用加權平均資本成本(WACC)。 WACC 代表公司為其所有資金來源(包括股權和債務)支付的平均利率. 計算 WACC 的公式如下:

WACC = (E/V × Re) + (D/V × Rd × (1 − Tc))

  • E = 公司股權的市場價值
  • D = 公司債務的市場價值
  • V = E + D (公司總資本)
  • Re = 股權成本
  • Rd = 債務成本
  • Tc = 企業稅率

使用 WACC 作為折現率可以更準確地反映投資的風險和機會成本。 讀者可以參考 Investopedia 的 WACC 解釋文章 和 Corporate Finance Institute 的 WACC 指南 獲取更多資訊。

透過程式碼優化和錯誤處理,我們可以確保 Python 投資回報期計算的效率和可靠性,為金融分析師提供更準確的投資決策依據。

如何用Python計算投資回報期結論

在本文中,我們深入探討了如何用 Python 計算投資回報期,從簡單的不考慮貨幣時間價值的方法,到更精確的折現現金流法,再到利用 Pandas 進行數據處理,以及程式碼優化和錯誤處理。 我們

投資回報期只是一種初步的評估指標 。在進行全面的投資分析時,請務必結合其他指標,例如淨現值 (NPV)內部收益率 (IRR),並充分考慮投資的風險因素。 此外,也請記得定期檢視和更新您的投資模型,以確保其準確性和可靠性。

Python 作為一種強大且靈活的程式語言,在金融分析領域有著廣泛的應用前景。 透過不斷學習和實踐,您可以利用 Python 解決更多複雜的金融問題,提升您的投資分析能力。 希望本文能激發您對金融科技的興趣,並鼓勵您使用 Python 探索更多投資機會!

如何用Python計算投資回報期 常見問題快速FAQ

Q1: 投資回報期是什麼?為什麼要用 Python 計算?

投資回報期 (Payback Period) 指的是收回初始投資所需的時間,通常以年為單位。使用 Python 計算投資回報期,可以快速處理大量數據,並且能靈活地自定義計算邏輯,例如考慮貨幣的時間價值。 Python 的 NumPy 和 Pandas 等函式庫也提供了強大的數據處理和計算能力,使得投資回報期的計算更加高效和準確。

Q2: 如何在 Python 中計算考慮貨幣時間價值的投資回報期?

計算考慮貨幣時間價值的投資回報期,需要使用折現現金流 (Discounted Cash Flow, DCF) 方法。首先,確定一個合適的折現率,例如加權平均資本成本 (WACC)。然後,將每個預期的現金流折算回其現值,公式為:現值 = 未來現金流 / (1 + 折現率)^時間。最後,累計折現現金流,直到累計值等於或超過初始投資額。累計折現現金流達到初始投資額所需的年數,就是考慮貨幣時間價值的投資回報期。可以使用 NumPy 庫來簡化折現現金流的計算。

Q3: 使用 Python 計算投資回報期時,有哪些常見的錯誤需要注意?

使用 Python 計算投資回報期時,需要注意以下幾點:

  • 處理現金流為負數的情況: 程式碼應能正確處理現金流為負數的情況,避免計算錯誤。
  • 處理投資永遠無法回本的情況: 如果投資在預定的時間範圍內永遠無法回本,程式碼應返回 `None` 或其他適當的值。
  • 處理折現率為零的情況: 如果折現率為零,則不應執行折現現金流計算,可以將折現率設為一個很小的正數,或者直接使用未折現的現金流進行計算。
  • 處理 Pandas 數據中的缺失值: 在導入和處理數據時,務必檢查缺失值(`NaN`),並使用 `fillna` 或 `dropna` 函數進行處理。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端