Python的輸入輸出

發表於2016-04-23

我平常使用的程式語言主要是Fortran和Python,用於做數值計算,兩種語言各具優勢,Fortran更快,Python寫起來更方便,更適合閱讀,而且可以直接對資料進行視覺化處理。但是有時候輸出資料時顯得沒有Fortran方便,可能是因為Python不對變數型別進行區分,所以一般都是以字串的形式輸出資料。

1. strrepr

就像引言裡說的那樣,Python需要把所有型別的值轉化成string進行輸出(私以為是Python注重和人的互動,而string是最適合與人類進行互動的資料型別),有str()repr()兩種方法對資料型別進行轉化,str()轉化後的結果更適合與人進行互動,而repr()轉化後的結果則可以被Python的直譯器閱讀,但當要轉化的物件沒有適合與人互動的型別時,str()轉化的結果和repr()是一樣的:

當互動的物件是人時,’hello world’顯而易見就是一個字串,字串代表的意思是不言而喻,或者說人更關注’ ‘內的資訊,而非’ ‘本身,但是機器則不同,如果直接把hello world傳給機器,他很難處理這個資料,但是有了’ ‘後,Python的直譯器就知道這是一個字串,或者也可以這麼說,相較於字串的具體內容,機器更關心的是’hello world’這個整體,所以為了儲存所需要的資訊,repr()會給轉化的物件加上” “。

對於這種組合型別的變數,str()repr()的結果是一樣的。

str()repr()的區別可見一斑。

2. 表格形式的輸出

str.rjust()方法不會對該變數做任何處理。只是返回一個新的變數,字元的長度根據所給的引數確定,對齊方式為右對齊,多餘的空間用空格補齊,類似的還有str.ljust()str.center()等。當所給的長度小於字串本身的長度時,這些方法不會截止資料,而是原封不動返回,這可能會破壞美觀,但是總比資料破壞要好吧?如果要強制截斷資料,可以用str().ljust(n)[:n]這種形式:

還有一種str.zfill()方法,與str.rjust()不同,它補齊的是0而不是空格,而且它能夠理解正負號的意思:

3. 格式化輸出

這是一種和C語言非常相似的輸出方法,但是個人覺得更加好用:

‘{}’的內容會被format()中的引數所替代,可以在'{}’裡填上數字來指定format()中的位置,但是如果'{}’裡的是引數,其中的內容會以被format()中的字元替換:

還可以用’:’對輸出的範圍進行控制,我們輸出小數點後三位的$pi$:

‘:’可以起到固定位數輸出的作用,這會讓我們的輸出更加漂亮:

相關文章