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) |
平方根 |
注意,由於 浮點數運算 的限制,舍入誤差可能會導致意外結果。例如
>>> 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.2 是 2.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.")
要了解有關更多格式化選項的資訊,請參閱輸入和輸出章節中的 格式化 部分。