Semorphe

讀進來

讓程式問使用者要資料。 · ⏱ 約 20 分鐘

你會學到三件事

  1. input() 讓程式停下來等人打字
  2. 🔴 它讀進來的一定是文字,即使你打的是數字
  3. + 用在文字上是「接起來」

開始之前

上一課的資料是寫死的:

name = "小明"

這一課要讓使用者決定它。

一、停下來等

name = input()

執行到這一行,程式會停住,主控台出現一個等你打字的地方。

打完按 Enter,你打的東西就會被放進 name

⚠️ 括號不能省。 input 沒有括號的話,你拿到的是那個函式本身,不是它的結果。

可以順便給一句提示:

name = input("請輸入你的名字:")

二、🔴 讀進來的一定是文字

n = input()      # 打 5
print(n + 1)     # 💥 TypeError

即使你打的是 5n 裡面裝的是文字 "5",不是數字 5

因為 Python 不知道你想要什麼——它只知道你打了幾個字元

要當成數字用,得自己說:

n = int(input())     # 讀進來 → 轉成整數
print(n + 1)         # 6
轉成
int(x) 整數
float(x) 小數
str(x) 文字

⚠️ int("abc") 會出錯(那不是數字)。怎麼處理它是第 11 課的事, 現在先假設使用者會乖乖打數字。

三、+ 用在文字上是接起來

print("你好," + name)

+ 對數字是相加,對文字是接起來。同一個符號,兩種意思。

⚠️ 兩邊型別要一樣

print("我今年 " + 16)          # 💥 TypeError
print("我今年 " + str(16))     # ✅
print("我今年", 16)            # ✅ 逗號更省事
差別
+ 直接黏起來,兩邊都要是文字
, 自動加一個空格,什麼型別都吃

大部分時候用逗號就好。

完成的樣子

name = input()
print("你好," + name)
print("歡迎")

換你了

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

⚠️ 先不要用 int(...) 試一次——你會看到 "5" * 2 得到 "55" (文字乘數字是「重複」)。而它不會報錯。

這一課你做了什麼

如果卡住了

你看到 多半是因為
程式沒停就跑完了 input() 的括號漏了
TypeError: can only concatenate str + 接了文字和數字。轉型或改用逗號
"5" * 2 得到 "55" 那是「重複」。要先 int(...)
ValueError: invalid literal for int() 使用者打的不是數字(第 11 課處理)
在編輯器打開這一課 →