2017-10-19 1 views
-1

중첩 된 If then 문이 제대로 작동하지 않아 런타임 오류가 발생합니다. JES에 대해서는 경험이별로 없기 때문에 도움을 청하는 이유는 무엇입니까? 599 이상 또는 아래, 그 음 다시 0으로 VAR 설정하면 기본적으로, 내가보고하고 내이 newX (새의 XY 좌표를 생성 할 수 있습니다. 기능 randrange w를 사용) (아래 소스 코드 참조) newY를
JES, if 문이 올바르게 작동하지 않습니다.

getPixel (picture, x, y) : y (= -22)가 0보다 작거나 높이보다 크다 (= 599) 오류 값 : 올바른 유형의 인수 값이 부적절합니다. 함수에 인수를 전달할 때 오류가 발생했습니다. 라인 (39) E의를 확인하십시오 : \ DOX \ HW \ INF 120 \ e_Project5.py이

from random import * 
def main(): 
    #draw 
    pic = makeEmptyPicture(600, 600, white) 
    show(pic) 

#for the 4 boxes 
boxCount = 0 
#while statement to draw 
while boxCount < 4: 
    addRectFilled(pic, randrange(0,576), randrange(0,576), 25, 25, red) 
    addArcFilled(pic, randrange(0,576), randrange(0,576), 10, 10, 0, 360, blue) 
    boxCount = boxCount + 1 
repaint(pic) 

newX = 0 
newY = 0 
oldX = 0 
oldY = 0 
robotcount = 0 
finished = 0 
safe = 0 
triggered = 0 
while robotcount < 750 or finished != 1 or safe != 1 or triggered != 1: 
    oldX = newX 
    oldY = newY 
    newX = newX + randrange(-25, 26) 
    newY = newY + randrange(-25, 26) 
    if newX > 599 or newX < 0: 
     newX = 0 
    elif newY > 599 or newY < 0: 
     newY = 0 
    px = getPixel(pic, newX, newY) 
    color = getColor(px) 
    if color == red: 
    triggered = 1 
     printNow("trig") 
    elif color == blue: 
     safe = 1 
     printNow("safe") 
    elif robotcount == 750: 
     finished = 1 
     printNow("Fin") 
    addLine(pic, oldX, oldY, newX, newY, black) 
    robotcount = robotcount + 1 
+1

'if color == red'에서'triggered = 1'이 게시 된 코드에서 들여 쓰이지 않습니다. – roganjosh

+0

formatting error on stackoverflow, 로컬로 들여 쓰여집니다. – ohGosh

답변

0

내가 의심이 문제는 이전 테스트 (newX > 599 or newX < 0)가 트리거되는 경우, 다음 newY는 것을 의미한다 **elif** newY > 599 or newY < 0:에서 온다 검증되지 않은. elifif으로 바꾸면 제대로 작동합니다.

+0

시도해 주셔서 감사합니다! – ohGosh

+0

작품, 고맙습니다 – ohGosh

+2

위대한! 그 때 대답을 수락하십시오;) – pills

관련 문제