13.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에 들어있는 숫자는') # ← 들여쓰기 4칸
print ('10이 아닙니다.')   # 출력되지 않아야 하는데 출력됨
#↑ 들여쓰기가 없어서 else와는 상관없는 코드가 됨

실행 결과

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이 아닙니다.')