官术网_书友最值得收藏!

2.3 輸入與輸出函數

任何程序設計的目的都在于將使用者所輸入的數據經計算機運算處理后,再將結果另行輸出。接下來我們就介紹Python中最常用的輸出與輸入函數。

2.3.1 輸出函數——print()

print()函數是Python用來輸出指定的字符串或數值到標準輸出裝置的函數,默認情況下輸出到屏幕上。print()的正式語法格式如下。

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

·數據1,數據2,…:print()函數可以用來輸出多個數據,每個數據之間必須用逗號“,”隔開;上述語句中的中括號“[]”內的數據、分隔字符或結束字符可有可無。

·sep:分隔字符,可以用來輸出多個數據,每個數據之間必須用分隔符分隔,Python默認的分隔符為空格符。

·end:結束字符,是指在所有數據輸出完畢后自動加入的字符,系統的默認值為換行字符“\n”;正因為這樣的默認值,當執行下一次的輸出動作時,會輸出到下一行。

以下范例示范了3種print()的語法的使用方式及輸出結果,如圖2.11所示。

圖2.11

上述3種print()的語法的差異說明如下。

第一種寫法最為簡單,此語句省略了分隔字符及結束字符,因此其結束字符會采用系統的默認值,即換行字符“\n”,所以輸出完此字符串會自動換行。

第二種寫法則加入了分隔字符“#”,本來默認各數據間會以空格符隔開,但此處指定了“#”為其分隔字符,所以可以看到輸出結果中的每個數據間會以“#”符號隔開。

第三種寫法剛好可以和第二種寫法做比較,此寫法沒有指定分隔字符,系統就會使用默認的空格符作為各數據間的分隔字符。

print()函數也支持格式化功能,主要是由“%”字符與后面的格式化字符串來輸出指定格式的變量或數值內容,語法如下。

print(" 數據" %( 參數列))

常用輸出格式化符號說明如表2.5所示。

表2.5 格式化符號說明

例如下面的代碼。

height=178
print(" 小郭的身高:%d" % height)

輸出結果如圖2.12所示。

圖2.12

接下來介紹一個實用的方法,即利用format()函數來進行格式化工作,這個函數以一對大括號“{}”來表示參數的位置,語法如下。

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

例如下面的代碼。

print("{0} 今年 {1} 歲. ".format(" 王小明", 18))

其中“{0}”表示使用第一個自變量、“{1}”表示使用第二個自變量,以此類推。如果“{}”內省略數字編號,則會按順序填入。

也可以使用自變量名稱來取代對應的自變量,例如下面的代碼。

print("{writer} 每年賺 {money} 版稅. ".format(writer =" 陳大春", money=600000))

直接在數字編號后面加上冒號“:”可以指定參數格式,例如下面的代碼。

print('{0:.2f}'.format(3.14159)) #3.14

上述代碼表示第一個自變量取小數點后兩位。

我們來看幾個例子。

范例1的代碼如下。

num=1.732659
print("num= {:.3f}".format(num)) # num= 1.733

{:.3f}表示要將數值格式化成小數點后3位。

范例2的代碼如下。

num=1.732659
print("num= {:7.3f}".format(num)) #num= 1.733

其中{:7.3f}表示數值是總長度為7的浮點數,且保留小數點后3位,此處的小數點也在總長度內。從執行結果來看,總長度為7,數值前會補空白。

以下范例利用format()函數來格式化輸出字符串及整數。

范例3的代碼如下。

university=" 全優職能??茖W校"
year=142
print("{} 已辦校 {} 年" .format (university, year))

輸出結果如圖2.13所示。

圖2.13

在上例中可以看到字符串中的“{}”符號是用來表示要寫入參數的位置的。例如,要輸出的universityyear變量在字符串中就必須有相對應的“{}”符號來配合,以告知系統將這兩個變量的值寫在此處。

以下范例利用各種不同的format()函數來格式化輸出字符串及整數。

【程序范例:format_para.py】利用format()函數來格式化輸出字符串及整數

01 num1=9.86353
02 print("num1= {:.3f}".format(num1))
03 num2=524.12345
04 print("num2= {:12.3f}".format(num2))
05 company=" 智能AI 科技股份有限公司"
06 year=18
07 print("{} 已設立公司 {} 年" .format (company, year))
08 print("{0} 成立至今已 {1} 年".format(company, year))

執行結果如圖2.14所示。

圖2.14

程序解說

◆第1~4行:分別指定不同的數值總長度及小數點位數來觀察不同的數值輸出結果。

◆第7~8行:分別用兩種不同的format()函數的參數的指定方式示范如何在指定位置輸出對應的變量內容。

2.3.2 輸入函數——input()

我們知道print()函數是用來輸出數據的,而input()函數則是讓使用者從鍵盤輸入數據,然后把使用者所輸入的數值、字符或字符串傳送給指定的變量。要從鍵盤輸入數據十分簡單,語法如下。

變量 = input( 提示字符串)

當輸入數據并按下Enter鍵后,就會將輸入的數據指定給變量。上述語法中的“提示字符串”是一段告知使用者輸入的提示信息,例如,希望使用者輸入年齡,再用print()函數輸出年齡,程序代碼如下。

age =input(" 請輸入你的年齡:")
print (age)

執行結果如圖2.15所示。

圖2.15

在此還要注意,使用者輸入的數據一律被視為字符串,可以通過內置的int()、float()、bool()等函數將輸入的字符串轉換為整數、浮點數或布爾值類型。

例如,寫一個名為test.py的程序進行下列程序代碼的測試。

price =input(" 請輸入產品價格:")
print(" 漲價10 元后的產品價格:")
print(price+10)

上面的程序將會因為字符串無法與數值相加而產生錯誤提示,如圖2.16所示。

圖2.16

這是因為輸入的變量price是字符串,無法與數值“10”相加,所以必須在進行相加運算前用int()函數將字符串強制轉換為整數類型,如此一來才可以正確地進行運算。修正的程序代碼如下所示。

price =input(" 請輸入產品價格:")
print(" 漲價10 元后的產品價格:")
print (int(price)+10)

由以下范例可以看出,如果輸入的字符串沒有先通過int()函數轉換成整數就直接進行加法運算,其產生的結果會變成兩個字符串相加,從而造成錯誤的輸出結果。

【程序范例:strtoint.py】將輸入的字符串轉換成整數類型

01 ino1=input(" 請輸入甲班全班人數:")
02 no2=input(" 請輸入乙班全班人數:")
03 total1=no1+no2
04 print(type(total1))
05 print(" 兩班總人數為%s" %total1)
06 total2=int(no1)+int(no2)
07 print(type(total2))
08 print(" 兩班總人數為%d" %total2)

執行結果如圖2.17所示。

圖2.17

程序解說

◆第1~2行:分別輸入甲、乙兩班的人數。

◆第3~5行:直接將所輸入的人數進行相加,可以看出其相加的結果是字符串,結果和預期的兩班人數的加總結果不同。

◆第6~8行:在加總前先將輸入的字符串轉換成整數,再進行相加,其結果的數據類型是整數,所輸出的兩班人數的加總結果才是正確的。

主站蜘蛛池模板: 拉萨市| 岑溪市| 台州市| 巴南区| 武川县| 玛纳斯县| 古交市| 延长县| 安徽省| 仪陇县| 康平县| 龙门县| 博野县| 繁昌县| 余干县| 竹溪县| 沁源县| 揭阳市| 巴林左旗| 正安县| 佳木斯市| 历史| 牙克石市| 普宁市| 昂仁县| 望江县| 上栗县| 平远县| 偃师市| 独山县| 两当县| 乌鲁木齐市| 公主岭市| 灵璧县| 天台县| 友谊县| 伊金霍洛旗| 宝坻区| 柳林县| 乌拉特前旗| 阳朔县|