14.2 else와 들여쓰기

elseif와 들여쓰기 규칙이 같습니다. 다음은 들여쓰기가 잘못된 코드입니다.

else_indent_error.py

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

else도 코드가 여러 줄일 때는 들여쓰기 깊이가 같게 만들어주어야 합니다.

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

마찬가지로 else가 여러 줄일 때는 마지막 줄의 들여쓰기를 하지 않으면 의도치 않은 동작이 됩니다.

else_wrong_indent.py

x = 10
 
if x == 10:    # x가 10이라 조건식이 참
    print('10입니다.')    # 출력
else:
     print('x에 들어있는 숫자는')
print('10이 아닙니다.')    # 출력되지 않아야 하는데 출력됨

실행 결과

10입니다.
10이 아닙니다.

x가 10이라 조건식이 참이므로 '10입니다.'가 출력됩니다. 하지만 else'10이 아닙니다.'도 함께 출력되어버렸죠? 왜냐하면 print('10이 아닙니다.')는 들여쓰기가 없어서 else와는 상관없는 코드가 되었기 때문입니다.

print를 한 줄 띄워보면 왜 잘못되었는지 알 수 있습니다.

x = 10
 
if x == 10:    # x가 10이라 조건식이 참
    print('10입니다.')
else:
    print('x에 들어있는 숫자는')
 
print('10이 아닙니다.')