Semorphe

算一算

七個運算子,兩個要特別小心。 · ⏱ 約 25 分鐘

你會學到三件事

  1. 七個算術運算子
  2. 🔴 / 和 // 不一樣
  3. += 是「拿出來、算一下、放回去」的縮寫

開始之前

前三課你會存資料、讀資料了。這一課讓它們變。

🟢 先把編輯器打開,跟著下面一起做:跟著做

一、七個

照著打上這幾行,把七種運算各印一次:

1a = 72b = 23print(a + b)      # 94print(a - b)      # 55print(a * b)      # 146print(a / b)      # 3.5    ← 除7print(a // b)     # 3      ← 整數除8print(a % b)      # 1      ← 餘數9print(a ** b)     # 49     ← 次方
72變數a變數b+變數a變數b-變數a變數b×變數a變數b÷變數a變數b整除變數a變數b取餘數變數a變數b次方印出印出印出印出印出印出印出設定b為設定a為123456789

二、🔴 / 和 //

兩條斜線與一條斜線不是同一件事:

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

17 / 2      # 3.5   ——永遠是小數(float)27 // 2     # 3     ——把小數點後面丟掉
72÷72整除12

⚠️ / 就算除得盡也是小數:

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

1print(6 / 2)      # 3.0   ← 不是 32print(6 // 2)     # 3
62÷62整除印出印出12

所以「我要一個整數答案」的時候用 //。

⚠️ // 不是四捨五入,是往下取整:

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

1print(7 // 2)     # 32print(-7 // 2)    # -4    ← 🔴 不是 -3
72整除7取負2整除印出印出12

負數那個很容易被忘掉。

三、% 取餘數

餘數用 %:

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

1print(7 % 2)      # 1
72取餘數印出1

它比你現在想的有用得多:

寫法 判斷什麼
n % 2 == 0 是不是偶數
n % 10 個位數
n % 3 == 0 是不是 3 的倍數

四、順序和括號

和數學一樣:** 最先、然後 * / // %、最後 + -。

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

1print(2 + 3 * 4)        # 14,不是 202print((2 + 3) * 4)      # 20
234×+23+4×印出印出12

記不住就加括號,括號永遠不會是錯的。

五、+=

這是同一件事的簡寫:

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

1total = 02total = total + 5
0變數total5+設定total為設定total為12

第二行從右往左讀:先算 total + 5,再放回 total。

它太常用了,所以有縮寫:

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

1total += 5      # 完全等於 total = total + 5
變數total5把加上1

五個都有:+= -= *= /= //= %=

⚠️ Python 沒有 ++。 寫 n++ 是語法錯誤,要用 n += 1。

完成的樣子

這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。

1a = 72b = 23print(a + b)4print(a - b)5print(a * b)6print(a / b)7print(a // b)8print(a % b)9print(a ** b)
72變數a變數b+變數a變數b-變數a變數b×變數a變數b÷變數a變數b整除變數a變數b取餘數變數a變數b次方印出印出印出印出印出印出印出設定b為設定a為123456789

把積木打散,自己排回去:排回去:把剛才那支程式的積木排好

換你了

讀進一個三位數,分別印出它的百位、十位、個位。

⚠️ 裁判餵的是 456。 ⚠️ 提示:個位是 n % 10,十位是 n // 10 % 10,想一下為什麼。

到編輯器做這一題:練習:拆出百位、十位、個位

做一個

讀進一個金額,印出要給幾張 500、100、50、10、5、1(六行,由大到小)。

🔴 這一題一定要用 // 不能用 /,試試看用 / 會印出什麼。 ⚠️ 裁判用的是 1688。

到編輯器做這一題:做一個:找零錢

這一課你做了什麼

如果卡住了

你看到 多半是因為
6 / 2 印出 3.0 / 一定是小數。要整數用 //
-7 // 2 得到 -4 那是對的——往下取整,不是四捨五入
n++ 語法錯誤 Python 沒有 ++。用 n += 1
答案和預期差很多 運算順序。加括號
% 對小數怪怪的 浮點數本來就有誤差。取餘數盡量用整數
在編輯器打開這一課 →