縮排就是區塊
大括號不見了,而縮排變成語法。 · ⏱ 約 25 分鐘
你會學到三件事
- 縮排就是 C++ 的大括號——它不是排版,是語法
elif、and、or、not
- Python 可以寫
1 <= x <= 10,而它是對的
開始之前
C++ 入門第 9 課那個坑還記得嗎——
if (score >= 60)
cout << "及格" << endl;
cout << "恭喜" << endl; // ← 這一行無條件會跑
縮排騙了你,因為 C++ 不看縮排。
Python 把這件事反過來:縮排就是唯一的依據,所以它騙不了你。
🟢 先把編輯器打開,跟著下面一起做:跟著做
一、冒號 + 縮排
沒有大括號——冒號之後靠縮排:
1if score >= 60:2 print("及格")
| C++ |
Python |
if (條件) { |
if 條件: |
} |
縮排結束 |
| 條件要括號 |
不用括號 |
⚠️ 冒號不能少,而它是 Python 裡最常忘的一個字元。
⚠️ 縮排要一致。習慣是 4 個空格。混用 tab 和空格會得到
TabError——那是 Python 少數幾個「看起來一樣而不一樣」的坑。
二、elif
第三種以上的情況用 elif:
1if score >= 90:2 print("優等")3elif score >= 60:4 print("及格")5else:6 print("不及格")
elif 就是 else if 縮寫成一個字。
⚠️ 沒有 else if 這種寫法——寫了會是語法錯誤。
三、用字,不用符號
| C++ |
Python |
&& |
and |
|| |
or |
! |
not |
true / false |
True / False(大寫開頭) |
&& 在 Python 裡寫成 and:
1if 1 <= x <= 10 and score > 0:2 print("在範圍內")
四、🟢 1 <= x <= 10 在這裡是對的
C++ 入門第 6 課特別警告過:在 C++ 裡 1 <= a <= 10 永遠成立,
因為它被拆成 (1 <= a) <= 10。
而在 Python 裡——它就是你想的那個意思。
C++ 裡這樣寫是錯的,而 Python 認得:
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
11 <= x <= 10 # 等於 1 <= x and x <= 10
這叫「鏈式比較」,是 Python 特別做的一件事。
同一段文字,兩個語言,兩個不同的答案。
這就是為什麼「會寫程式」不等於「會寫這個語言」。
完成的樣子
這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。
1score = 752if score >= 90:3 print("優等")4elif score >= 60:5 print("及格")6else:7 print("不及格")8 9x = 510if 1 <= x <= 10 and score > 0:11 print("在範圍內")
換你了
把它改成讀進使用者輸入的分數。
⚠️ 記得 input() 給的是文字(上一課那件事)。
到編輯器做這一題:練習:改成讀進使用者輸入的分數
做一個
讀進一個分數:90 到 100 印「優等」,60 到 89 印「及格」,其餘印「不及格」。
🔴 規定要用 90 <= score <= 100 這種連寫的比較,不准用 and 串。
C++ 那邊寫 90 <= score <= 100 會編得過而算出錯的答案——想一下為什麼。
⚠️ 裁判用的是 95。
到編輯器做這一題:做一個:成績分級(用 Python 的寫法)
這一課你做了什麼
- 你用縮排取代了大括號
- 你用
and / or / not 取代了符號
- 你寫了一個在 C++ 裡會錯、在 Python 裡對的鏈式比較
如果卡住了
| 你看到 |
多半是因為 |
SyntaxError 指著 if 那行 |
冒號忘了 |
IndentationError |
縮排不一致,或該縮沒縮 |
TabError |
tab 和空格混用了。全部改成 4 個空格 |
NameError: true |
Python 是 True,大寫開頭 |
else if 語法錯誤 |
Python 只有 elif |
在編輯器打開這一課 →