I/O 輸入/輸出功能

2019/07/12 謝碧景(c)編製更新

學習目標

一、print 輸出指令

(一)輸出指定畫面

  • print 可將資料送到『標準輸出』上,若沒特別設定,即由電腦螢幕上顯示。語法如下:範例可採線上操作執行【 OnlineGDB 編撰指令Languagepython3repl.it→python3】。

print (變數1[,變數2,…,sep=分隔字元,end=結束字元])

    • 變數1,變數2,…:print可輸出一個或多個變數值,變數間需以『,』逗號隔開。變數值可為整數、小數、布林、字串等,【參閱:變數資料型態

      • sep:分隔字元,預設值為一個空白字元 (" "),若輸出多個變數,則變數間會以分隔符號區隔開。

      • end:結束字元,在輸出完畢後會自動加入的字元,預設值為換列字元("\n"),游標移到下一列,即換行(Enter)。

範例1:輸出畫面

print("小明年齡",16) #sep預設1個空白,end預設換列

print("小明年齡",16,sep="&") #sep分隔符號為&

print("小明年齡",16,"讀高一",sep="&",end="。") #結束字元為。

*註:以OnlineGDB 編撰指令Languagepython3】編撰範例

  • 循序(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,空白會填入右方

*註:本單元下述範例將repl.it→python3編撰,並執行結果

(三) format 字串格式化

  • 新版(python2.6以後),建議以 format 方法設定字串格式化。語法如下:

print ( 字串.format (參數列))

  1. 在字串中以一對大括號 { } 表示參數的位置

  2. 若有多個參數,可在大括號 { }中編排參數順序,由0開始算起。

  3. 欲細部設定字串的參數格式,可在大括號內設定,例如 {參數順序:格式設定 },格式設定請參閱:%字串格式化。其差異在 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 輸入指令

(一)語法

  1. input 是讓使用者由『標準輸入』裝置輸入資料,若沒特別設定,即為鍵盤。

  2. 執行時使用者需先輸入變數資料,後按下【Enter鍵】,輸入的資料即存入變數中。

  3. input 輸入的資料為字串型態,若欲算術運算,則需先以 int 或 float 強制轉換為數值型態後,再運算(參閱:資料型態強制轉換 )。

  4. 若欲一次輸入多個資料算術運算時,需使用eval函式先將字串轉換為數值後才能計算,而且輸入資料時,要以逗號隔開變數值

變數=input ([提示字串]) #輸入資料為字串型態

◆例1:r=input("輸入圓半徑") #輸入的資料為字串型態

◆例2:一次輸入多個變數值,輸入資料時,請以『,逗號隔開變數值。

◆例3:輸入多個元素,輸入資料時,請空白隔開變數值。【參閱:模組索引→import sys、字串函式字串.split()

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」。

參閱:簡單的輸出與輸入中華開放教育平台Python程式設計入門

§實作練習

一、輸入圓半徑,求圓面積、及圓周長。【提示:圓半徑 r,圓周率p=3.14159,則圓面積是pr2,圓周長為2pr】(檔名:ex1.py)

二、求總分及平均:輸入三科成績後,請輸出其總分及平均。【提示:利用 print 輸出,及 input 輸入功能;注意:資料型態強制轉換(檔名:ex2.py)

三、求梯形面積。【提示:梯形面積=(上底+下底)*高/2】(檔名:ex3.py)

四、輸入 a,b,c,X ,求aX2+bX+c (檔名:ex4.py)

五、請輸入時間之秒數,轉換成 [時:分:秒] 格式輸出。【提示:1小時3600秒,1分鐘60秒,參閱:運算子→比較 //(取整數商) 及 %(取餘數)的差異】(檔名:ex5.py)

六、輸入一個3位數的整數,並請倒著輸出此3位數值。【提示:運算子→比較 //(取整數商) 及 %(取餘數)的差異】(檔名:ex6.py)