본문 바로가기
IT지식/Python

파이썬 else의 모든것

by 모두의 향연 2021. 10. 12.
728x90
반응형
1. else란?

if조건문은 분기(branh)를 위한 문법이다. 즉, 분기는 '둘 이상으로 갈라지다'라는 뜻으로 프로그램을 둘 이상으로 나누는 것이다. 도로의 분기점과 같다. else를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다. 

 

2. else 사용하기

else는 if조건문 뒤에 오며 단독으로 사용 불가능

그리고 if와 마찬가지로 else도 세미콜론(:)을 붙이며 다음 줄에 실행할 코드가 온다.

 

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

 

>>> x=10
>>> if x==10:
print('x는 10입니다.')
else:
print('x는 10이 아닙니다.')

출력: x는 10입니다.

 

3. if else 실행 흐름

조건식이 참이면 if의 코드가 실행되고, 거짓이면 else의 코드가 실행된다.

출처: 코딩도장

4. 조건부 표현식(conditional expression)

변수 = 값 if 조건문 else 값

 

>>> x=10
>>> print('x는 10입니다.') if x==10 else 0
x는 10입니다.

 

5. 들여 쓰기

else는 if와 들여 쓰기 규칙이 같다. 

 

[예시 1] print 들여 쓰기 제대로 안 하는 경우

>>> x=100
>>>

 if x == 100:
    print('100입니다.')
else:
print('x에 들어있는 숫자는')     # unexpected indent 에러 발생 
    print('100이 아닙니다.')

 

[예시 2] else가 여러 줄일 때 마지막 줄의 들여 쓰기를 하지 않으면

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

 

출력: 100입니다.
100이 아닙니다.

 

'100이 아닙니다.'까지 함께 출력된다. 왜냐하면 마지막 print는 들여 쓰기가 없어서 else와는 상관없는 코드가 되었기 때문이다. 이럴 땐 한 칸 띄어보면 잘못됐는지 알 수 있죠.

 

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


print('100이 아닙니다.') 

 

6. if/else의 동작 방식(True, False, None)

 

if True:
    print('참')
else:
    print('거짓')


if False:
    print('참')
else:
    print('거짓')


if None:
    print('참')
else:
    print('거짓')

 

출력: 참
거짓
거짓

 

True는 if의 코드가, False는 else의 코드가 실행된다. 특히, None은 False로 취급되므로 else의 코드가 실행된다. 

실제 코드를 작성할 때 변수에 들어있는 값이나 함수의 결과가 None인 경우가 많으므로 기억해두길 바람.

 

7. if/else의 동작 방식(0, 1, 16진수, 2진수, 실수)

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('거짓')

 

주로 0이면 거짓이고 0을 제외한 모든 정수와 실수는 참이다. 

 

8. if/else의 동작 방식(문자열)

if 'Python':
    print('참')
else:
    print('거짓')

if '':
    print('참')
else:
    print('거짓')

 

출력: 참
거짓

 

문자열은 '참'이고 빈 문자열은 '거짓'이 나온다.

 

9. 파이썬 문법에서 False로 취급하는 것들

None

False

0인 숫자들: 0, 0.0, 0j

비어 있는 문자열, 리스트, 튜플, 딕셔너리, 세트: '', "", [], (), {}, set()

클래스 인스턴스의 __bool__(), __len__() 메서드가 0 또는 False를 반환할 때

 

10. 조건식을 여러 개 지정하기

member='y'
payment='y'

if member =='y' and payment=='y':
    print('회원이시네요. 어서 오세요!')
else:
    print('회원등록과 지불 먼저 하고 오세요.')

 

조건에서 member이면서 payment까지 했다면 print를 실행하고 아니면 else출력.

만약 둘 중 하나라도 만족했을 때 조건문을 실행하려고 한다면 or연산자 쓰면 된다.

 

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

보통은 if를 계속 나열해서 중첩 if조건문으로 만드는 경우가 많다.

 

x=5
if x>0:
    if x<20:
        print('x는 20보다 작은 양수입니다.')

출력: x는 20보다 작은 양수입니다.

 

if로 x가 0보다 큰지 검사하고 맞다면 x가 20보다 작은지 검사한다.

그 둘이 맞다면 print를 출력하는 형태

 

하지만, 논리 연산자로 if하나 줄일 수 있다. 코드는 짧아야 좋다.

 

x=5
if x>0 or x<20:
    print('x는 20보다 작은 양수입니다.')

출력: x는 20보다 작은 양수입니다.      

 

and연산자: 두 조건을 모두 만족해야 참.

 

하지만,  더 간단히 만들 수 있다.

x=5
if 0<x<20:
    print('x는 20보다 작은 양수입니다.')
출력: x는 20보다 작은 양수입니다.      

 

부등호를 사용하면 코드를 더 간단히 만들 수 있다. 

 

12. 0, None, 빈 문자열을 not으로 뒤집으면?

if not 0:  #0은 False인데 not False니까 True죠? True는 참이죠.
    print('참')    # not 0은 참
 
if not None:
    print('참')    # None은 참
 
if not '':
    print('참')    # not 빈 문자열은 참

 

출력: 참

728x90
반응형