← 이전 | 목록 | 다음 →

조건문

조건문이란 조건에 따라 다르게 행동하는 것입니다.

사실 여러분은 이미 조건문을 알고 있습니다.

일찍 일어나는 새가 벌레를 잡고, 늦잠을 자는 새는 벌레를 놓친다.

짝. 짝. 짝.

당신은 이미 프로그래머입니다.

강의를 마치겠습니다.









































사실 더 배웁니다.

농담은 여기까지 하고, 진짜로 배워봅시다. (사실 이 강의에 “진짜”는 별로 없습니다.)

if

파이썬에서 조건문은 if로 씁니다. (“만약”이라는 뜻입니다. 몰랐다면 중학교 영어 시간에 뭐 하셨나요?)

if True:
    print("실행됨")

결과:

실행됨

축하합니다. 방금 조건문을 실행했습니다. 트로피는 없습니다.

if 다음에 조건을 쓰고, 그 조건이 True면 아래 코드가 실행됩니다. 참 쉽죠?

한번 거짓으로 해봅시다.

if False:
    print("실행됨")

결과:


아무것도 안 나옵니다. False니까요. 당연합니다. 안 나온 걸 나왔다고 우기면 그건 조건문이 아니라 사기입니다.

콜론과 들여쓰기

주목해야 할 게 두 가지 있습니다. (주목 안 하면 나중에 눈물 흘리게 됩니다.)

  1. if 문 끝에 :(콜론)을 씁니다.
  2. 그 안에서 실행할 코드는 들여쓰기(앞에 공백 4칸)를 합니다.
if True:
    print("첫 번째 줄")
    print("두 번째 줄")
print("세 번째 줄")

결과:

첫 번째 줄
두 번째 줄
세 번째 줄

앞에 두 줄은 들여쓰기가 되어 있어서 if 안에 속합니다. 마지막 줄은 들여쓰기가 없어서 if랑 눈도 안 마주치고 그냥 실행됩니다.

들여쓰기를 안 하면 어떻게 되냐고요? 한번 화나게 해봅시다.

if True:
print("실행됨")

결과:

IndentationError: expected an indented block after 'if' statement on line 1

Python이 화냅니다. 그것도 아주 구체적으로 화냅니다. “몇 번째 줄에서 뭘 기대했는데 없다”까지 콕 집어 알려줍니다. 한국 부모님보다 친절합니다.

들여쓰기는 선택이 아니라 필수입니다. 스페이스바를 아끼다가 인생을 낭비하지 마십시오.

진짜 조건 써보기

05강에서 배운 비교 연산자, 논리 연산자, 기억나시나요? 기억 안 나도 상관없습니다. 코드가 다 기억하고 있습니다. 여러분 대신.

age = 20

if age >= 18:
    print("성인입니다")

결과:

성인입니다

age가 20이니까 age >= 18은 True고, 그래서 실행됐습니다.

이제 아셨죠? 05강이 그냥 있던 게 아닙니다. 여러분이 그때 “이걸 왜 배우지” 하면서 딴 생각한 거, 다 압니다. 지금 써먹으니까 됐습니다.

else

조건이 거짓일 때 대신 실행할 코드를 정할 수 있습니다. 인생과 다르게 파이썬은 항상 대안을 마련해줍니다.

age = 15

if age >= 18:
    print("성인입니다")
else:
    print("미성년자입니다")

결과:

미성년자입니다

age가 15라서 age >= 18은 False입니다. 그래서 else 아래가 실행됩니다.

둘 중 하나는 무조건 실행됩니다. 도망갈 곳이 없습니다. 세금이랑 비슷합니다.

elif

조건이 여러 개일 때는 elif(“else if”의 줄임말)를 씁니다. “엘리프”라고 읽습니다. “엘프”가 아닙니다. 판타지 소설 아닙니다.

score = 75

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
else:
    print("F")

결과:

C

위에서부터 순서대로 확인합니다.

한번 조건이 맞으면 그 아래는 확인도 안 합니다. 게으른 게 아니라 효율적인 겁니다. (게으른 거 맞는데 효율적이라고 우기는 겁니다.)

elif는 몇 개든 쓸 수 있습니다. else는 맨 마지막에 한 번만 쓸 수 있고, 아예 안 써도 됩니다. else는 있어도 그만 없어도 그만인, 회식 2차 같은 존재입니다.

중첩 조건문

if 안에 또 if를 넣을 수 있습니다. 러시아 인형처럼요. 뭔지 모르면 검색해보세요. 저도 몰라서 방금 검색했습니다.

age = 20
has_ticket = True

if age >= 18:
    if has_ticket:
        print("입장 가능")
    else:
        print("티켓이 없습니다")
else:
    print("미성년자는 입장 불가")

결과:

입장 가능

들여쓰기가 한 단계씩 더 깊어집니다. 딱 보면 안쪽 조건이 바깥쪽 조건에 속해 있다는 걸 알 수 있습니다. 마치 재벌 3세가 회장님 밑에, 그 밑에 또 뭐가 있는 것처럼요.

참고로 이렇게 중첩을 너무 많이 하면 코드가 옆으로 계단처럼 뻗어나가서 읽기 힘들어집니다. 이걸 전문 용어로 화살표 안티패턴이라고 부르는데, 알아두면 있어 보이고 몰라도 사는 데 지장 없습니다.

방금 예제는, 사실 and를 쓰면 조건 하나로 줄일 수 있습니다.

if age >= 18 and has_ticket:
    print("입장 가능")
else:
    print("입장 불가")

05강에서 배운 논리 연산자가 여기서도 빛을 발합니다. 그때 괜히 배운 게 아니라니까요. 이 강의는 복선 회수를 참 좋아합니다. 드라마도 아닌데.

결론

오늘은 조건문을 배웠습니다.

if도 배웠고, else도 배웠고, elif도 배웠고, 중첩 조건문까지 배웠고, 러시아 인형도 알게 됐고, 화살표 안티패턴이라는 있어 보이는 단어도 하나 주웠습니다.

사실 여러분은 강의 시작부터 조건문을 알고 있었습니다. 새가 벌레를 잡네 마네 하면서요. 그런데도 이만큼 더 배웠습니다.

이상하죠? 원래 다 아는 걸 다시 배우면 더 확실해지는 법입니다. (아니면 그냥 강의가 길어진 걸 수도 있습니다.)

마법입니다.

이제 07강으로 넘어가십시오(반복문을 배울 것입니다. 같은 걸 계속 반복하는데, 이 강의도 이미 그러고 있었네요).

← 이전 | 목록 | 다음 →