본문 바로가기

IT프로그래밍

[Python]파이썬 조건문(if문) 문법 및 사용법 정리

프로그래밍에서 조건문을 직관적으로 표현하자면

컴퓨터에게 질문을 던지고, 질문의 답(참/거짓)에 따라 수행해야할 경로를 지정해주는 것과 같습니다.

 

1. if문

대표적인 프로그래밍 조건문은 if문 입니다.

c언어, java, 파이썬 등 대부분의 언어에서 사용법에 대한 문맥적인 차이는 있지만 if의 형식을 갖고 있습니다.

 

이해하기 쉽게 조건문의 코드작성을 한글로 표현해보면


만약(if) 오늘이 화요일이면

 ▶ 화면에 화요일이라고 출력해

만약(if) 오늘이 수요일이면

 ▶ 화면에 수요일이라고 출력해

만약(if) 오늘이 목요일이면

 ▶ 화면에 목요일이라고 출력해


라고 할 수 있습니다.

 

이렇게 코딩을 해놓고 실행을 했을 때, 컴퓨터는 제가 써놓은 질문에 대한 대답을 하면서 동작을 수행합니다.

컴퓨터 관점에서 위의 코드를 수행한다고 했을 때를 한글로 표현해보면 다음과 같습니다.


◆오늘은 수요일이라고 가정

 

만약(if) 오늘이 화요일이면        → 오늘은 화요일이 아님[거짓(False)]

 ▶ 화면에 화요일이라고 출력해 → 실행하지 않음

 

만약(if) 오늘이 수요일이면        → 오늘은 수요일이 아님[참(True)]

 ▶ 화면에 수요일이라고 출력해 → 화면에 수요일 출력

 

만약(if) 오늘이 목요일이면        → 오늘은 목요일이 아님[거짓(False)]

 ▶ 화면에 목요일이라고 출력해 → 실행하지 않음


모든 프로그래밍 언어의 기본적인 조건문은 다음과 같은 논리로 동작합니다.

그럼 파이썬을 통해서 방금 위에서 표현한 내용을 소스 코드로 만들어 보고

실행 결과를 보도록 하겠습니다.

 

소스 코드

today = "수요일"

if today == "화요일":
    print("화요일")
if today == "수요일":
    print("수요일")
if today == "목요일":
    print("목요일")

실행 결과

 

파이썬의 if 조건문에서는 다음과 같은 문법을 사용합니다

if(조건):

    실행할코드1

    실행할코드2

    .

    .

전에 포스팅 했던 for문처럼 코드블럭을 따로 써주지 않고 공백(탭)으로 지정합니다.

파이썬 for문(반복문)사용법 정리

 

[Python]파이썬 for / Python for / 파이썬 반복문 / Python 반복문

파이썬 반복문 파이썬 for문 입니다. 파이썬의 반복문을 예제를 통해 알아보고 c와 비교하여 어떤점이 다른지, 또 어떻게 사용하는지 기록해놓은 포스팅입니다. 파이썬에는 크게 2가지의 반복문이 있습니다. 1. f..

manniz.tistory.com

if로 물어본 조건이 참(True)일 때 그 아래 블럭으로 구분된 코드들을 실행시킵니다.

거짓(False)일 때는 해당 조건문의 블럭을 실행시키지 않고 건너뜁니다.

 

2. elif문

그럼 다음으로 if문과 필수불가결인 elif(또는 else if)와 else에 대해서 설명하겠습니다.

elif 또는 else if로 표현되는 문법이 있습니다.(파이썬에서는 elif로 쓰이기 때문에 여기에서는 이하 elif로 표기)

굳이 이것도 한글로 표현하면 "그게 아니라 ~ 라면" 정도로 표현할 수 있습니다.

 

이것도 글로 풀어서 설명해 보겠습니다.

 


a = 3이야

 

만약 a가 2라면

 ▶화면에 2라고 출력해

 

그게아니라 만약 a가 3이라면

 ▶화면에 3이라고 출력해

 

그게아니라 만약 a가 홀수면

 ▶화면에 홀수라고 출력해

 

그게아니라 만약 a가 짝수면

 ▶화면에 짝수라고 출력해


위의 조건글(?)을 실행해 보면 결과가 어떻게 나올까요 !?

a는 3이기 때문에 우선 화면에 3이라고 출력을 하고

또 a는 홀수 이기때문에 홀수라고도 출력을 할 것 같지만..

정답은 3 만 출력된다 입니다.

 

소스 코드와 실행결과로 확인해 보겠습니다.

 

소스 코드

a=3
if a == 2:             #조건문 1
    print(2)
elif a == 3:           #조건문 2
    print(3)
elif a % 2 == 1:       #조건문 3
    print("홀수")
elif a % 2 == 0:       #조건문 4
    print("짝수")

실행 결과

 

3은 홀수인가? 라는 것에 대한 대답이 참(True)임에도 화면에 "홀수"는 출력되지 않았습니다.

그 이유는 바로 해당 조건문이 elif문 이기 때문입니다.

elif문은 위에 정의된 if문 혹은 elif문 중에서 하나라도 참이 되는 것이 있으면

참/거짓 자체를 따지지 않고 실행되지 않습니다.

의미 자체가 "그게아니라~" 인데 위에서 이미 "맞다"라고 해버렸으니 "그게 아니라~"자체가 실행할 필요가 없어진 것입니다.

조건문 1실행 -> 거짓 -> 조건문 2실행 -> 참 -> 하위 elif문 실행안함 -> 끝

if(조건):

    실행할코드1

    실행할코드2

    .

    .

elif(조건):

    실행할코드1

    실행할코드2

    .

    .

반드시 하나의 if문에 종속되어 쓰여집니다. 따라서 if없이 elif는 단독으로 쓰일 수 없습니다. 

"그게아니라~"는 앞의 조건이 거짓이라는 것이 전제되어야 하는데 그 "앞의 조건"이 if문입니다.

 

그럼 바로 위 예제에서 3이라고도 출력하고, 홀수라고도 출력하고 싶으면 어떻게 해야할까요?

 

소스 코드

a=3
if a == 2:             #조건문 1
    print(2)
elif a == 3:           #조건문 2
    print(3)
if a % 2 == 1:         #조건문 3
    print("홀수")
elif a % 2 == 0:       #조건문 4
    print("짝수")

실행 결과

elif (a % 2 == 1):

if (a % 2 == 1):

으로 바꾸었습니다.

 

elif일때는 제일 상단의

if(a==2)라는 조건문에 종속되어 그 아래 종속된 모든 조건문의 결과에 따라 실행여부가 결정되었지만

if문으로 변경한 후에는 종속되어 지지 않기때문에 앞의 조건문의 결과에 따라 실행여부가 결정되지 않습니다.

조건문 1실행 -> 거짓 -> 조건문 2실행 -> 참 -> 하위 elif문 실행안함 -> 끝

조건문 3실행 -> 참 -> 하위 elif문 실행안함 -> 끝

 

 

3. else문

마지막으로 설명드릴 것은 else 입니다. 이것은 "모두 아닐때"를 의미합니다.


b = 100이야

 

만약 b가 2라면

 ▶화면에 2라고 출력해

 

그게아니라 만약 b가 3이라면

 ▶화면에 3이라고 출력해

 

그게아니라 만약 b가 홀수면

 ▶화면에 홀수라고 출력해

 

그게아니라 만약 b가 10보다작으면

 ▶화면에 b<10이라고 출력해

 

모두 아니면

 ▶화면에 맞는게없네 라고 출력해


 

if문에 종속되어 있다는 것은 elif와 동일합니다.

차이점이 있다면 else는 if문 하위에 1번만 정의할 수 있다는 것입니다.

위의 조건도 프로그래밍 해보겠습니다.

 

소스 코드

b=100
if b == 2:             #조건문 1
    print(2)
elif b == 3:           #조건문 2
    print(3)
elif b % 2 == 1:       #조건문 3
    print("홀수")
elif b < 10 :          #조건문 4
    print("b<10")
else:                  #else
    print("맞는게없네")

실행 결과

상위에 정의되어 있는 모든 조건들이 거짓(False)일 때에만 실행됩니다.

if(조건):

    실행할코드1

    실행할코드2

    .

    .

elif(조건):

    실행할코드1

    실행할코드2

    .

    .

else:

    실행할코드1

    실행할코드2

    .

    .

이상 파이썬 if 조건문 포스팅이었습니다.

 

if문 안에들어가는 조건에 관한 내용은 차후 포스트에서 설명드리겠습니다.

질문이나 지적은 댓글로 부탁드립니다.

 

대문용 사진;;;