基本觀念之5~巢狀結構與輸出格式

1-5巢狀結構與輸出格式

如果有兩個以上迴圈包含在一起,其中內部迴圈縮排,從屬於外部迴圈,則稱此種迴圈為巢狀結構。很多情況會用到此種結構,例如一張圖片中像素值的處理,就要用到一個二維串列,再搭配上巢狀迴圈。另外,如果在選擇敘述 if 式子裡面,還有其它縮排的 if 敘述,也可稱為巢狀結構

在這裡,我們使用大家都知道的九九乘法表,來舉例說明巢狀迴圈的特點,並且結合數據字串輸出設定,讓乘法表能夠格式化整齊排列。

巢狀結構,外層迴圈變數每變化一個值,內層迴圈變數值就要全部變化一次,所以可以戲稱:「外圈慢慢走,內圈跑斷腿。」

上圖中,第1行的外層迴圈變數 i ,當其取出值為1或2或3或其他,內層迴圈變數 j 就要從1到9全部變化一次。所以外層迴圈變數 i 總共從1到9只跑一遍,但內層迴圈變數 j 從1到9跑了九遍。請讀者思考第3、4行兩個print( )的縮排位置不同之原因

第3行print(f”{ j }*{ i }={ i*j:2d }”,end=” “)小括弧中,後面的end=” “,表示每次輸出後會空一格再接續下次輸出,比較重要的,是前面 f”{ j }*{ i }={ i*j:2d }” 的部份。

左右兩個雙引號 “…..” 表示,當中的…..被視為輸出字串,但 f“…..” 又再特別表示,其內的成對大括弧 { i }、{ j }, 是要將 i、j 所代表的變數值取出,f“…..” 的f代表格式化(format)的意思。

甚至{ i*j : 2d}還更進一步要求,i*j 的變數值輸出,必須合乎 2d 的格式,要預留兩個字元空位給預設靠右對齊的整數,所以乘法表中等號右邊的值,其個位數才能夠垂直對齊。2d的d,原文是decimal,表十進位的整數。

在上圖第1行中的7d,表預留7個字元空位給整數123輸出,123靠右對齊後,左邊會留下4個空格。第2行的7.2f,表預留7個字元空位給浮點數123.456輸出,而且小數點第2位以下四捨五入。第3行的7s,表預留7個字元空位給字串 ‘apple’ 輸出,字串預設是靠左對齊,所以會在右邊留下2個空格。

輸出的格式設定是很重要的,這讓閱讀數據的人賞心悅目,而且不容易出錯

在大航海時代,計算三角函數及對數表的技術人員,統稱為computer。這些computers算術功夫了得,但有時作風頗名士派,常常將好不容易處理完的數據,寫得龍飛鳳舞、難以辨識,以至於後續接手的行政人員,看到類似下圖的阿拉伯數字苦不堪言,也讓政府高層在計算機出現之前,已經意識到研製印表機的必要性。

Leave a Comment

Your email address will not be published. Required fields are marked *

Shopping Cart