內建函式 ( 輸入和輸出 )
本篇教學會介紹「輸入和輸出」的內建函式,藉由輸入 input 和輸出 print 函式,可以簡單地進行互動,並快速的測試程式執行是否正確。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
print(*objects, sep, end, file, flush)
print() 是 Python 負責將結果「輸出」的函式,將輸出的結果顯示在程式執行的命令列中,print 有下列幾個參數:
參數 | 說明 |
---|---|
*objects | 要印出的對象,可以用逗號分隔多個對象 |
sep | 預設為「一個空白」,表示每個分隔的對象,在印出時中間的間隔符號 |
end | 預設換行符「\n」,表示印出的結尾符號 |
file | 預設「None」,表示要寫入的文件對象 |
flush | 預設「False」,設定為 True 可以防止函式對輸出資料進行緩衝,並強行重新整理 |
下方的程式可以看到如果有設定 end,則會取代換行符,導致下一個 print 的結果和上一個連在一起。
print(1,2,3) # 1 2 3
print(1,2,3,sep=';') # 1;2;3
print(1,2,3,sep=';',end='!')
print(1,2,3) # 1;2;3!1 2 3
下面這段程式在「本機環境運作」,會看到「Loading」後方的「.」每隔 0.5 秒出現,若將 flush 移除或改為 False,會發現結果一次出現六個「.」( 因為雲端主機緩存的機制,在 Google Colab 看不出效果 )
import time
print('Loading',end = '')
for i in range(6):
print('.',end = '',flush = True)
time.sleep(0.5)
如果在 print 的內容前方加上「\r」的命令,就能讓每次印出時的游標位置,移動到該行的開頭,搭配 end 不換行的方式,就能做出類似「畫面更新」的效果,下方的程式碼執行後,會以像是「更新」的方式,每隔一秒顯示文字。
import time
n = 10
for i in range(n+1):
print(f'\r倒數 {n-i} 秒', end='')
time.sleep(1)
print('\r時間到', end='')
input(x)
執行 input(x) 後,命令列會顯示 x 內容,並等待使用者輸入內容,按下 enter 之後再進行下方的動作,按下 enter 之後,可將輸入的內容賦值給變數,進行後續的動作。
下方的程式碼執行後,輸入文字按下 enter,畫面上就會出現輸入的文字。
a = input('輸入文字:')
print('你輸入的是:'+a)
透過 input() 可以做出一些滿有趣的互動,利如下方的程式碼執行後,會要求輸入兩個數字,輸入結束就會顯示兩個數字加總的結果。
a = int(input('輸入第一個數字:'))
b = int(input('輸入第二個數字:'))
print(f'兩個數字相加結果是:{a+b}')
如果是要追求輸入的速度 ( 例如 ZeroJudge 裡的某些題目為了追求速度 ),也可使用標準函式庫 sys 的 stdin.readline() 進行輸入 ( 但 Colab 與 anaconda jupyter 都不支援 )
import sys
a = int(sys.stdin.readline())
b = int(sys.stdin.readline())
print(f'兩個數字相加結果是:{a+b}')
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~