2D 배열을 반복하는 동안 문제가 발생합니다. 나는 4X3 그리드를 통과하고 요청 된 좌표를 한 문자에서 다른 문자로 변경하는 대신 "B"또는 "W"를 "삭제"하고 대신 아무 것도 남기지 않습니다 ('-'문자). 나는 늘 코드의 niddy griddy에 들어가,하지만 난 현재이 그리드 함께 일하고 있다는 무슨 말을 할 수2 차원 어레이가 범위 밖으로 벗어날 때 ?? (PYTHON)
B W B W <= trying => A1 A2 A3 A4 W B W B to get these to B1 B2 B3 B4 B W B W <=correspond=> C1 C2 C3 C4
B = 블랙 게임 조각 W = 흰색 게임 조각
여기에 코드 조각이있어서 내가 어디로 갈지 볼 수 있습니다. 그런 다음 내가 원하는 것을 게시 할 것입니다.
removeB = input("~BLACK Player, remove one of your 'B's by typing in the coordinance: ") print("") removeW = input("~WHITE Player, remove one of your 'W's by typing in the coordinance: ") print("") newgrid = copy_grid(board) for r in range(numrows): for c in range(numcols): if(removeB == 'A1'): newgrid[r][c] = '-' elif(removeB == 'A2'): newgrid[r][c+1] = '-' elif(removeB == 'A3'): newgrid[r][c+2] = '-' elif(removeB == 'A4'): newgrid[r][c+3] = '-' elif(removeB == 'B1'): newgrid[r+1][c] = '-' etc....etc...etc...' if(removeW == 'A1'): newgrid[r-1][c-1] = '-' elif(removeW == 'A2'): newgrid[r-1][c-1] = '-' elif(removeW == 'A3'): newgrid[r-1][c+1] = '-' elif(removeW == 'A4'): newgrid[r-1][c+2] = '-' elif(removeW == 'B1'): newgrid[r][c-1] = '-' etc....etc...etc...
당신은 내가 2로 이동하면 나는 내가의 서식을 변경 문까지 인덱스 값으로 확인 좌표 뉴 그리드 경우에 것을 볼 수 있습니다. 두 가지 방법 모두에서 동일한 오류 메시지가 표시된다는 것을 알았으므로 테스트 목적으로이 작업을 수행했습니다. 따라서 내 혼란 .... 또한, if/else 문 양쪽 모두에서 플레이어의 Color가 아닐지라도 위치를 확인하기 때문에 문제가 발생한다는 것을 알고 있습니다. 나는 협조를 얻을 좌표를 얻을 일단이 얻을 것이다. 여기
내가 원하는 출력되면 removeB = A1 및 removeW는 = C4 :Traceback (most recent call last): File "<pyshell#29>", line 1, in <module> initial() File "C:\Users\Ted\Desktop\Lab3.1Final.py", line 84, in initial newgrid[r][c] = '-' IndexError: list index out of range
라인 84 :
여기- W B W W B W B B W B -
오류 메시지 인 첫 번째 if (removeB == 'A1') 바로 다음에 오는 줄이며 de에서 값을 변경합니다. 지루한 좌표.
최상의 답변을 제공하는 데 도움이된다면이 질문과 관련된 다른 코드를 제출해야하는지 알려 주시기 바랍니다. 미리 감사드립니다!
직접 문제와 관련,하지만 당신은 스위치/case 문 보라되지 않음 (적어도, 파이썬의 버전) 다음과 같이 : HTTP ://stackoverflow.com/questions/11479816/what-is-the-python-equivalent-for-a-case-switch-statement –
아마도 뭔가를 놓치고 있지만 A4로 입력한다고 가정하면 if 문은 보이지 않습니다. 그래서 그것이 c (1,2,3,4)가 처음 0 + 4 = 4 (좋은 대답)가 될 것이기 때문에 매번 깨는 것은 3 번 더 보일 것입니다. 다음보기 1 + 4 = 5 (잘못된 대답) 등등 ... 왜 여기에 모든 루프가 있습니까? 나는 이것이 완전히 새로운 방식으로 접근하는 것이 가장 좋을 것이라고 생각한다. (나는 더 멀리 도울 수있다.) –