我試圖從 FreeCodeCamp Youtube 頻道上的“12 Beginner Python Projects - Coding Course”中理解這段代碼,但我真的不明白這段代碼來列印井字游戲專案的板。我環顧了其他一些視頻,但我不喜歡他們如何設定董事會。在我看到視頻失敗之前,我對如何解決這個問題的第一個想法是,所以我使用了她關于如何生成電路板的代碼,但我實際上并不明白它在做什么。
使用代碼:
number_board = [[str(i) for i in range(j*3, (j 1)*3)] for j in range(3)]
for row in number_board:
print('[' ']['.join(row) ']')
有輸出:
[0][1][2]
[3][4][5]
[6][7][8]
我希望它的輸出基本相同,除了從 1 開始到 9 結束,我不明白的部分是: (j*3, (j 1)*3)] for j in range(3)
我知道最終范圍(3)決定了有多少行,如果我將其更改為 5,它將是 5 行并上升到 14。我以為我理解了“開始:停止:步驟”的概念,但是當我將開始更改為 (j*3 1, (j 1)*3)] 輸出為:
[1][2]
[4][5]
[7][8]
我認為這是由于停止加起來不等于 10 但如果我將其更改為 [[str(i) for i in range(j*3 1, 10)] for j in range(3)] 之類的東西從 1 開始,但沒有在我想要的地方結束。我嘗試了一堆不同的組合來得到我想要的,但即使我猜對了,我仍然不知道它為什么會起作用。
[1][2][3][4][5][6][7][8][9]
[4][5][6][7][8][9]
[7][8][9]
也許我錯過了一些非常明顯的東西,因為這是我學習的第一個月,所以如果這是一個明顯的問題,我很抱歉,但我只是不明白 start:stop:step 修飾符是如何作業的(甚至不確定它們是否被稱為修飾符或它們的正確名稱是什么)
uj5u.com熱心網友回復:
這種型別的回圈在 python 中稱為串列推導。做一個簡短的搜索,你會得到很多關于它們的資訊。您的代碼中發生的情況與以下內容幾乎相同:
number_board = []
for j in range(3):
board_row = []
for i in range(j*3, (j 1)*3):
board_row.append(str(i))
number_board.append(board_row)
for row in number_board:
print('[' ']['.join(row) ']')
所以第一個代碼迭代 3 行對于每一行它需要生成 3 個數字。這個數字由 決定range(j*3, (j 1)*3)。所以
- 當 j=0 時,數字在 0 到 3 之間
- 當 j=1 時,數字在 3 到 6 之間
請查看python 范圍檔案
如檔案中所述,范圍的格式為
range(start, stop, step)
創建板后,將使用另一個 for 回圈將其列印出來
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523805.html
