당신은 멋쟁이, 우리는 장고쟁이~

0%

Python 기초 8편 - if elif else

Python 기초 - if, elif, else


if, elif, else

if, elif, else 문은 조건적으로 구문 혹은 코드블럭을 실행 시킬때 사용됩니다.

조건들은, True 혹은 False 가 될수 있고, 해당 조건이 True 일때 하나의 코드 블럭을 실행 시킵니다.

조건이 False 라면, 코드 블럭을 실행 시키지 않거나, 다른 코드들을 실행 시킬수 있습니다.


if 문


파이썬에서 if 문은 다른 프로그래밍 언어에서 존재하는 if 와 같습니다.


if 는 논리적 수식의 값을 바탕으로 하는 조건에 따라서, 구문의 조각들을 실행 시킵니다. 논리적 연산을 통해 나오는 조건의 값은 보통 True 혹은 False 이고, 이 값에 따라서, 코드 블럭을 실행 시킵니다.


if 문의 일반 형태는 아래와 같습니다.


1
2
3
4
if expression:
statement_1
statement_2
...

위의 예시에서, expression 은 조건을 지정하는 수식으로, 불리언식을 기반으로 합니다.


불리언식이 평가되고, true 혹은 fasle 값을 만들어 낼때, 수식이 true 인경우 들여쓰기된 모든 구문들이 실행 됩니다. 이 구문을 블럭이라고 부릅니다.


if ..else 문


파이썬에서 if.. else 문은, 두개의 블럭들을 가지고 있습니다.


하나는 if 문 을 따르고, 하나는 else 문 을 따릅니다. 아래 문법 구조를 참조합니다.


1
2
3
4
5
6
7
if expression:
statement_1
statement_2
...
else:
statement_3
statement_4

위의 상황에서, 만약 expression 이 True 로 평가되면, if 문 안에 있는 코드 블럭들이 실행되고.


expression 이 false 로 평가되면, else 문 안에 있는 코드 블럭들이 실행됩니다.


아래 예시를 참조해 봅시다. 프로그램은 ‘값은 10 입니다’ 라는 두번째 문장을 실행 시킵니다.


1
2
3
4
5
a = 10 
if(a > 10):
print('값은 10보다 큽니다')
else:
print('값은 10입니다')

if elif ..else 문


때때로, 조건이 몇가지 있는 상황들이 발생합니다. 이런 상황을 다루기 위해서, 파이썬에서는 elif 문을 if 문과 else 문 사이에 추가하여, 조건을 추가하는것을 허용합니다.


아래 예시를 들어봅니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
b = 1 + 2j 
if (type(b) == int):
print("b 는 정수 입니다")
elif (type(b) == float):
print("b 는 실수 입니다")
elif (type(b) == complex):
print("b 는 복소수 입니다")
elif (type(b) == bool):
print("b 는 불리언 입니다")
elif (type(b) == str):
print("b 는 문자열 입니다")
elif (type(b) == tuple):
print("b 는 튜플 입니다")
elif (type(b) == dict):
print("b 는 사전 입니다")
elif (type(b) == list):
print("b 는 리스트 입니다")
else:
print("b 의 타입은 모르는 타입입니다")

복소수인 b 라는, 복소수가 다른 데이터 형태 인지 아닌지에 대한 조건에 따라서, 문자열을 출력합니다. elif 를 통해서 많은 조건들을 추가하였습니다.


if ..else 문의 중첩


보통의 경우, if-else 문의 중첩은 우리가 하나 이상의 조건을 확인하고 싶을때 사용됩니다.


예를들면,


1
2
3
4
5
6
7
8
9
age = 35
if (age >= 11):
print("놀이기구에 탈수 있는 나이 입니다")
if (age <= 20 or age >= 60):
print("청소년과 노약자의 사용료는 12,000원 입니다")
else:
print("일반 사용료는 18,000원 입니다")
else:
print("11세 미만인 나이이므로, 놀이기구 사용을 할수 없습니다")

테스트해볼 조건 안에, 또다시 테스트해볼 조건이 있는것으로. 위 예시에서는, 나이가 11세 이상인 조건을 전제로, 조건을 하나 더 추가하였습니다.


20세 이하 혹은 60세 이상 청소년 혹은 노약자에는 사용료를 받습니다.


그 외의 나이대에 속하는 사용자는, 18000 원으로 일반 가격을 지불해야 합니다.


11세가 되지 않는다면, 11세 미만이므로, 놀이기구를 사용할수 없다는 메시지가 출력됩니다.


if ..else 문의 사용


if 문 안에 연산자 사용하기


1
2
3
4
5
6
7
8
9
# if 문 안에 and 연산자 사용하기 
x = False
y = True

# x 와 y 둘다 True 일때, x and y 는 True 로 평가됩니다.
if (x and y):
print('x 와 y 둘다 True 입니다')
else:
print('x 는 False 혹은 y 가 False 입니다. 그렇지 않다면 x 와 y 둘다 False 입니다')

in 연산자를 if 문에 사용하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# in 연산자를 if 문에 사용하기 
# 문자열 생성
s = 'Django'

# 리스트 생성
frameworks = ['Django', 'Flask', 'Tornado']

# s 가 frameworks 안에 있는지 in 연산자를 사용하여 확인할수 있습니다.

if s in frameworks:
print(s + ' Framework')

# 혹은, if 문을 or 연산자를 사용하여 사용할수도 있습니다.
if s == 'Django' or s == 'Flask' or s == 'Tornado':
print(s + ' Framework')

if-else 를 한줄로 작성하기


1
2
3
4
5
6
7
8
9
# if-else 를 한줄로 작성하기 
# 정수를 하나 생성하기
n = 150
print(n)

# n 이 500 보다 크면, n 은 7로 곱해집니다
# 그렇지 않다면, 7 로 나누어집니다.
result = n * 7 if n > 500 else n / 7
print(result)

not 연산자를 사용한 if 문


1
2
3
4
5
6
7
8
9
10
11
# not 을 사용하여 논리 값을 반대로 바꿀수 있습니다. 
# 정수를 하나 생성하기
x = 20
print(x)

# not 연산자는, 조건값을 반대로 만듭니다

if not x == 50: # x == 50 은 False 를 만들지만, 앞에 not 이 붙어 있기 때문에, if 는 True 가 됩니다
print("값은 50과 다릅니다")
else:
print("x의 값은 50과 같습니다")