조건문은 어떤 조건이 *True*인지 아닌지 요청하여 결정하는데 좋은 방법이긴 해요. 근데 하나의 조건 가지고는 충분하지 않을 때가 자주 있죠. 아마 결과의 반대를 취하려 할거예요. 아니면 turtle.xcor()
랑 turtle.ycor()
로 결정하려 한다면 이걸 결합해야 해요. 논리 연산자를 쓰면 해결할 수 있어요.
무언가 *False*로 되돌리고 싶으면 ``not``을 쓸 수 있어요. 이건 논리 연산자거든요:
x = False
if not x :
print("condition met")
else:
print("condition not met")
거북이가 화면을 지나가면서 그렸는지 안그렸는지 확인하도록 쓸모있는 함수를 주는데요, 그걸 turtle.isdown()``이라고 하겠습니다. 이 합수는 거북이가 그림을 그리면 *True* 값을 반환해요. 앞에서 보신대로 ``turtle.penup()
과``turtle.pendown()`` 토글 함수는 움직이는 동안 그릴것이냐, 그리지 않고 그냥 움직이기만 할 것이냐의 상태를 바꾸어요.
단순히 펜을 들었을때 전진만하는 함수를 작성할 수 있을까요?
def stealthed_forward(distance):
if not turtle.isdown():
turtle.forward(distance)
이해하기 쉬운 두 개의 연산자로는 ``and``랑 ``or``가 있어요. 말 그대로 동작해요::
if 1 < 2 and 4 > 2:
print("condition met")
if 1 > 2 and 4 < 10:
print("condition not met")
if 4 < 10 or 1 < 2:
print("condition met")
하나의 논리 연산자를 쓰는데 제한을 받진 않아요. 원하는 대로 붙일 수 있어요.
이미 원형 감옥에 거북이를 놓았었어요. 이제 상자를 만들어보기로 하겠어요. 거북이가 X or Y 방향으로 100 이상을 가면, 거북이를 가운데 주변으로 다시 돌려놓겠어요.
def forward(distance):
while distance > 0:
if (turtle.xcor() > 100
or turtle.xcor() < -100
or turtle.ycor() > 100
or turtle.ycor() < -100):
turtle.setheading(turtle.towards(0,0))
turtle.forward(1)
distance = distance - 1