I/O 輸入/輸出功能
2019/07/12 謝碧景(c)編製更新
學習目標
學會 print 輸出指令的設計與應用。
學會 input 輸入指令的設計與應用。參閱:官網 Python documentation
一、print 輸出指令
(一)輸出指定畫面
print 可將資料送到『標準輸出』上,若沒特別設定,即由電腦螢幕上顯示。語法如下:範例可採線上操作執行【 OnlineGDB 編撰指令→Language:python3】或【repl.it→python3】。
print (變數1[,變數2,…,sep=分隔字元,end=結束字元])
◆ 範例1:輸出畫面
print("小明年齡",16) #sep預設1個空白,end預設換列
print("小明年齡",16,sep="&") #sep分隔符號為&
print("小明年齡",16,"讀高一",sep="&",end="。") #結束字元為。
*註:以【 OnlineGDB 編撰指令→Language:python3】編撰範例。
循序(Sequence)結構:電腦會依循程式碼的順序,由上而下、依序執行每一行程式碼。
『#』為單行註解(即說明),可於程式列起始處,或程式列後方。多行註解,可於程式區塊前後分別加入3個單引號『'''』或3個雙引號『"""』。
字串值需以一對雙引號【" "】或單引號【' '】括起來。
(二) %字串格式化
舊版(python2.6以前)的字串格式化使用 string % data或 string % (data1, data2, …)
print 命令支援參數格式化功能。語法如下:
print (字串 % (參數列))
%d:以整數資料型態輸出。
%f:以浮點數資料型態輸出。
%s:以字串資料型態輸出。
%%:在字串中顯示「%」。
%e 或 %E:以科學符號方式輸出。
◆ 範例2:以 % 字串格式化輸出。
name,age,sc="小明",16,78.45
print("%s年齡 %d 讀高一。" % (name,age))
print("%s年齡%3d 讀高一。" % (name,age)) #3d固定3個字元,若少於3位則數字左方填入空白,若大於3位則全部輸出
print("成績為%7.2f為及格。" % (sc)) #%7.2固定7個字元(含小數點),小數固定2位,整數4位會左方填空白
print("成績為%-7.2f為及格。" % (sc)) #%-7.2,空白會填入右方
(三) format 字串格式化
新版(python2.6以後),建議以 format 方法設定字串格式化。語法如下:
print ( 字串.format (參數列))
在字串中以一對大括號 { } 表示參數的位置。
若有多個參數,可在大括號 { }中編排參數順序,由0開始算起。
欲細部設定字串的參數格式,可在大括號內設定,例如 {參數順序:格式設定 },格式設定請參閱:%字串格式化。其差異在 format 不用特別標明變數的資料型態,當指定字元個數大於實際字數時,若為字串則靠左對齊,若為數字則靠右對齊。
◆ 範例3:以 format 字串格式化輸出。
name,age,sc="小明",16,78.45
print ("{}年齡{}讀高一。".format(name,age)) #左右大刮號 {}是一個佔位符號
print ("年齡{1}歲的{0}讀高一。".format(name,age))
print ("{0}成績{1}為及格。".format(name,sc))
print ("{0:3}成績{1:7}為及格。".format(name,sc))
print ("{:3}成績{:6.2f}為及格。".format(name,sc))
二、input 輸入指令
(一)語法
input 是讓使用者由『標準輸入』裝置輸入資料,若沒特別設定,即為鍵盤。
執行時使用者需先輸入變數資料,後按下【Enter鍵】,輸入的資料即存入變數中。
input 輸入的資料為字串型態,若欲算術運算,則需先以 int 或 float 強制轉換為數值型態後,再運算(參閱:資料型態強制轉換 )。
若欲一次輸入多個資料算術運算時,需使用eval函式先將字串轉換為數值後才能計算,而且輸入資料時,要以逗號隔開變數值。
變數=input ([提示字串]) #輸入資料為字串型態
◆例1:r=input("輸入圓半徑") #輸入的資料為字串型態
◆例2:一次輸入多個變數值,輸入資料時,請以『,』逗號隔開變數值。
for line in sys.stdin:
a,b,c=line.split()
print("a=%s b=%s c=%s" % (a,b,c))
print("a+b=",float(a)+float(b))
(二)輸入資料為字串型態
因 input 輸入的資料為字串型態,需先強制轉換為數值型態後,才能算術運算。
◆範例4:輸入兩數,並輸出其算術運算結果。(檔名:input-4.py)
方法一:資料型態強制轉換
a=int(input("輸入a="))
b=int(input("輸入b(不可為0)="))
print("a+b=",a+b) #兩運算元相加
print("a-b=",a-b) #兩運算元相減
print("a*b=",a*b) #兩運算元相乘
print("a/b=",a/b) #兩運算元相除,b不能為零
print("a%b=",a%b) #求餘數
print("a//b=",a//b) #求整除的商數
print("a**b=",a**b) #求a^b次方
方法二:eval 函式,將字串轉換為數值。
*註:運算子/、%、//的第2個運算元不可為0,否則執行時會出現「ZeroDivisionError: division by zero」。
§實作練習
一、輸入圓半徑,求圓面積、及圓周長。【提示:圓半徑 r,圓周率p=3.14159,則圓面積是pr2,圓周長為2pr】(檔名:ex1.py)
三、求梯形面積。【提示:梯形面積=(上底+下底)*高/2】(檔名:ex3.py)
四、輸入 a,b,c,X ,求aX2+bX+c (檔名:ex4.py)
五、請輸入時間之秒數,轉換成 [時:分:秒] 格式輸出。【提示:1小時3600秒,1分鐘60秒,參閱:運算子→比較 //(取整數商) 及 %(取餘數)的差異】(檔名:ex5.py)
六、輸入一個3位數的整數,並請倒著輸出此3位數值。【提示:運算子→比較 //(取整數商) 及 %(取餘數)的差異】(檔名:ex6.py)