부모의 질문에서 시작하는 학습 이야기
게임 지도 한 칸을 바꿨는데, 왜 세 줄이 바뀔까요?
한 칸만 바꾸는 코드를 썼는데 여러 줄이 함께 바뀐다면, 행들이 같은 리스트를 가리키는지 확인하세요. 게임 지도는 그림을 붙이기 전에도 작은 숫자 표로 실험할 수 있습니다. 아이에게 정답을 먼저 알려주기보다 “어느 칸이 바뀔까?”를 먼저 물어보세요.
0은 빈칸, 1은 벽이라고 정해 봅니다
세 줄에 네 칸씩 있는 작은 지도입니다. 파이썬은 번호를 0부터 셉니다. grid[0][1]은 첫 번째 줄의 두 번째 칸입니다. 이 실험에서는 0을 빈칸, 1을 벽이라고 약속합니다. 숫자가 저절로 게임 화면에 그려지는 것은 아닙니다.
grid = [[0] * 4] * 3
grid[0][1] = 1
for row in grid:
print(row)
실행 전에 아이에게 두 번째 칸 하나에만 표시해 보라고 해주세요. 실제 출력은 다음과 같습니다.
[0, 1, 0, 0]
[0, 1, 0, 0]
[0, 1, 0, 0]
“한 칸 바꿨는데 세 칸이 바뀌었네?”라는 차이가 오늘의 질문입니다.
줄이 세 개로 보이는 것과, 서로 다른 줄인 것은 다릅니다
[0] * 4는 숫자 네 개를 담은 한 행을 만듭니다. 바깥쪽의 * 3은 그 행을 새로 세 번 만드는 것이 아니라 같은 행을 세 자리에서 가리키게 합니다. 그래서 첫 행에서 바꾼 값이 나머지 자리에서도 보입니다.
숫자에 *를 쓰면 무조건 잘못된다는 뜻은 아닙니다. 이 예제의 문제는 수정할 안쪽 리스트를 여러 행이 공유하는 데 있습니다.
행을 매번 새로 만들면 한 칸만 바뀝니다
지도 생성 줄을 아래처럼 바꿔 실행합니다. _는 반복 횟수만 필요해서 값 자체는 쓰지 않는 변수입니다.
grid = [[0] * 4 for _ in range(3)]
grid[0][1] = 1
for row in grid:
print(row)
[0, 1, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]
반복할 때마다 [0] * 4를 실행해 서로 다른 행을 만들었기 때문에 첫 줄의 두 번째 칸만 바뀝니다.
부모가 바로 써볼 세 가지 질문
- 실행 전: “
[0][1]이 어느 칸인지 손으로 짚어볼래?” - 실행 후: “예상과 다른 칸도 바뀌었어? 같은 줄을 같이 보고 있었을까?”
- 조건 변경: “이번엔 마지막 줄의 맨 오른쪽 칸을 벽으로 바꾸려면?”
세 번째 질문에서는 새 지도를 만든 뒤 grid[2][3] = 1로 바꿔 봅니다. 세 번째 줄의 네 번째 칸만 1이 되는지 확인하세요. 틀린 예상도 다음 실험을 시작할 좋은 단서입니다. 이 한 번의 활동으로 아이의 코딩 실력 전체를 평가할 수는 없습니다.
게임 만들기에서 다음 공부로 이어지는 이유
메타센스의 ‘화성 탐험’ 게임 프로젝트도 행과 열로 지도를 만듭니다. 실제 과정에서는 다음처럼 20행·30열을 각각 생성합니다.
level_map = [[0 for column in range(30)] for row in range(20)]
오늘 예제는 그 구조를 3행·4열로 줄여 출력만 확인한 실험입니다. 그림과 움직임을 붙이는 게임 과정 전체와는 구분해 주세요.
메타센스 파이썬 과정은 처음 파이썬에서 게임 프로젝트, 파이썬 심화와 수학 알고리즘으로 이어집니다. 초등 4학년부터 중학교 2학년 학생이 대상입니다. 막힌 질문은 선생님과 일대일 실시간 지도로 풀고, 과제와 피드백으로 자신이 바꾼 코드의 이유를 돌아봅니다.
체험 후 자동 결제는 없습니다. 아이의 출발 수준과 학습 시작점은 상담에서 확인합니다.
설명을 확인한 자료
행을 공유하는 다차원 리스트 문제는 Python 공식 FAQ에서도 다룹니다. 공개 개발자 질문에서 확인한 문제를 실제 메타센스 게임 코드와 연결해 자체 예제로 편집했습니다. 최근 학부모 유행이나 특정 학생의 사례라는 뜻은 아닙니다.
실제 교재·과정과 예제 계산을 대조해 편집했습니다. 특정 학생의 경험이나 성과를 소개하는 글이 아닙니다.