조건문의 다양한 유형과 사용방법에 대해 정리합니다.
개요
- python의 주요 기능인 조건문의 개념과 활용방법에 대한 내용을 정리합니다.
condition (조건문)
-
특정 조건을 만족하는 경우에만 수행할 작업이 있는 경우 사용
-
모든 조건은 boolean으로 표현 된다. (몇몇 예외 사항에 대해서는 밑 부분에서 따로 정리)
-
if, elif, else 키워드가 사용
-
조건문의 경우 if, elif, else 블록에 종속된 코드는 들여쓰기(indent)로 표현 가능
-
즉 아래코드에서와 같이, 조건문 아래에 들여쓰기된 2줄의 코드만이 조건문의 조건에 따라 수행될 수도, 수행되지 않을 수도 있는 코드라고 할 수 있다.
-
들여쓰기 된 코드를 블록(block), 또는 코드블록이라고 함
-
python에서 모든 블록의 시작점의 마지막에는 :(콜론, colon) 을 반드시 추가해줘야 한다.
1
2
3
4
5
6
7
8
9
if 6 >= 5:
print ('6 is greater than 5') #if 조건에 따라 실행될수도, 수행되지 않을수도 있는 코드1
print ('Yeah, it is true') #if 조건에 따라 실행될수도, 수행되지 않을수도 있는 코드2
print ('This code is not belongs to if statements')
1
2
3
4
5
6
if 6 >= 5:
print('6 is greater than 5')
print('Yes, it is true')
print('it is really true')
print ('This code is not belongs to if statements')
6 is greater than 5 Yes, it is true it is really true This code is not belongs to if statements
1
2
3
4
5
6
if 6 == 5:
print('6 is greater than 5') # since 6 is not equal to 5, those 3 blocks will not printed
print('Yeah, it is true')
print('it is really true')
print ('This code is not belongs to if statements')
This code is not belongs to if statements
조건문의 논리
-
Logical AND, OR, NOT
-
조건문에 사용되는 조건의 경우, boolean(T/F)이기 때문에, 논리식 AND, OR, NOT 이 사용가능
-
대소문자 구별 없이 사용 가능
-
AND : and
-
OR : or
-
NOT : not
-
-
논리표
-
AND : 모든 조건이 True 일때만 True
-
T AND T : T
-
T AND F : F
-
F AND T : F
-
F AND F : F
-
-
OR : 여러조건중 1개만 True여도 True
-
T OR T : T
-
T OR F : T
-
F OR T : T
-
F OR F : F
-
-
NOT : 조건의 역!
-
NOT T : F
-
NOT F : T
-
-
-
우선순위
- NOT > AND > OR
1
2
3
a = 10
b = 8
c = 11
1
2
3
4
if (a == 10 or b == 9) and c == 12:
print('that is true')
# since there is no True, 'if statement' won't work.
1
2
if not a == 10: # Thus, it is same as 'if a!= 10'
print('a is ten')
if의 조건이 bool이 아닌 경우
-
일반적으로는 조건문에는 bool이 주로 위치 한다.
-
하지만, 정수, 실수, 문자열 리스트 등 기본 타입도 조건에 사용 가능하다.
-
False로 간주되는 값 ( = 각 데이터 타입의 기본값)
-
None
-
0 (int)
-
0.0 (float)
-
’’ (str)
-
[] -> 빈 리스트 (list)
-
() -> 빈 튜플 (tuple)
-
{} -> 빈 딕셔너리 (dict)
-
set() -> 빈 집합 (set)
-
-
그밖에는 모두 True로 간주
1
2
3
4
5
a = [] #empty list
if a:
print('print')
# Since empty list means False, so nothing is printed.
조건이 여러개일때의 조건문
if, else : 조건이 2개일 때
-
if가 아닌 경우, 나머지 조건을 표현하고 싶다면 바로 아래 else 블락 사용
-
이 경우, if조건이 True인 경우, if 블락의 코드가 수행, False인 경우 else 블락의 코드가 수행
-
주의 할 점 : if와 else사이에 다른 코드 삽입 불가
1
2
3
4
5
6
7
8
# 짝수인 경우에는 2로 나눈 값을 출력하고
# 홀수인 경우에는 1을 더한 값을 출력해라
a = 12
if a % 2 == 0: # 2로 나눈 나머지가 0이면 짝수
print(a / 2) # 짝수인 경우에는 2로 나눈 값을 출력
else:
print(a + 1) # 홀수인 경우에는 1을 더한 값을 출력
6.0
if, elif, else : 조건이 2개 이상일 때
-
조건이 여러개인 경우, 다음 조건을 elif 블록에 명시 가능
-
이 경우, 각 조건을 확인 후, True인 조건의 코드 블락을 실행 한 후, 전체 if, elif, else 구문을 종료
-
조건문을 사용할 때는, if 이후, 0개 이상의 elif를 사용 가능하며 0개 또는 1개의 else를 사용 가능함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
a = 17
if a % 4 == 0:
print 'a is divisible by 4'
elif a % 4 == 1:
print 'a % 4 is 1'
elif a % 4 == 2:
print 'a % 4 is 2'
else:
print 'a % 4 is 3'
1
2
3
4
5
6
7
8
9
10
11
a = 16
if a % 4 == 0:
print('a is divisible by 4')
elif a % 4 == 1:
print('a % 4 is 1')
elif a % 4 == 2:
print('a % 4 is 2')
else:
print('a % 4 is 3')
# 16 나누기 4의 몫은 0이어서 if문을 만족하므로 첫번째 print문이 시행되고 조건문이 종료된다.
a is divisible by 4
1
2
3
4
5
6
7
8
9
10
11
a = 19
if a % 4 == 0:
print('a is divisible by 4')
elif a % 4 == 1:
print('a % 4 is 1')
elif a % 4 == 2:
print('a % 4 is 2')
else:
print('a % 4 is 3')
# a가 19일때는 if문을 만족하지 않음 -> 첫번째 elif문 조건 판단 -> False -> 두번째 elif문 판단 -> False -> Else문 조건 실행
a % 4 is 3
즉, if, elif, else 는 하나의 set이고, 상위의 조건문에서 True가 되면 그 즉시 조건문이 종료된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
a = 16
if a % 4 == 0:
print('a is divisible by 4')
if a % 4 == 1:
print('a % 4 is 1')
if a % 4 == 2:
print('a % 4 is 2')
else:
print('a % 4 is 3')
# 16 나누기 4의 몫은 0이어서 첫번째 조건의 print 문이 실행되었지만,
# 2~3번째도 if문이기에 종료되지 않고 T/F를 확인해서 결과가 출력된다.
# 2~3번째는 모두 False이므로 else문의 print문이 출력된다.
a is divisible by 4 a % 4 is 3
1
2
3
4
5
6
7
8
9
10
11
12
a = 19
if a % 4 == 0:
print('a is divisible by 4')
if a % 4 == 1:
print('a % 4 is 1')
if a % 4 == 2:
print('a % 4 is 2')
else:
print('a % 4 is 3')
# a가 19일때는 첫번째 if문 만족하지 않음 -> 2번째 if문으로 넘어감 -> 2번째 if문도 만족하지 않음 -> 3번째 if문으로 넘어감
# -> 3번째 if문도 만족하지 않음 -> else 조건문 출력
a % 4 is 3
즉, 여러개의 if문의 경우 각각의 if문은 별개이다. 그렇기 때문에 어느 한 if문이 True여도 계속 해서 조건문이 실행되며 조건을 확인한다.
중첩 조건문(nested condition)
-
조건문의 경우 중첩하여 작성 가능
-
중첩의 의미는 depth(깊이)이고, depth의 제한은 없다.
-
다만, 실제 코드를 활용할때는 가급적 if문의 중첩을 줄이는게 좋다. (깊어질수록 복잡해서 이해가 어려우니깐)
1
2
3
4
5
6
7
8
9
10
a = 10
b = 9
c = 8
if a == 10: # a가 10이면 -> True -> 낮은 depth의 조건문 수행
if c == 8: # c가 8이면 -> True -> 낮은 depth의 조건문 수행
if b == 8: # b가 8이면, -> False -> else 조건으로 넘어감
print('a is ten and b is 8')
else:
print('a is ten and b is not 8')
a is ten and b is not 8
댓글남기기