Я не совсем понимаю вашу логику для случаев прямоугольника, но, учитывая, что rec1 и rec2 имеют значение True False для условий в прямоугольнике 1 и 2. ваше объяснение будет:
, а (не rec2) -уже достаточно, так как он должен работать в любом случае, кроме случаев, когда rec2 - True. Посмотрите на возможные логические наборы (rec1, rec2)
(0,0), (0,1), (1,0), (1,1) -> (запустить), (не запускать), (запустить), (не запускать), поэтому мы хотим (0,0) или (1,0) -> (X, 0) -> не rec2
И вы хотите, чтобы он работал во всех случаях, кромегде это находится в rec2. Упрощение логики оставляет (не rec2). Посмотрите на булевы уравнения. * этот тип означает, что rec1 не нужен
Также обратите внимание, что ваши функции, которые обновляют rec1 и rec2, не находятся в цикле while. Вы, вероятно, хотите, чтобы они тоже были внутри, иначе они никогда не будут обновляться во время цикла while, поэтому, если вы введете его, вы никогда не узнаете, где вы находитесь. Кроме того, выполните отладку, напечатав значения x0, y0 в цикле и дважды проверьте свою логику. Вот измененная функция для вас, чтобы попробовать.
def ranWalkRects(t,x0,y0,x1,y1,w1,h1,x2,y2,w2,h2,dz):
"""has turtle t start at x0,y0 outside of both rectangles.
Execute a random walk until it is inside or on the boundary of rectangle 1 but not
inside or on the boundary of rectangle 2. Assume that rectangle 1 overlaps rectangle
2 but that rectangle 1 does not lie entirely inside rectangle 2. Print out how many
times the turtle moves from its starting position to the final position. Dz is
the step size for the random walk. """
rec1 = isInRect(t,x1,y1,w1,h1)
rec2 = isInRect(t,x2,y2,w2,h2)
t.pu()
t.goto(x0,y0)
t.pd()
num_steps = 0
while not rec2:
ngl = random.randint(0,359)
t.lt(ngl)
t.fd(dz)
num_steps+=1
x0,y0 = t.pos()
print(x0,y0) # print for debug.
rec1 = isInRect(t,x1,y1,w1,h1) #this updates your conditions
rec2 = isInRect(t,x2,y2,w2,h2)
print("Turtle takes ", num_steps,"steps before entering the rectangle")
ranWalkRects(tess,100,100,50,50,100,75,30,30,100,75,20)
Конечно, это предполагает, что ваша логика верна, и тесты работают правильно. Я рекомендую вам отладить и попытаться подставить фиктивные значения для x0 и y0, чтобы убедиться, что ваша логика и тесты работают.
Также убедитесь, что вы инициализировали прямоугольники хотя бы графически. Вы никогда не вызывали прямоугольник в загруженном скрипте.