【Python實作】製作一個星星符號組成的長方形
📘 Python 實作|製作一個星星符號組成的長方形
練習目的
這次的練習重點是 巢狀迴圈,也就是在一個迴圈裡面再放另一個迴圈。
- 練習使用 for 迴圈。
- 練習使用 range() 控制重複次數。
- 練習使用巢狀迴圈印出二維圖形。
- 練習使用 print() 的 end 參數控制換行。
🧭 題目說明
讓使用者輸入列數 rows 與行數 columns,接著印出一個由星星 * 組成的長方形。
rows = 3
columns = 4
程式就會印出 3 列、每列 4 顆星星的長方形。
🧪 完整程式碼
以下是完整的 Python 星星長方形程式。
🖥️ 程式運行結果一
第一個範例輸入 3 列、4 行。
Enter number of columns: 4
* * * *
* * * *
* * * *
🖥️ 程式運行結果二
第二個範例輸入 12 列、16 行。
Enter number of columns: 16
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
🔎 程式說明
這支程式的核心是兩層 for 迴圈。外層迴圈負責控制「列數」,內層迴圈負責控制「每一列要印幾顆星星」。
1. 讓使用者輸入列數
這一行讓使用者輸入要印出幾列。
因為 input() 讀進來的資料預設是字串,所以要使用 int() 轉成整數,後面才能放進 range()。
2. 讓使用者輸入行數
這一行讓使用者輸入每一列要印出幾顆星星,也就是行數或欄數。
3. 外層 for 迴圈控制列數
外層迴圈會依照 rows 的數字重複執行。
如果 rows = 3,這個迴圈就會執行 3 次,也就是印出 3 列。
4. 內層 for 迴圈控制每列的星星數量
內層迴圈會依照 cols 的數字重複執行。
如果 cols = 4,內層迴圈每次就會印出 4 顆星星。
5. 使用 print("*", end=" ") 不換行印出星星
平常使用 print() 時,印完內容後會自動換行。
但這裡希望星星能在同一列連續印出來,所以加上 end=" "。
這代表印完 * 之後,不要換行,而是在後面加一個空格。
6. 使用 print("") 換到下一列
當內層迴圈把一整列的星星印完後,就需要換到下一列。
所以外層迴圈裡面,在內層迴圈結束後,會執行 print("")。
這個 print("") 的作用,就是單純換行。
🧭 執行流程整理
用表格整理外層迴圈與內層迴圈的分工,會更容易理解巢狀迴圈。
| 程式碼 | 負責內容 | 作用 |
|---|---|---|
| rows | 列數 | 決定總共要印幾排。 |
| cols | 行數/欄數 | 決定每一排要印幾顆星星。 |
| for i in range(rows) | 外層迴圈 | 控制長方形的高度。 |
| for j in range(cols) | 內層迴圈 | 控制每一列的寬度。 |
| print("*", end=" ") | 印出星星 | 不換行,讓星星排列在同一列。 |
| print("") | 換行 | 一列印完後,換到下一列。 |
💡 小補充:巢狀迴圈怎麼看?
巢狀迴圈就是「迴圈裡面還有迴圈」。
可以把它想成:
- 外層迴圈每跑一次,代表正在處理一整列。
- 內層迴圈會在這一列中,印出指定數量的星星。
- 內層迴圈跑完後,才會換到下一列。
外層控制「有幾列」,內層控制「每列有幾顆」。
✅ 小結
這個星星長方形練習很適合拿來理解巢狀迴圈,因為它可以直接把迴圈的執行結果變成看得見的圖形。
- rows:控制長方形的列數,也就是高度。
- cols:控制每一列的星星數,也就是寬度。
- 外層 for 迴圈:負責重複產生每一列。
- 內層 for 迴圈:負責在每一列印出星星。
- end=" ":讓星星不要每印一次就換行。
- print(""):每一列印完後換行。
留言
張貼留言