Operation 運算的世界

來源:Taiwan Code School 編輯:冠樺 時間:2018/09/02 版本:Python3

第一部分:算數的運算

python就像一台計算機,你想的到的運算方式,都可以請它試試看哦!

運算符號的家族有:加、減、乘、除、次方、取整數、取餘數。

在電腦的鍵盤上面,

  • + 號代表「加法」
  • - 號代表「減法」
  • * 號代表「乘法」
  • / 右至左斜線 代表「除法」
  • ** 兩個星號代表「次方」
  • % 百分比符號 代表「取出除法中的餘數部分」
  • // 兩個斜線 代表「取出除法中的整數部分」

接下來,就讓我們來欣賞Python的表演吧!

In [1]:
a = 10
b = 2

c = a + b
print('a + b = ', c )

c = a - b
print('a - b = ', c )

c = a * b
print('a * b = ', c )

c = a / b
print('a / b = ', c )

c = a ** b
print('a ** b = ', c )

c = a % b
print('a % b = ', c )

c = a // b
print('a // b = ', c )
a + b =  12
a - b =  8
a * b =  20
a / b =  5.0
a ** b =  100
a % b =  0
a // b =  5

很厲害吧!

在這裡,比較需要注意到的是,運算除法之後的結果,Python都會自動自發的變成浮點數(float型態)(有小數點的數字),所以a/b時的輸出是5.0而不是5。

In [2]:
answer = 1 + 2 ** 3 / 4 % 5

考考你!上面這個運算式,python會先從哪裡開始算呢?

長幼有序

在運算的世界中,是有先後順序的。因為有些運算符號的 地位 比較大,Python會先計算它。

還記得數學課老師常說的「先乘除後加減」嗎?

沒錯。但是更精確的順序是:

  1. 由左至右
  2. 括號優先
  3. 次方
  4. 乘除、除法取整數、除法取餘數
  5. 加減

根據剛才的小題目,來看看計算的順序吧!

1 + 2 ** 3 / 4 % 5 →由左至右,次方要先,所以先算 2 ** 3 = 8。

1 + 8 / 4 % 5 → 由左至右,再來是乘除,8 / 4 = 2。

1 + 2 % 5 → 2 除以 5 取餘數 = 2

1 + 2 →最後加減 1 + 2 = 3

3 →答案出現囉!但因為有除法的關係,python會自動變成小數點的數字,所以是3.0。

答對了嗎?

In [3]:
print(answer)
3.0

小技巧

要專業一點的話,當要寫 a = a + 1時,也可以寫成 a += 1。「+=」就是所謂的賦值符。

In [4]:
a = 10
b = 2

a += b 
print('a += b ----- 10 += 2,所以 a =',a)

a -= b 
print('a -= b ----- 12 -= 2,所以 a =',a)

a *= b 
print('a *= b ----- 10 *= 2,所以 a =',a)

a /= b 
print('a /= b ----- 20 /= 2,所以 a =',a)

a **= b 
print('a ** b ----- 10 **= 2,所以 a =',a)

a //= b 
print('a =+ b ----- 100 //= 2,所以 a =',a)

a %= b 
print('a %= b ----- 50 %= 2,所以 a =',a)
a += b ----- 10 += 2,所以 a = 12
a -= b ----- 12 -= 2,所以 a = 10
a *= b ----- 10 *= 2,所以 a = 20
a /= b ----- 20 /= 2,所以 a = 10.0
a ** b ----- 10 **= 2,所以 a = 100.0
a =+ b ----- 100 //= 2,所以 a = 50.0
a %= b ----- 50 %= 2,所以 a = 0.0

第二部分:比較的運算

如果有兩個東西需要比較看看誰大誰小的話,python也超會的。

比較的符號有:

  • > 大於
  • < 小於
  • == 等於 (注意兩個等於符號在一起==,才是數學上相等的意思,如果只有一個等於=,python會認為是變數的命名哦)
  • >= 大於等於
  • <= 小於等於
  • <> 或 =! 不等於

但是python的話不多,它只會告訴你 「是」 或 「否」 ( True 或 False )

如何請python進行比較呢?

In [5]:
a = 350
b = 7
print('a > b 嗎? ', a > b)
print('a < b 嗎?', a < b) 
print('a == b 嗎?', a == b)
print('a >= b 嗎?', a >= b)
print('a <= b 嗎?', a <= b)
print('a != b 嗎?', a != b)
a > b 嗎?  True
a < b 嗎? False
a == b 嗎? False
a >= b 嗎? True
a <= b 嗎? False
a != b 嗎? True

小技巧

如果遇到錯誤,不要慌!也不要氣餒,Python只是要告訴你它迷失了方向,請你再給明確一點的指示而已呦。

In [6]:
number = 100
text_number = '68'
print(number + text_number)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-b0751cb04c1f> in <module>()
      1 number = 100
      2 text_number = '68'
----> 3 print(number + text_number)

TypeError: unsupported operand type(s) for +: 'int' and 'str'

當python迷路時,它會停在原地無聲地哭XD,啊不是啦!它是在努力的告訴你它怎麼了。

仔細看上面的錯誤訊息,python告訴你說,它在第三行那裡迷路了,而最下面的一行,就會告訴你是TypeError(型態有問題囉),原來是不同的資料類型,int(整數)不能和str(字串)一起做運算。

In [7]:
print('number 的資料型態是',type(number))
print('text_number 的資料型態是' ,type(text_number))
number 的資料型態是 <class 'int'>
text_number 的資料型態是 <class 'str'>

你可以用python的功能type(),來檢查這個變數,是什麼型態。

還可以使用資料型態轉換的功能:

  • int()把資料轉換成整數
  • str()把資料轉換成字串
In [8]:
to_number = int(text_number)
print('使用int(text_number),所以 text_number 的資料型變成是 ',type(to_number))

back_to_str = str(text_number)
print('使用str(back_to_str),所以 back_to_str 的資料型態變成是 ',type(back_to_str))
使用int(text_number),所以 text_number 的資料型變成是  <class 'int'>
使用str(back_to_str),所以 back_to_str 的資料型態變成是  <class 'str'>