跳轉到內容

Python 程式設計/基礎數學

來自華夏公益教科書,開放書籍,開放世界


現在我們已經知道如何使用數字和字串了,讓我們編寫一個可能真正有用的程式!假設你想知道你的體重是多少石。一個簡潔的程式可以輕鬆完成這個任務。由於 1 石等於 14 磅,而 1 公斤大約等於 2.2 磅,因此以下公式應該可以做到這一點

所以,讓我們把這個公式變成一個程式!

mass_kg = int(input("What is your mass in kilograms?" ))
mass_stone = mass_kg * 2.2 / 14
print("You weigh", mass_stone, "stone.")

執行這個程式,獲取你的體重(以石為單位)!請注意,應用公式就像輸入幾個數學語句一樣簡單

mass_stone = mass_kg * 2.2 / 14

數學運算子

[編輯 | 編輯原始碼]

以下是一些常用的數學運算子

語法 數學 運算名稱
a+b 加法
a-b 減法
a*b 乘法
a/b 除法(參見下面的備註)
a//b 向下取整 除法(例如 5//2=2) - 在 Python 2.2 及更高版本中可用
a%b 取模
-a 負值
abs(a) 絕對值
a**b 指數
math.sqrt(a) 平方根

備註
為了使用 math.sqrt() 函式,你必須明確告訴 Python 你希望它載入數學模組。為此,請在你的檔案頂部寫入

import math

有關此語句提供的其他功能,請參見 此處.

注意,由於 浮點數運算 的限制,舍入誤差可能會導致意外結果。例如

 >>> print(0.6/0.2)
 3.0
 >>> print(0.6//0.2)
 2.0

對於 Python 2.x 系列,/ 對整數和長整數進行“向下取整除法”(例如 5/2=2),但對浮點數和複數進行“真除法”(例如 5.0/2.0=2.5)。對於 Python 3.x,/ 對所有型別進行“真除法”。[1][2]

可以透過在常規除號周圍放置 round([math]-0.5) 來解決此問題,因為 Python 錯誤導致 round(0.5) 向下取整。

運算子 // 始終執行歐幾里得(或整數型別)除法,其中包括商項(從 // 運算子獲得)和餘數項(從 % 運算子獲得)。在前面的示例中,我們已經看到商項 0.6 // 0.22.0,這可以透過擴充套件上面的示例來驗證

 >>> 0.6 == 0.2 * ( 0.6 // 0.2 ) + 0.6 % 0.2
 True
 >>> 0.6 // 0.2
 2.0
 >>> 0.6 % 0.2
 0.19999999999999996

/// 運算子應用於小數時,它們之間的區別是由於 Python 中儲存小數的方式以及舍入方式造成的。

 >>> print(0.6 / 0.2)
 3.0
 >>> 0.6 / 0.2
 2.9999999999999996
 >>> 2.0 + ( 0.6 % 0.2 ) / 0.2
 3.0
 >>> 0.6 / 0.2 == ( 0.6 // 0.2 ) + ( 0.6 % 0.2 ) / 0.2
 False
 >>> round( 0.6 / 0.2 ) == ( 0.6 // 0.2 ) + ( 0.6 % 0.2 ) / 0.2
 True

運算順序

[編輯 | 編輯原始碼]

Python 使用高中或中學代數和幾何課上教授的標準運算順序。也就是說,數學表示式按以下順序計算(許多人將其記憶為 PEMDAS),這也適用於括號。

(請注意,在同一表格行中共享的運算從左到右執行。也就是說,在沒有括號的情況下,位於乘法左側的除法在乘法之前執行,僅僅因為它位於左側。)

名稱 語法 描述 PEMDAS 助記符
Parentheses(括號) ( ... ) 在對任何其他內容進行運算之前,Python 必須從最內層開始評估所有括號。(這包括函式。) Please(請)
Exponents(指數) ** 由於指數只是簡短的乘法或除法,因此應在它們之前進行評估。 Excuse(原諒)
Multiplication(乘法)和

Division(除法)

* / // % 再次強調,乘法是快速加法,因此必須先進行。 My

Dear

Addition and

Subtraction

+ - Aunt

Sally

格式化輸出

[編輯 | 編輯原始碼]

如果我們在進行數學運算時總是使用漂亮的整數,那該多好啊?不幸的是,現實世界並不像我們希望的那樣整潔。有時,我們會得到像下面這樣的長而難看的數字

What is your mass in kilograms? 65
You weigh 10.2142857143 stone.

預設情況下,Python 的 `print` 語句將數字列印到小數點後 10 位。但是,如果您只需要一位或兩位呢?我們可以使用 `round()` 函式,它將數字四捨五入到您選擇的位數。`round()` 接受兩個引數:您要四捨五入的數字,以及要四捨五入的小數位數。例如

>>> print (round(3.14159265, 2))
3.14

現在,讓我們更改程式,只將結果列印到小數點後兩位。

print ("You weigh", round(mass_stone, 2), "stone.")

這也展示了巢狀函式的概念。如您所見,您可以將一個函式放在另一個函式中,一切仍然按您的預期工作。如果您不喜歡這樣做,您可以始終使用多個變數,而不是

twoSigFigs = round(mass_stone, 2)
numToString = str(twoSigFigs)
print ("You weigh " + numToString + " stone.")

要了解有關更多格式化選項的資訊,請參閱輸入和輸出章節中的 格式化 部分。

  1. Python 2.2 中的新增功能
  2. PEP 238 - 更改除法運算子
華夏公益教科書