2016-11-16 3 views
-1

필자는 코드가 원하지 않을 때 반복적으로 문장을 계속 반복하는 문제가있다.루프가 계속 반복되는 것을 막으시겠습니까? 파이썬

Player 1 
Please choose a column (1-5): 1 
Player 1 
Please choose a column (1-5): 2 
Player 1 
Please choose a column (1-5):3 
Player 1 
Please choose a column (1-5): 4 
Player 1 
Please choose a column (1-5): 5 


IndexError: list index out of range 

코드는 숫자 1을 수용하도록되어 (입력 보드가 5 × 5 인) : 출력의

def gameMake(): 

    while emptySp(): #already written (checks if the space is available for the user to put in their token) 


     print("Player 1") 
     mycol = input("Please choose a column (1-" + str(columns)) 

     if coluser == columns: 
      mycol = input("Please choose a column to place your piece in (1-" + str(columns)) 

     elif: 
      rowuse = rows 


      while x >= 1: 
       if board[x][coluser] == board[r][c] 
        board[x][coluser] == PONE #PONE = "o" (the token) 


       else: 

        i = 0 
        i = i + 1 

예와 제가 받고 있어요 : 여기

내 코드입니다 5를 유효한 열 번호로 입력 한 다음 이미 만든 보드 기능을 사용하여 현재 보드를 인쇄하십시오! 1-5 이외의 숫자라면 사용자에게 다시 프롬프트가 표시됩니다. 내 코드에 어떤 문제가 있습니까? 색인 오류가있는 이유는 무엇입니까?

감사합니다.

+2

코드에서 'i'의 의미는 무엇입니까? 0으로 설정 한 다음 1을 더합니다. – Cleb

+0

컬럼이 5 이상인지를 검사하는 끝에 if 문을 넣습니다. 예인 경우, 중단하십시오. – drum

+0

그 밖의 처음 두 문장의 목적은 무엇입니까? 처음에'i = 0'을 설정하고 그 값을 증가 시키지만, 다음에'else'를 다시 입력하면'i'가 먼저 0으로 재설정됩니다. – Antimony

답변

0

여기에서의 문제는, 당신은 단지 숫자임을 확인하는 번호가 1-X의 범위에 있는지 확인하지 않는 것입니다> = 1

당신의 while 문을 업데이트 할 것

read while x >= 1 and x <= columns:

프롬프트 입력에 try/except 블록 mycol = input("Please..을 사용할 수도 있습니다. 나는 누군가가 A-Z 또는 다른 특수 문자를 입력하면 현재 스크립트가 실패 할 것이기 때문에 이것을 가져온다.

0

당신이 보여주는 예제 입출력에서, 항상 가장 안쪽에있는 if 절로 끝나는 것처럼 보입니다. 여기에서 board[x][coluser] == PONE은 할당이 아닌 비교를 수행하므로 true 또는 false로 평가되지만 나머지 프로그램에서는 변경되지 않습니다. 따라서 아무 것도 변경되지 않았으므로 emptySp()은 항상 true를 반환합니다. 두 번째로, "# win으로 승리하는 기능을 확인하십시오"는 무엇입니까? 승리 함수는 무엇입니까? 다시 말하면, if 절 안에 코드의 일부가 변경되지 않으므로 emptySp()이 처음으로 true로 평가 된 원인은 무엇이든 계속 동일하게 유지됩니다.

+0

좋아, 네가하는 말을 알았어! 그 요소에 PONE을 어떻게 할당 할 것인가? 또한 현재 코드가 작동하는지 확인한 후 플레이어가 승리했는지 여부를 검사하는 함수를 추가하려고했기 때문에 #Check 함수를 주석에 추가했습니다. – naraemee

+0

할당 연산자는'='이고, 비교 연산자는'=='입니다. – Antimony

관련 문제