Semorphe

沒有型別,也沒有 main

同一件事,少寫很多字。 · ⏱ 約 25 分鐘

你會學到三件事

  1. Python 沒有 main——程式從第一行開始跑
  2. 宣告變數不用寫型別
  3. print 一次可以印好幾樣東西

開始之前

⚠️ 右下角的目標選 Python。

這一課假設你已經會 C++。它不是從零開始,是從「你已經知道要做什麼」開始 ——所以走得快,而每一步都會指出「這和 C++ 差在哪」。

🟢 先把編輯器打開,跟著下面一起做。 讀完再打開的話,下面每一段你都得先記起來——而那不是這個工具要你做的事。

到編輯器打開這一課:跟著做

一、程式從第一行開始

C++ 那邊:

int main() {
    cout << "hi" << endl;
    return 0;
}

Python:

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

1print("hi")
"hi"印出1

沒有 main、沒有 return 0、沒有大括號、沒有分號。

程式就是從檔案的第一行跑到最後一行。

⚠️ 而 main 那件事沒有消失,只是換了位置—— C++ 需要它是因為「有很多段程式,要指定從哪裡開始」。 Python 的答案是「從這個檔案的開頭」。

二、不用寫型別

Python 宣告變數不寫型別:

1name = "Semorphe"2age = 16
"Semorphe"16設定age為設定name為12

沒有 string、沒有 int。

積木盤上這一顆寫著「設定 … 為 …」——C++ 那邊叫「建立 … 變數」, 而 Python 這邊少了型別那一格。

⚠️ 這不代表 Python 沒有型別。 age 仍然是一個整數, age + 1 得到 17、name + 1 會出錯。

差別在於誰來說:

誰決定型別
C++ 你在宣告時說
Python 值自己帶著

所以同一個名字可以先裝數字、之後裝文字——這是方便,也是危險。 一個變數在第 50 行變成別的東西,而沒有任何地方會提醒你。

三、print 吃很多樣東西

print 什麼都印得出來:

1print(name)2print(age + 1)3print("你好", name)      # 逗號隔開,自動加空格
變數name變數age1+"你好"變數name印出印出印出123

⚠️ print 自動換行——不用 endl。 不要換行的話寫 print(x, end="")。

四、讀進來

讀一行進來用 input():

1name = input()
讀一行輸入,提示設定name為1

⚠️ input() 讀進來的一定是文字,即使你打的是數字。

🚫 這一段是反例——課文在說不要這樣寫,別照著拉。

1n = input()        # 打 5 → n 是 "5",不是 52print(n + 1)       # 💥 出錯:文字不能加數字3print(int(n) + 1)  # ✅ 6
讀一行輸入,提示變數n1+變數n把轉成整數1+印出印出設定n為123

C++ 的 cin >> n 會依 n 的型別自動轉,而 Python 不會 ——因為它不知道你想要什麼。要自己說 int(...)。

完成的樣子

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

1name = input()2age = 163print(name)4print(age + 1)
讀一行輸入,提示16變數name變數age1+印出印出設定age為設定name為1234

換你了

讀進一個數字,印出它的兩倍。

⚠️ 提示:input() 給的是文字。直接乘 2 的話你會得到 「那段文字重複兩次」("5" * 2 是 "55")——而它不會報錯。

到編輯器做這一題:練習:讀進一個數字,印出兩倍

做一個

讀進兩個整數,依序印出和、差、積。

🔴 這一題你在 C++ 那邊寫過(入門第 3 課)。把兩份並排看一下: 沒有 #include、沒有 main、沒有型別、沒有分號——而做的是同一件事。 ⚠️ 裁判用的是 7 和 3。

到編輯器做這一題:做一個:兩個數字的和差積

這一課你做了什麼

如果卡住了

你看到 多半是因為
IndentationError 行首多了空白。Python 的縮排是有意義的(下一課)
"5" + 1 出錯 input() 給的是文字。要 int(...)
"5" * 2 得到 "55" 文字乘數字是「重複」。這一個不會報錯
print 多了空行 Python 的 print 自己會換行,不用再加
在編輯器打開這一課 →