1. for _ in range()
self.board = [' ' for _ in range(9)]
_: 관례적으로 사용되는 변수명. 반복문 내에서 현재 반복 중인 값이 필요하지 않을 경우 사용
2. [i*3:(i+1)*3] for i in range(3)
def print_board(self):
for row in [self.board[i*3:(i+1)*3] for i in range(3)]:
print('| ' + ' | '.join(row) + ' |')
i → 0, 1, 2
[i*3:(i+1)*3] → [0:3], [3:6], [6:9]
| | |
| | |
| | |
3. enumerate()
self.board = [' ' for _ in range(9)]
for (i, x) in enumerate(self.board):
# ['x', 'x', 'o'] --> [(0, 'x'), (1, 'x'), (2, 'o')]
enumerate(): 각 요소와 함께 해당 요소의 인덱스 제공
(i, x): enumerate()의 결과를 언패킹한 것
3-1. 리스트 컴프리헨션
return [i for i, spot in enumerate(self.board) if spot == ' ']
return [i for i, spot in enumerate(self.board) if spot == ' ']
# 위 코드와 아래 코드는 같음
moves = []
for (i, spot) in enumerate(self.board):
# ['x', 'x', 'o'] --> [(0, 'x'), (1, 'x'), (2, 'o')]
if spot == ' ':
moves.append(i)
return moves
return
i
for
i, spot
in
enumerate(self.board)
if
spot == ' '
비어 있는 위치의 인덱스 목록 반환
참고
1) 리스트 컴프리헨션 - 제대로 파이썬 (wikidocs.net)
1) 리스트 컴프리헨션
## 리스트 생성하기 기존에 배운 문법으로 1부터 10까지 정수를 순서대로 가지고 있는 리스트를 생성하는코드는 다음과 같습니다. ``` numbers = [] for n i…
wikidocs.net
4. 컬럼 인덱스
col_ind = square % 3
column = [self.board[col_ind+i*3] for i in range(3)]
if all([spot == letter for spot in column]):
return True
5. 대각선 인덱스
3x3의 경우 대각선을 이루는 인덱스는 모두 짝수
if square % 2 == 0:
diagonal1 = [self.board[i] for i in [0, 4, 8]] # left to right diagonal
if all([spot == letter for spot in diagonal1]):
return True
diagonal2 = [self.board[i] for i in [2, 4, 6]]
if all([spot == letter for spot in diagonal2]):
return True
'Python' 카테고리의 다른 글
[Python] Qr코드 (0) | 2024.07.04 |
---|---|
[Python] 비밀번호 생성기 (0) | 2024.07.04 |
[Python] 카운트다운 (0) | 2024.07.04 |
[Python] 12 Project - 06. Tic Tac Toe (0) | 2024.07.03 |