iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Software Development

跟著 OXXO 一起學 Python系列 第 4

( Day 4.1 ) Python 輸入和輸出

  • 分享至 

  • xImage
  •  

本篇教學會介紹「輸入和輸出」的內建函式,藉由輸入 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)

Python 教學 - 內建函式 ( 輸入和輸出 ) - print

如果在 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='')

Python 教學 - 內建函式 ( 輸入和輸出 ) - 加上 \r 命令

input(x)

執行 input(x) 後,命令列會顯示 x 內容,並等待使用者輸入內容,按下 enter 之後再進行下方的動作,按下 enter 之後,可將輸入的內容賦值給變數,進行後續的動作。

下方的程式碼執行後,輸入文字按下 enter,畫面上就會出現輸入的文字。

a = input('輸入文字:')
print('你輸入的是:'+a)

Python 教學 - 內建函式 ( 輸入和輸出 ) - input

透過 input() 可以做出一些滿有趣的互動,利如下方的程式碼執行後,會要求輸入兩個數字,輸入結束就會顯示兩個數字加總的結果。

a = int(input('輸入第一個數字:'))
b = int(input('輸入第二個數字:'))
print(f'兩個數字相加結果是:{a+b}')

Python 教學 - 內建函式 ( 輸入和輸出 ) - input 互動

如果是要追求輸入的速度 ( 例如 ZeroJudge 裡的某些題目為了追求速度 ),也可使用標準函式庫 sys 的 stdin.readline() 進行輸入 ( 但 Colab 與 anaconda jupyter 都不支援 )

參考:8 speed differences you need to know in Python

import sys
a = int(sys.stdin.readline())
b = int(sys.stdin.readline())
print(f'兩個數字相加結果是:{a+b}')

更多教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 3 ) Python 全域變數、區域變數
下一篇
( Day 4.2 ) Python 縮排和註解
系列文
跟著 OXXO 一起學 Python101
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言