2017-10-19 91 views
-1

我一直遇到由於嵌套If語句無法正常工作而導致的運行時錯誤。對JES不太瞭解,所以我爲什麼要伸出援手。基本上,(見下文源代碼),我下一頁末(用於W的功能randrange產生新的XY coords)使用和newY如果超過599或以下,然後設置VAR回到0嗯,我看到
JES,嵌套if語句不能正常工作

getPixel(picture,x,y):y(= -22)小於0或大於高度 (= 599) 錯誤值爲: 不正確的參數值(正確類型)。 嘗試將參數傳遞給函數時發生錯誤。 請檢查e行39:\ DOX \硬件\ 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

'triggered = 1'不會在您發佈的代碼中縮進,在'if color == red'下。在stackoverflow上的格式錯誤 – roganjosh

+0

,它在本地縮進。 – ohGosh

回答

0

我懷疑問題來自**elif** newY > 599 or newY < 0:這意味着,如果前面的測試(newX > 599 or newX < 0)被觸發,則newY是未經測試。將elif替換爲if,它應該可以工作。

+0

會嘗試,謝謝! – ohGosh

+0

作品,謝謝 – ohGosh

+2

太棒了!請接受答案;) – pills