Theme 3
Condition Statement (조건문)
Contents
조건문
예를 들어 우리가 아래와 같은 프로그램을 만들고 싶다고 가정해봅시다.
- 짝수/홀수를 구분하여 출력하는 프로그램
- 어떤 수가 두자릿수 이상인지 확인하는 프로그램
- 어떤 수가 정수인지 정수가 아닌 유리수인지 확인하는 프로그램
이런 프로그램을 제작하기 위해서는 “조건문”이라는 프로그래밍에서 굉장히 중요한 문법을 알아야합니다.
조건문 : 어떤 논리식이 참인 경우에만 특정 코드를 실행하게 만들어주는 구문
조건문의 형태
조건문에는 총 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 == b | a = b ? | a와 b가 같은가? |
a != b | a ≠ b ? | a와 b가 같지 않은가? |
a > b | a > b ? | a가 b보다 큰가? |
a < b | a < b ? | a가 b보다 작은가? |
a >= b | a ≥ b ? | a가 b보다 크거나 같은가? |
a <= b | a ≤ b ? | a가 b보다 작거나 같은가? |
2. 논리 연산자 (Logical Operator)
연산자 | 설명 |
<조건1> and <조건2>조건2>조건1> | <조건1>과 <조건2>가 둘 다 참인가?조건2>조건1> |
<조건1> or <조건2>조건2>조건1> | <조건1>과 <조건2> 중 하나라도 참인가?조건2>조건1> |
not <조건>조건> | <조건>이 참이 아닌가?조건> |
정리
비교 연산자와 논리 연산자를 적절히 사용하면 어떤 조건이든 만들 수 있습니다.
대부분의 언어는 비교 연산자를 연속하여 사용할 수 없지만,
파이썬은 a < b < c == d > e
같은 구문도 허용합니다.
만약 여러 개의 논리식을 사용한다면
()
를 사용하여 우선 순위를 지정해주세요.
<조건1> and <조건2> or <조건3>
은<조건1>
그리고<조건2>
가 참이거나<조건3>
이 참인가?를 의미하고
<조건1> and (<조건2> or <조건3>)
은<조건1>
이 참인가? 그리고<조건2>
또는<조건3>
도 참인가?를 의미합니다.참고로 논리 연산자의 우선순위는 아래와 같습니다.
- not
- and
- 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")
굳이 왜 이렇게 해야하나 하실 수도 있지만,
만약 이것이 익숙하진다면 훨씬 간단하면서도 직관적으로 코드를 짤 수 있습니다.