본문 바로가기
컴퓨터/Python

[파이썬] 파이썬 에러 IndentationError: expected an indented block

by HanJoohyun 2017. 11. 1.
반응형


 

 

안녕하세요 한주현입니다.

 

오늘은 파이썬 스크립트 작성 시 자주 보게되는 오류 중 하나인,

 

IndentationError: expected an indented block

 

에 대하여 알아보겠습니다.

 

 

 

 문제 상황

 

 IndentationError: expected an indented block


기분 좋게 스크립트를 아래와 같이 작성한 다음 실행을 시켰더니..


1
2
3
4
def hello():
print("Hello World!")
 
hello()
cs



아래와 같이 오류가 났습니다.. ㅠㅠ


1
2
3
4
5
$ python helloworld.py
  File "helloworld.py", line 2
    print("Hello world")
        ^
IndentationError: expected an indented block
cs

 


무슨 일일까요?


 

 

아래 스크립트를 실행한 화면에서 line 2 라고 표시되어있습니다.

이 부분을 집중적으로 보죠 ㅎㅎ

 

 해결 방법

 

예제 스크립트의 2번째 라인을 보니 print("Hello World!") 가 있습니다.


이것만 봐서는 별 문제가 없어보이는데,


IndentationError: expected an indented block 라고 에러가 났을까요?

 

파이썬은 코드를 실행하는 코드 블록 단위가 들여쓰기(indentation)로 구분 됩니다.


if 문을 예시로 들어보겠습니다.


if 문 - python


1
2
3
4
5
6
7
# Python
if 조건문1:
    명령문1
elif 조건문2:
    명령문2
else:
    명령문3
cs


if 문에 해당하는 코드 블록은 라인3,

elif 문에 해당하는 코드 블록은 라인5,

else 문에 해당하는 코드 블록은 라인7


로 각각 코드 블록을 구분하는 단위는 들여쓰기(indentation) 입니다.


다른 언어를 예로 들어보자면, C언어에서는 다음과 같이 중괄호 {} 를 사용하여 명령어들의 그룹을 잡습니다.


1
2
3
4
5
6
7
8
9
// C language
 
if (조건문1){
    명령문1;
else if (조건문2) {
    명령문2;
else {
    명령문3;
}
cs



다시 예제로 돌아가서,


1
2
3
4
def hello():
print("Hello World!")
 
hello()
cs


첫 번째 라인에서 콜론으로 함수가 시작함을 알리고 코드 블록이 예상되는 상황에서


두 번째 라인의 들여쓰기가 안되어있어서 파이썬 인터프리터는 


1
2
3
4
5
$ python helloworld.py
  File "helloworld.py", line 2
    print("Hello world")
        ^
IndentationError: expected an indented block
cs

 

라고 말해주는 것 이지요. ㅎㅎ



그래서 코드는 아래와 같이 들여쓰기를 해주시면 해결됩니다 ㅎㅎ

1
2
3
4
def hello():
    print("Hello World!")
 
hello()
cs

1
2
$ python helloworld.py
Hello World!
cs



들여쓰기에 대한 documentation은 다음 링크를 참고해 주세요.


https://docs.python.org/2/tutorial/introduction.html#first-steps-towards-programming

https://www.python.org/dev/peps/pep-0008/#indentation


 

여러분들께 도움이 되셨으면 좋겠네요


그럼 다음 시간에 만나요!

 

 

 


반응형

댓글