KT 的 Python 進階程式設計
本頁目錄

Python 輸入輸出技巧

遇到不熟悉的輸入輸出格式時,不必從頭閱讀。先判斷問題發生在「輸入」還是「輸出」,再從左側目錄找到最接近題目的格式。

每種格式依序提供題目範例、目前推薦寫法、簡短說明與常見錯誤。精簡或較進階的寫法會折疊起來,不需要一次全部記住。

一、輸入格式

input()每次讀取一整行,而且讀進來的資料一開始都是文字(str)。需要計算時,再依題意轉成int或float。

1. 每行只有一筆資料

題目可能出現的格式

資料/示意
12
35

目前推薦寫法

Python 3圖片

題目有兩行輸入,因此依序執行兩次input()。如果資料是小數,將int()改成float();如果要保留文字,就直接使用input()。

常見錯誤

  • 在input()中加入題目沒有要求的「請輸入」等提示文字。
  • 題目提供小數,卻使用int()讀取。
  • 題目有兩行資料,卻只執行一次input()。

2. 同一行有固定數量的資料

題目可能出現的格式

資料/示意
12 35

目前推薦寫法

Python 3圖片

這裡只有一次input()。split()按照空白切開資料,first和second依序接住兩段文字,再分別使用int()轉成整數。

請先看懂「讀取整行 → 按空白切開 → 分別接住 → 轉成整數」四個步驟,再考慮下方的精簡寫法。

常見錯誤

  • 因為有兩個數字,就誤用兩次input()。
  • 忘記split()得到的仍是文字,直接拿來做數值計算。
  • 忘記左邊需要兩個變數,才能分別接住切開後的兩筆資料。
學過map()後的精簡寫法
Python 3圖片

這一行會先切開輸入,再把兩筆資料都轉成整數,最後依序交給first與second。兩個變數仍是獨立的整數,這段程式沒有建立整數串列。

這只是較短的寫法,不會取代讀取、切割、取出與轉型的觀念。還不熟悉map()時,繼續使用分步寫法即可。

3. 資料使用逗號或其他符號分隔

題目可能出現的格式

資料/示意
12,35

目前推薦寫法

Python 3圖片

split()沒有填入內容時按照空白切割;題目使用逗號時,就在括號中指定逗號。

常見錯誤

  • 題目使用逗號,程式卻仍寫成split()。
  • 資料需要保留為文字時,沒有注意逗號後的空白也可能留在文字內容中;若接著使用int()轉成整數,前後空白通常可以正常處理。
  • 把輸入使用的分隔符號誤認為輸出也必須使用相同符號。

4. 已知共有幾筆,接著逐行輸入

題目可能出現的格式

資料/示意
3
72
85
63

第一行的3表示後面還有三筆資料。

目前推薦寫法

Python 3圖片

input()放在迴圈內,因此會隨著迴圈執行n次。

常見錯誤

  • 把逐筆輸入寫在迴圈外,最後只讀到一筆。
  • 使用range(n + 1),導致多讀一行。
  • 迴圈內只輸入資料,卻忘記同步處理或累積。

5. 同一行有多筆同類資料

題目可能出現的格式

資料/示意
12 35 8 24 19

目前推薦寫法

Python 3圖片

即使題目告訴你總共有幾筆,也不適合替每一筆各取一個變數名稱。先用串列保存切割後的所有資料,再逐項轉型。

常見錯誤

  • 尚未學過串列,就只背誦這段程式而不知道data[i]的意義。
  • 忘記逐項轉型,導致數字按照文字規則比較。
  • 題目其實是一行一筆,卻誤以為所有資料都在同一行。
學過map()後的精簡寫法
Python 3圖片

6. 不知道筆數,讀到EOF為止

有些題目不先提供資料筆數,而是讀到檔案結束(EOF)為止。

目前推薦寫法

Python 3圖片

常見錯誤

  • 寫成空白的except,把其他程式錯誤也一起隱藏。
  • 誤以為沒有資料筆數就一定要使用EOF;應先仔細閱讀題目的輸入說明。
  • 在尚未理解while與例外處理前,把模板改壞卻不知道錯誤位置。

二、輸出格式

print()可以一次輸出多個項目,預設會在相鄰項目之間加入一個空白,並在整行結束後換行。

1. 一行或多行輸出結果

題目要求分成兩行

資料/示意
12
35

目前推薦寫法

Python 3圖片

如果題目要求兩行,就使用兩次print()。

常見錯誤

  • 使用print(first, second),把原本的兩行輸出成同一行。
  • 加入答案是等題目沒有要求的文字。
  • 輸出順序與題目要求相反。

2. 同一行使用空白分隔

題目要求的格式

資料/示意
12 35

目前推薦寫法

Python 3圖片

print()預設會在兩個項目之間加入一個空白,因此不需要自己拼接空白字串。

常見錯誤

  • 使用兩次print(),變成兩行。
  • 自行加入多個空白,造成格式不符。
  • 把兩個整數直接使用+連接,結果變成數值加法。

3. 使用逗號或指定符號分隔

題目要求的格式

資料/示意
12,35

目前推薦寫法

Python 3圖片

sep控制相鄰輸出項目之間的內容。若要求12, 35,分隔文字應改成", "。

輸出算式且不能有空白時:

Python 3圖片

常見錯誤

  • 沒注意逗號後是否需要空白。
  • 將sep寫在print()外面。
  • 題目只要求一般空白,卻多加不必要的格式設定。

4. 連續輸出而不立即換行

題目要求的格式

資料/示意
A B

目前推薦寫法

Python 3圖片

end控制一次print()結束後接續的內容。預設的end是換行。

常見錯誤

  • 每次都使用end=" ",造成最後多出一個空白或缺少換行。
  • 把end誤認為項目之間的分隔;多個參數之間應使用sep。
  • 在迴圈中輸出時沒有另外處理最後一項。

5. 固定小數位數或前方補零

小數點後兩位

資料/示意
0.67
Python 3圖片

日期補零

資料/示意
2026/03/08
Python 3圖片

常見錯誤

  • 把顯示到兩位小數誤認為變數本身只剩兩位小數。
  • 大括號、冒號或小數點的位置寫錯。
  • 題目沒有要求固定小數位數,卻自行格式化。

6. 輸出串列中的所有資料

題目要求以空白分隔

資料/示意
1 2 3 4 5

目前推薦寫法

Python 3圖片

在print()的參數位置使用*numbers,會把串列中的元素分別送入print()。

*只改變這一次傳給print()的方式,不會修改原本的numbers串列。

常見錯誤

  • 直接寫print(numbers),輸出中出現中括號與逗號。
  • 忘記題目指定的分隔符號。
  • 尚未學過串列,就只背誦*的寫法。
串列內容都是文字時,也可以使用join()
Python 3圖片

join()只能直接連接文字;數字必須先轉成文字。

三、提交前快速檢查

  1. 每一行需要執行幾次input()?
  2. 同一行有幾筆資料?使用空白、逗號還是其他符號分隔?
  3. 每筆資料要保持文字,還是轉成int或float?
  4. 輸出應該是一行還是多行?
  5. 輸出項目之間應該是空白、逗號,還是不能有分隔?
  6. 是否要求固定小數位數、補零或不能換行?
  7. 是否誤加了提示文字或除錯用的額外輸出?
  8. 大小寫、空格、小數位數與輸出順序是否完全符合題目?