13.2 else와 들여쓰기
else는 if와 들여쓰기 규칙이 같습니다. 다음은 들여쓰기가 잘못된 코드입니다.
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이 아닙니다.')