코딩도장_Unit 14. else를 사용하여 두 방향으로 분기하기

김민주·2021년 12월 30일
0

AIFFEL_풀잎스쿨

목록 보기
6/23
post-thumbnail

if조건문은 분기(branch)를 위한 문법이다. 분기는 "둘 이상으로 갈라지다"라는 뜻으로 프로그램의 흐름을 둘 이상으로 나누는 것을 말한다.
ifelse를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다. 즉, 프로그램이 두 방향으로 분기하는 것이다.

14.1 else 사용하기

elseif조건문 뒤에 오며 단독으로 사용할 수 없다. if와 마찬가지로 콜론(:)을 붙이며 다음 줄에 실행할 코드가 온다.

if 조건식:
     코드1
else:
     코드2

14.1.1 if와 else의 기본 형태와 실행 흐름 알아보기

elseif의 조건식이 만족하지 않을 때 코드를 실행한다.

>>> x = 5 
>>> if x == 10:  # 조건을 만족하지 않는다.
         print('10입니다.')
    else:
         print('10이 아닙니다.')  # else의 print가 출력된다
    
10이 아닙니다.

<📎 참고) 변수에 값 할당을 if, else로 축약하기

>>> x = 5
>>> if x == 10:
...     y = x
... else:
...     y = 0
...
>>> y
0

if, else에서 변수에 값을 할당할 때는 변수 = 값 if조건문 else 값 형식으로 축약할 수 있으며 이런 문법을 조건부 표현식(conditional expression)이라고 부른다.

>>> x = 5
>>> y = x if x == 10 else 0
>>> y
0

14.2 else와 들여쓰기

elseif와 들여쓰기 규칙이 같다.
else도 코드가 여러 줄일 때는 들여쓰기 깊이가 같게 만들어 주어야 한다.

if x == 10:
    print('10입니다.') 
else:
    print('x에 들어있는 숫자는')
    print('10이 아닙니다.') 

14.3 if조건문의 동작 방식 알아보기

조건식이 아닌 값으로 if와 else의 코드를 동작시켜본다.

if True:
    print('참')    # True는 참
else:
    print('거짓')
 
if False:
    print('참')
else:
    print('거짓')    # False는 거짓
 
if None:
    print('참')
else:
    print('거짓')    # None은 거짓

# 실행결과
참
거짓
거짓

Trueif의 코드가, Falseelse의 코드가 실행된다.
특히 NoneFalse로 취급되므로 else의 코드가 실행된다.

14.3.1 if조건문에 숫자 지정하기

숫자는 정수, 실수와 관계없이 0이면 거짓, 0이 아닌 수는 참이다.

if 0:
    print('참')
else:
    print('거짓')    # 0은 거짓
 
if 1:
    print('참')    # 1은 참
else:
    print('거짓')
 
if 0x1F:    # 16진수
    print('참')    # 0x1F는 참
else:
    print('거짓')
 
if 0b1000:    # 2진수
    print('참')    # 0b1000은 참
else:
    print('거짓')
 
if 13.5:    # 실수
    print('참')    # 13.5는 참
else:
    print('거짓')

# 실행결과
거짓
참
참
참
참

14.3.2 if조건문에 문자열 지정하기

문자열은 내용이 있을 때 참, 빈 문자열은 거짓이다.

if 'Hello':    # 문자열
    print('참')    # 문자열은 참
else:
    print('거짓')
 
if '':    # 빈 문자열
    print('참')
else:
    print('거짓')    # 빈 문자열은 거짓
    
# 실행결과
참
거짓

📎 참고) 0, None, 빈 문자열을 not으로 뒤집으면?
0, None, 빈 문자열을 not으로 뒤집으면 참(Ture)이 되므로 if를 동작시킬 수 있다.

if not 0:
    print('참')    # not 0은 참
if not None:
    print('참')    # None은 참
if not '':
    print('참')    # not 빈 문자열은 참
# 실행결과
참
참
참

📎 참고) True, False로 취급하는 것들
None, False
0인 숫자들 : 0, 0.0, 0j
비어 있는 문자열, 리스트, 튜플, 딕셔너리, 세트: '', "", [], (), {}, set()
클래스 인스턴스의 __bool__(), __len__() 메서드가 0 또는 False를 반환할 때

14.4 조건식을 여러 개 지정하기

if조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있다.

x = 10
y = 20
 
if x == 10 and y == 20:     # x가 10이면서 y가 20일 때
    print('참')
else:
    print('거짓')

# 실행결과

만약 둘 중 하나라도 만족했을 때 이 출력되도록 하려면 or 논리 연산자를 사용하면 된다.

14.4.1 중첩if조건문과 논리 연산자

보통 여러 조건을 판단할 때 if를 계속 나열해서 충접if조건문으로 만드는 경우가 많다. 논리 연산자를 사용하면 조건식을 더 간단하게 만들 수 있다.

if x > 0 and x < 20:
    print('20보다 작은 양수입니다.')
    
# 더 간단히
if 0 < x < 20:
    print('20보다 작은 양수입니다.')

14.5 연습문제 : 합격 여부 판단하기

A 기업의 입사 시험은 필기 시험 점수가 80점 이상이면서 코딩 시험을 통과해야 합격이라고 정했습니다(코딩 시험 통과 여부는 True, False로 구분). 다음 소스 코드를 완성하여 '합격', '불합격'이 출력되게 만드세요.

written_test = 75
coding_test = True
 
if written_test >= 80 and coding_test == True:
    print('합격')
else:
    print('불합격')

# 출력결과
불합격

합격 조건 : 필기시험 점수가 80점 이상이면서 코딩 시험을 통과 -> 두 조건을 모두 만족

따라서 if조건문에 written_test >= 80coding_test == Trueand연산자로 연결한다.

profile
안녕하세요 :-) 잘 부탁드립니다!

0개의 댓글