沒有型別,也沒有 main
同一件事,少寫很多字。 · ⏱ 約 25 分鐘
你會學到三件事
- Python 沒有
main——程式從第一行開始跑
- 宣告變數不用寫型別
print 一次可以印好幾樣東西
開始之前
⚠️ 右下角的目標選 Python。
這一課假設你已經會 C++。它不是從零開始,是從「你已經知道要做什麼」開始
——所以走得快,而每一步都會指出「這和 C++ 差在哪」。
🟢 先把編輯器打開,跟著下面一起做。 讀完再打開的話,下面每一段你都得先記起來——而那不是這個工具要你做的事。
到編輯器打開這一課:跟著做
一、程式從第一行開始
C++ 那邊:
int main() {
cout << "hi" << endl;
return 0;
}
Python:
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
沒有 main、沒有 return 0、沒有大括號、沒有分號。
程式就是從檔案的第一行跑到最後一行。
⚠️ 而 main 那件事沒有消失,只是換了位置——
C++ 需要它是因為「有很多段程式,要指定從哪裡開始」。
Python 的答案是「從這個檔案的開頭」。
二、不用寫型別
Python 宣告變數不寫型別:
1name = "Semorphe"2age = 16
沒有 string、沒有 int。
積木盤上這一顆寫著「設定 … 為 …」——C++ 那邊叫「建立 … 變數」,
而 Python 這邊少了型別那一格。
⚠️ 這不代表 Python 沒有型別。 age 仍然是一個整數,
age + 1 得到 17、name + 1 會出錯。
差別在於誰來說:
|
誰決定型別 |
| C++ |
你在宣告時說 |
| Python |
值自己帶著 |
所以同一個名字可以先裝數字、之後裝文字——這是方便,也是危險。
一個變數在第 50 行變成別的東西,而沒有任何地方會提醒你。
三、print 吃很多樣東西
print 什麼都印得出來:
1print(name)2print(age + 1)3print("你好", name) # 逗號隔開,自動加空格
⚠️ print 自動換行——不用 endl。
不要換行的話寫 print(x, end="")。
四、讀進來
讀一行進來用 input():
⚠️ input() 讀進來的一定是文字,即使你打的是數字。
🚫 這一段是反例——課文在說不要這樣寫,別照著拉。
1n = input() # 打 5 → n 是 "5",不是 52print(n + 1) # 💥 出錯:文字不能加數字3print(int(n) + 1) # ✅ 6
C++ 的 cin >> n 會依 n 的型別自動轉,而 Python 不會
——因為它不知道你想要什麼。要自己說 int(...)。
完成的樣子
這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。
1name = input()2age = 163print(name)4print(age + 1)
換你了
讀進一個數字,印出它的兩倍。
⚠️ 提示:input() 給的是文字。直接乘 2 的話你會得到
「那段文字重複兩次」("5" * 2 是 "55")——而它不會報錯。
到編輯器做這一題:練習:讀進一個數字,印出兩倍
做一個
讀進兩個整數,依序印出和、差、積。
🔴 這一題你在 C++ 那邊寫過(入門第 3 課)。把兩份並排看一下:
沒有 #include、沒有 main、沒有型別、沒有分號——而做的是同一件事。
⚠️ 裁判用的是 7 和 3。
到編輯器做這一題:做一個:兩個數字的和差積
這一課你做了什麼
- 你寫了一支沒有
main 的程式
- 你宣告了不帶型別的變數,而知道型別仍然存在
- 你用
input() 讀進了文字,並知道要自己轉型
如果卡住了
| 你看到 |
多半是因為 |
IndentationError |
行首多了空白。Python 的縮排是有意義的(下一課) |
"5" + 1 出錯 |
input() 給的是文字。要 int(...) |
"5" * 2 得到 "55" |
文字乘數字是「重複」。這一個不會報錯 |
print 多了空行 |
Python 的 print 自己會換行,不用再加 |
在編輯器打開這一課 →