그래서 방금 CodeAcademy Battleship 문제 섹션을 완료하고 정답을 제출했지만 왜 정확한지 이해하는 데 어려움이 있습니다.
아이디어는 "O"로 채워진 보드로 5x5 그리드를 구축하는 것입니다. 내가 사용한 올바른 코드는 다음과 같습니다.
board = []
board_size=5
for i in range(board_size):
board.append(["O"] *5)
그러나 별도의 행으로 반복하도록 지정하지 않았기 때문에 이것이 하나의 단일 행에 25 개의 "O"를 생성하지 않은 이유에 대해 혼란 스럽습니다. 나는 시도했다
for i in range(board_size):
board[i].append(["O"] *5)
그러나 이것은 나에게 오류를 주었다 IndexError: list index out of range
.. 누가 첫 번째가 정확하고 두 번째가 아닌 이유를 설명 할 수 있습니까?
["O"]*5
그러면 "O"로 채워진 크기 5의 목록이 생성됩니다. ["O", "O", "O", "O", "O"]
board.append(["O"] *5)
위의 목록을 board []에 추가 (목록 끝에 추가)합니다. 루프에서이 작업을 5 번 수행하면 위 목록 중 5 개로 채워진 목록이 생성됩니다.
[["O", "O", "O", "O", "O"],
["O", "O", "O", "O", "O"],
["O", "O", "O", "O", "O"],
["O", "O", "O", "O", "O"],
["O", "O", "O", "O", "O"]]
목록이 파이썬에서 크기로 초기화되지 않았기 때문에 코드가 작동하지 않았으며 빈 컨테이너로 시작됩니다 []
. 작업을 수행하려면 다음을 수행 할 수 있습니다.
board = [[],[],[],[],[]]
그리고 당신의 루프에서 :
board[i] = ["O"]*5
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다