Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Theme 3

Condition Statement (조건문)


Contents

  1. 조건문
  2. 조건문의 형태
    1. 1. if
    2. 2. elif
    3. 3. else
    4. 예시
  3. 조건 (논리식)
    1. 1. 비교 연산자 (Comparison Operator)
    2. 2. 논리 연산자 (Logical Operator)
    3. 정리
  4. 조건의 활용
    1. 1. 짝수/홀수를 구분하여 출력하는 프로그램
    2. 2. 어떤 수가 두자릿수 이상인지 확인하는 프로그램
    3. 3. 어떤 수가 정수인지 정수가 아닌 유리수인지 확인하는 프로그램
  5. 조건문 심화

조건문

예를 들어 우리가 아래와 같은 프로그램을 만들고 싶다고 가정해봅시다.

  • 짝수/홀수를 구분하여 출력하는 프로그램
  • 어떤 수가 두자릿수 이상인지 확인하는 프로그램
  • 어떤 수가 정수인지 정수가 아닌 유리수인지 확인하는 프로그램

이런 프로그램을 제작하기 위해서는 “조건문”이라는 프로그래밍에서 굉장히 중요한 문법을 알아야합니다.

조건문 : 어떤 논리식이 참인 경우에만 특정 코드를 실행하게 만들어주는 구문

조건문의 형태

조건문에는 총 3가지의 형태가 있습니다.

1. if

if <조건>:
    <참일  실행할 내용 1>
    <참일  실행할 내용 2>
    ...
<조건문 외부>

가장 기본적인 형태의 조건문입니다.
<조건>이 참인 경우, 그 안의 내용을 실행합니다.

조건문 내부의 내용들은 함수와 마찬가지로 한 번 들여써야 합니다.

2. elif

elif <조건>:
    <참일  실행할 내용 1>
    <참일  실행할 내용 2>
    ...
<조건문 외부>

elif는 else if를 합쳐 만든 말입니다.
즉, 위의 조건들이 거짓인 경우, <조건>이 참일 때 그 안의 내용을 실행합니다.

elif 위에는 반드시 if 혹은 다른 elif 구문이 이어져서 등장해야합니다.
두 구문 사이에 다른 파이썬 코드가 들어가면 안됩니다.

3. else

else:
    <참일  실행할 내용 1>
    <참일  실행할 내용 2>
    ...
<조건문 외부>

위의 조건들이 거짓인 경우, 그 안의 내용을 무조건 실행합니다.
따라서 else 구문에는 조건이 붙을 수 없습니다.

else 역시 마찬가지로 반드시 if 혹은 다른 elif 구문이 이어져서 등장해야합니다.
두 구문 사이에 다른 파이썬 코드가 들어가면 안됩니다.

예시

따라서 조건문은 아래와 같이 만들 수 있습니다.

if <condition0>:    # condition0이 참이라면
    print("case 0")
elif <condition1>:  # condition0이 참이 아닐 때 condition1이 참이라면
    print("case 1")
elif <condition2>:  # condition0과 condition1이 참이 아닐 때 condition2가 참이라면
    print("case 2")
else                # 그 외의 경우라면
    print("other case")    

중요한 것은 위 코드는 아래 코드와 같지 않다는 것 입니다.

# 이 코드에서는 모든 조건을 전부 검사합니다
if <condition0>:
    print("case 0")
if <condition1>:
    print("case 1")
if <condition2>:
    print("case 2") 

조건 (논리식)

이제는 조건문에 있어서 가장 중요한 조건을 설정해보겠습니다.

조건과 관련한 연산자는 2가지가 있습니다.

1. 비교 연산자 (Comparison Operator)

연산자수학 기호설명
a == ba = b ?a와 b가 같은가?
a != ba ≠ b ?a와 b가 같지 않은가?
a > ba > b ?a가 b보다 큰가?
a < ba < b ?a가 b보다 작은가?
a >= ba ≥ b ?a가 b보다 크거나 같은가?
a <= ba ≤ b ?a가 b보다 작거나 같은가?

2. 논리 연산자 (Logical Operator)

연산자설명
<조건1> and <조건2><조건1>과 <조건2>가 둘 다 참인가?
<조건1> or <조건2><조건1>과 <조건2> 중 하나라도 참인가?
not <조건><조건>이 참이 아닌가?

정리

비교 연산자와 논리 연산자를 적절히 사용하면 어떤 조건이든 만들 수 있습니다.

대부분의 언어는 비교 연산자를 연속하여 사용할 수 없지만,
파이썬은 a < b < c == d > e 같은 구문도 허용합니다.

만약 여러 개의 논리식을 사용한다면 ()를 사용하여 우선 순위를 지정해주세요.
<조건1> and <조건2> or <조건3><조건1> 그리고 <조건2>가 참이거나 <조건3>이 참인가?를 의미하고
<조건1> and (<조건2> or <조건3>)<조건1>이 참인가? 그리고 <조건2> 또는 <조건3>도 참인가?를 의미합니다.

참고로 논리 연산자의 우선순위는 아래와 같습니다.

  1. not
  2. and
  3. or

조건의 활용

그러면 맨 앞에서 제시한 것들을 조건문으로 만들어봅시다!

1. 짝수/홀수를 구분하여 출력하는 프로그램

n = input()
if(n % 2 == 0): # 2로 나눈 나머지가 0인가?
    print("even")
else
    print("odd")

짝수의 특징은 2로 나누어 떨어진다는 것 입니다.
이 특징을 활용하여 위와 같이 조건을 세웠습니다.

2. 어떤 수가 두자릿수 이상인지 확인하는 프로그램

n = input()
if(n >= 10): # n이 10 이상인가?
    print("digit >= 2")
else
    print("digit < 2")

두 자릿수는 (정수인 경우) 언제나 10 이상입니다.
이 특징을 활용하여 위와 같이 조건을 세웠습니다.

3. 어떤 수가 정수인지 정수가 아닌 유리수인지 확인하는 프로그램

n = input()
if(n == int(n)): # n과 n을 정수로 캐스팅한 값이 같은가?
    print("integer")
else
    print("not an integer")

정수인지 확인하려면 강제로 정수로 캐스팅 했을 때 값이 같은지 확인하면 됩니다.
정수는 캐스팅하면 그대로 정수고, 그 외에는 소수부가 제거되므로 서로 달라집니다.

조건문 심화

이 내용은 CS1 범위 외의 내용입니다.
알아두면 코드를 훨씬 빠르게 짤 수 있으니 읽어두면 도움이 될겁니다.

대부분의 언어에서 0은 false를, 그 외는 true를 의미합니다.

단, 문자 '0'은 0이라는 글자를 의미하는 것이지 0을 의미하진 않으므로 true입니다.
문자(str)은 "" 아무것도 없을 때 false입니다.

따라서 아래 두 코드는 서로 같은 코드입니다.

a = 1
if (a != 0):
    print ("a is True")
a = 1
if (a):
    print ("a is True")

굳이 왜 이렇게 해야하나 하실 수도 있지만,
만약 이것이 익숙하진다면 훨씬 간단하면서도 직관적으로 코드를 짤 수 있습니다.