HOWTO · Python

在 Python 中使用 Pi

在本教程中,我們將在 Python 中使用 pi 值

本頁內容

需要取得圓周率的數值近似值時,可使用 Python 標準函式庫中的 math.pi。如果計算已使用 NumPy 陣列,numpy.pi 就適合這種情境;若代數式需要保留符號形式,則可使用 sympy.pi。這些都是常數,不能當成函式呼叫。以下範例會說明各種形式的適用情境、角度轉換與取得圓周率的差異,以及為什麼手寫近似值主要用於教學。

使用 Python 的 math.pi 常數取得圓周率

一般數值計算使用標準函式庫的 math 模組最簡單,也不需要安裝第三方套件。匯入模組後,直接讀取 math.pi 即可。這個值是浮點數近似值,因此計算採用有限精度,並非精確的數學常數。

執行以下範例:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import math

radius = 5
area = math.pi * radius**2
print(f"Area: {area}")
Area: 78.53981633974483

此範例使用圓面積公式 πr²。由於 math.pi 是浮點數,計算結果是數值近似值。

不要寫成 math.pi();加上括號會嘗試呼叫這個值,但它不是函式。大多數需要以數值使用圓周率的程式,直接使用 math.pi 即可。

使用 NumPy 的 pi 常數進行陣列計算

如果周邊計算已使用 NumPy 陣列,搭配 NumPy 的陣列運算使用它的 pi 常數就很方便。將 NumPy 匯入為 np 後,直接使用 np.pi(也稱為 numpy.pi),不必加上括號。例如,可將度數角度陣列乘以 np.pi / 180,把其中的角度值轉換為弧度,再套用 NumPy 的三角函式。

以下範例以一次陣列計算將三個度數轉換為弧度:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import numpy as np

degrees = np.array([0, 90, 180])
radians = degrees * np.pi / 180
print(radians)
[0.         1.57079633 3.14159265]

NumPy 是第三方相依套件,因此必須安裝在執行程式的環境中。如果只是進行單一純量計算,且其他部分沒有使用 NumPy,標準函式庫的 math.pi 就能避免這項相依需求。numpy.pi 代表相同的常見數值常數;它的實際優點是能與陣列運算程式碼保持一致,而不是提供不同種類的精度。

使用 SymPy 的 pi 進行符號數學運算

如果代數、微積分或精確形式的運算需要保留符號,而不是立即轉成浮點數計算,就可以使用 SymPy。透過 from sympy import pi, symbols,運算式 pi * x**2 會以符號形式保留 pi 和符號 x。接著,SymPy 可以將運算式視為數學式進行處理;將它轉成數值近似值則是另一個步驟。

這與 math.pi 和 numpy.pi 不同,後兩者是浮點數值。SymPy 也是第三方相依套件。只有在需要符號運算時才選用 sympy.pi,不要只為了取得圓周率的數值而匯入 SymPy。

使用 math.radians 將度數轉換為弧度

math.radians(degrees) 會將以度數表示的角度轉換為弧度。例如,math.radians(90) 會得到 π/2 的浮點數近似值,而 math.radians(180) 會得到 π 的近似值。這種關係適合用於角度轉換,但通常不會用來取得圓周率:需要圓周率本身時,請使用 math.pi。

執行以下範例:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import math

angle_degrees = 90
angle_radians = math.radians(angle_degrees)
print(f"Radians: {angle_radians}")
Radians: 1.5707963267948966

如果現有的 NumPy 工作流程需要處理一系列角度,NumPy 也提供適用於陣列的度數轉換方式;若只需轉換單一純量角度,math.radians 是清楚易用的標準函式庫選項。

在教學範例中使用自訂圓周率近似值

簡短的小數近似值有助於示範如何在公式中使用常數:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

PI = 3.141592653589793

diameter = 10
circumference = PI * diameter
print(f"Circumference: {circumference}")
Circumference: 31.41592653589793

指定的數字仍只是有限精度的近似值,手動複製這些數字對一般工作沒有幫助。一般數值計算請優先使用 math.pi;自訂值則適合用於講解公式、常數或近似精度的課程。