이미 한참 앞에서 정해진 과제를 해결했지만, 솔직히 말해서 하나의 명령 모음을 처음부터 끝까지 따라가는 오래된 뮤직 박스 그 이상까진 가지 않았습니다. 프로그래밍을 더욱 강력하게 해주는 요소는 조건문입니다. 값에 대하 변수를 시험 하는 능력이 있으며 변수에 대한 조건을 만날 경우 한 방식대로 동작하고 그렇지 않으면 다른 방식으로 동작합니다. 프로그래머들이 보통 부르기로는 *if 조건문*이라고 합니다.
조건이 True*인지 *False*인지 알려면, 새 데이터 형식 부울린이 필요합니다. 부울린 형식은 논리 연산자를 허용합니다. 논리 구문 또는 논리 연산자는 *True 또는 *False*로 계산할 수 있습니다. 조건문은 다음과 같이 이해할 수 있습니다:
- if (참인지 판단할 조건):
‘True’일 경우에만 아래 구문을 실행
- else:
그렇지 않을 경우 ‘False’일 경우에만 아래 구문을 실행합니다.
조건문은 True 또는 False*의 값을 판단하는 그 어떤 동작이든 취할 수 있습니다. 비교문은 항상 *True 또는 False 를 반환하는데, 비교 연산자의 예로는 ==
(같음), >
(보다 큼), <
(보다 작음)이 있습니다.
else 부분은 선택적입니다. 비워두면 조건의 결과로 ‘False’가 나왔을 때 아무일도 일어나지 않습니다.
몇 가지 예제를 보여드리겠습니다. 한줄 한줄 읽어보시고 어떤 동작을 하는지 보시든지, 각 부분을 실행해보십시오:
condition = True
if condition:
print("condition met")
if not condition:
print("condition not met")
direction = -30
if direction > 0 :
turtle.forward(direction)
else:
turtle.left(180)
turtle.forward(-direction)
파이선 거북이는 다음 지시를 매우 잘 따르는 존재가 될 수 있습니다. 거북이가 움직이는 방향을 사용자가 요청할 수 있는 input()
함수를 사용해보도록 하겠습니다. 쉽게 하기 위해 “left”와 “right” 두가지 명령만 받아들이도록 하겠습니다.
주석
파이썬 2를 사용하시나요? input()
함수는 ``raw_input()``함수를 호출합니다.
다음과 같이 함수를 정의하는 것처럼 매우 쉽습니다:
def move():
direction = input("Go left or right? ")
if direction == "left":
turtle.left(60)
turtle.forward(50)
if direction == "right":
turtle.right(60)
turtle.forward(50)
이제 ``move()``를 언제든지 사용할 때마다 ``left``나 ``right``를 택하도록 질문을 받을 것입니다.
이 프로그램에서, 거북이는 다른 예외없이 정확하게 left
또는 right``에만 반응합니다. ``Left
또는 LEFT``는 사람에게 있어 같은 ``left``겠지만 프로그래밍을 할 경우에는 그렇지 않습니다. 파이썬에는 이런 상황에 도움을 줄 몇가지 쓸모있는 메서드가 있습니다. 문자열은 공백을 제거할때 사용하는 ``.strip()
메서드와 모든 글자를 소문자로 만드는 .lower()
메서드를 보유하고 있습니다.
``.strip()``과 ``.lower()``의 결과를 출력하는 간단한 예제를 보여드리겠습니다:
my_variable = " I Am Capitalised"
print(my_variable)
my_stripped = my_variable.strip()
print(my_stripped)
my_lower = my_variable.lower()
print(my_lower)
같은 결과를 보기 위해 move()
함수에 ``direction = direction.strip().lower()``를 추가해보십시오. 이런 코드를 종종 “데이터 은폐”라고 하며, 매우 일반적으로 사용합니다.
거북이가 다른걸 그릴 수 있게 추가 입력 선택을 넣을 수 있겠나요? ``hexagon``은 어떤가요?