조건문

소개

이미 한참 앞에서 정해진 과제를 해결했지만, 솔직히 말해서 하나의 명령 모음을 처음부터 끝까지 따라가는 오래된 뮤직 박스 그 이상까진 가지 않았습니다. 프로그래밍을 더욱 강력하게 해주는 요소는 조건문입니다. 값에 대하 변수를 시험 하는 능력이 있으며 변수에 대한 조건을 만날 경우 한 방식대로 동작하고 그렇지 않으면 다른 방식으로 동작합니다. 프로그래머들이 보통 부르기로는 *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``은 어떤가요?