본문 바로가기

프로그래밍/Python

파이썬 강좌 :: 11. 조건문, if문

조건문을 시작하며


여러분이 만드는 프로그램은 다양한 상황 속에서 실행됩니다. 너무 당연한 얘기아닌가요? 여러분들이 작성하는 코드의 대부분은 변수와 관련되있으니깐요.


변수의 값이 무엇이냐에 따라 프로그램의 결과는 달라질 수 밖에 없어요. 항상 결과가 같다면 그것은 프로그램이라고 부르기 힘들죠.


다양한 상황에 대응하기 위해 우리는 조건문을 배워야 해요. 특정 조건이 만족하는 경우 어떤 코드는 실행되고 어떤 코드는 실행되지 않아야 할 때가 있기 때문이에요. 조건문 중 하나인 if문은 그것을 가능하게 해주어요.



if문의 형태


if문은 다음과 같이 if 라는 단어와 함께 조건식(test-expression) 그리고 들여쓰기가 된 코드(indented-statement)로 구성되요.


if test-expression :

....indented-statement


if문은 조건식이 참을 반환할 때, 들여쓰기가 된 코드들을 수행해요. 반대로 조건식이 거짓을 반환한다면 들여쓰기가 된 코드는 수행하지 않고 넘어가게 되요.


예를 들어 변수 x의 값이 10 이상일 때만 hello world!라는 문자열을 출력하고 싶다면 다음과 같은 형태로 코드를 작성해야되요.


if x > 10 :

    print("hello world!")


여기서 x > 10이 조건식이에요. 만약 x의 값이 20이라면 x > 10이라는 식은 True를 반환하겠죠? 결국 print("hello world!") 라는 코드가 수행되어져 콘솔창에는 hello world가 출력될 꺼에요.



if문은 언제쓸까?


다시 언급하지만 if문이 필요한 이유는 프로그램은 다양한 상황을 대비해야 하기 때문이에요. 아주 대표적인 if문 사용 예를 하나 들어볼까요?


if y != 0 :

    result = x / y


위 코드에서는 if문을 통해 y의 값이 0이 아닐때만 나눗셈을 하도록 제한을 두고 있어요. 왜 그럴까요? 그 이유는 수학에서는 0으로 나누는 행위를 할 수 없기 때문이에요. 만약 if문이 없었다면 어떻게 됬을까요? 자칫 잘못했다간 0으로 나누는 말도 안되는 사태가 발생할 수 있었을 거에요.




예외 처리


지금까지 if문을 통해 조건식이 만족할 경우에만 실행되는 코드를 작성하는 법을 배웠어요. 이번에 배울 것은 조건식이 만족하지 않을 경우에 실행되는 코드를 작성하는 방법이에요.


if test-expr :

....indented-statement

else :

....indented-statement


else문은 자신의 짝꿍인 하나의 if문이 필요해요. 왜냐하면 else문은 짝꿍 if문의 조건식이 거짓을 반환했을 경우 실행되기 때문이에요. 그래서 else문에는 조건식이 따로 필요가 없고 짝꿍 if문만 있으면 되요.


위에서 들었던 예시를 좀 더 보강해보도록 할게요. 만약 y의 값이 0일 경우 에러를 발생시킨다면 좋겠죠?


if y != 0 :

    result = x / y

else :

    print("error : can't divide to zero ")




중복 조건 검사




ㆍelif문



elif문을 사용하면 조건식을 중첩해서 검사해 볼 수 있습니다.


if test-expr :

....indented-statement

elif test-expr:

....indented-statement

elif test-expr:

....indented-statement


elif문의 작동 방식의 이해를 돕기 위해 학점 계산기를 예를 들어보겠습니다. 변수 score에 저장된 수에 따라 학점이 출력되는 간단한 프로그램을 if문과 elif문 두방식으로 만들어보겠습니다. 두 경우 전부 올바른 결과를 출력하지만 성능면에서 차이가 나게됩니다.


# studyif03.py


score = 75


if score >= 90 :

    print("A")

if 80 <= score and score < 90 :

    print("B")

if 70 <= score and score < 80 :

    print("C")

else :

    print("F")


if문으로 연속적으로 값을 검사하여 해당하는 학점을 출력할 수 있습니다. 그러나 elif를 사용한다면 다음과 같이 효율적으로 프로그램을 작성할 수 있습니다.


# studyif04.py


score = 75


if score >= 90 :

    print("A")

elif score >= 80 :

    print("B")

elif score >= 70 :

    print("C")

else :

    print("F")


elif문의 특징은 위와 같이 전에 수행됬던 검사가 다음 검사에 영향을 미친다는 점입니다. if문 같은 경우는 각각의 if문이 개별적으로 값을 검사하지만 elif문은 하나의 실행흐름을 공유합니다. 따라서 전에 검사했던 결과를 재검사 해야하는 불편을 덜어줍니다.







x = 10

if x < 5 :

print("hi")

print("hi")


Q. 위 코드가 적혀있는 스크립트를 실행시키면 'hi'는 몇번 출력될까요?



y = 80

if y >= 90 :

print("You get an A")

elif y >= 80 :

print("You get a B")

elif y >= 70 :

print("You get a C")

else :

print("You get a F")


Q. 위 코드가 적혀있는 스크립트를 실행시키면 무슨 값이 출력될까요?


Q. 변수 x는 if문의 조건식에 의해 몇번 검사되어지나요?




y = 80

if y >= 90 :

print("You get A")

if 80 <= y and y <= 90 :

print("You get B")

if 70 <= y and y <= 80 :

print("You get C")

if y < 70 :

print("You get F")


위 코드는 2번 코드와 같은 결과를 출력합니다.

Q. 2번 코드와 이 코드중 좋은 코드는 무엇이며 그 이유는 무엇인가요?