needmoreeasy EN 한국어
배우기

51 — 격자: 목록의 판

★★★★☆ (4/5)중첩 데이터
선수 지식
50 — 문자열, 16 — 이름 목록
결과물
목록의 목록으로 만든 3x3 판, board[row][col]로 칸 읽고 쓰기

목록은 목록을 담을 수 있습니다. 바깥 목록이 판이고, 안쪽 목록 하나가 행이며, 각 칸은 하나의 표시입니다. 칸을 읽고 쓸 때는 인덱스가 두 개 필요합니다 — 먼저 행, 그다음 열.

단계

  1. 3x3 판은 행 세 개이고, 각 행은 표시 세 개의 목록입니다. board[0]이 첫 행, board[1]이 둘째 행입니다. 칸을 읽으려면 인덱스 두 개가 필요합니다 — 행 먼저, 열 그다음 — 쓰기도 =와 함께 같습니다. 인덱스는 0부터 시작하므로 board[0][0]이 왼쪽 위 칸입니다:

    board = [["-", "-", "-"], ["-", "-", "-"], ["-", "-", "-"]]
    말해 board[0]
    board[0][0] = "X"
    board[1][2] = "O"
    말해 board[0][0]
    말해 board[1][2]
    
    실행해 보기 →

    첫 행이 출력되고, 이어서 XO가 출력됩니다. -는 빈 칸입니다.

  2. for 반복이 모든 행을 방문하므로, 판 전체를 출력하는 일은 세 줄이면 됩니다:

    board = [["X", "O", "-"], ["-", "-", "-"], ["-", "-", "-"]]
    for row in board:
        말해 row
    
    실행해 보기 →

    반복은 바깥 목록을 위에서 아래로 읽고, 각 row는 안쪽 목록 하나입니다.

  3. 이제 판을 만들고, 출력하고, 표시를 놓고, 다시 읽고, 세는 프로그램을 씁니다. 세는 반복은 두 번째 안쪽 반복을 사용해 모든 행의 모든 칸을 방문합니다. grid.ko.nme으로 저장합니다:

    # grid.ko.nme — 목록으로 만든 3x3 판.
    # 실행: nme 실행 grid.ko
    # 판은 행들의 목록이고, 각 행은 칸들의 목록입니다.
    
    판 = [["-", "-", "-"], ["-", "-", "-"], ["-", "-", "-"]]
    
    def 판보여줘(판):
        for 행 in 판:
            말해 행
    
    말해 "빈 판:"
    판보여줘(판)
    
    판[0][0] = "X"
    판[0][1] = "O"
    판[1][1] = "X"
    판[2][2] = "X"
    
    말해 "네 개 표시 후:"
    판보여줘(판)
    
    말해 f"왼쪽 위 칸: {판[0][0]}"
    말해 f"가운데 칸: {판[1][1]}"
    말해 f"오른쪽 아래 칸: {판[2][2]}"
    말해 f"0행 2열은 비어 있음: {판[0][2]}"
    
    판[1][1] = "-"
    말해 "가운데를 비우고 다시 채움:"
    판[1][1] = "O"
    판보여줘(판)
    
    x개수 = 0
    o개수 = 0
    for 행 in 판:
        for 칸 in 행:
            if 칸 == "X":
                x개수 = x개수 + 1
            if 칸 == "O":
                o개수 = o개수 + 1
    말해 f"판에는 X {x개수}개, O {o개수}개"
    
    실행해 보기 →
  4. 실행합니다:

    nme 실행 grid.ko
    
    빈 판:
    ['-', '-', '-']
    ['-', '-', '-']
    ['-', '-', '-']
    네 개 표시 후:
    ['X', 'O', '-']
    ['-', 'X', '-']
    ['-', '-', 'X']
    왼쪽 위 칸: X
    가운데 칸: X
    오른쪽 아래 칸: X
    0행 2열은 비어 있음: -
    가운데를 비우고 다시 채움:
    ['X', 'O', '-']
    ['-', 'O', '-']
    ['-', '-', 'X']
    판에는 X 2개, O 2개
    

    쓰고 다시 읽으면 정확히 저장한 값이 나옵니다 — 그것이 격자의 핵심입니다. 52 가이드가 이 판을 실제로 할 수 있는 게임으로 만듭니다.

직접 해보기

첫 번째 열이 위에서 아래로 X가 되도록 표시를 놓고 판을 출력한 뒤 판[2][0]을 다시 읽어 보세요. 그다음 세는 반복을 바꿔 아직 비어 있는 칸이 몇 개인지 출력하게 해 보세요.

배운 것

  • 격자는 행들의 목록이고, 각 행은 칸들의 목록입니다.
  • board[row][col]은 칸을 읽고, board[row][col] = "X"는 칸을 씁니다.
  • for 행 in 판:이 각 행을 방문하고, 안쪽 반복이 각 칸을 방문합니다.
  • -는 빈 칸이므로 판은 표시와 빈칸을 구별할 수 있습니다.

GitHub에서 이 문서 보기