2012-08-09 2 views
3

이번 가을 (Unpro 프로그래밍 지식으로 시작) Uni에서 Comp Sci 과정을 시작합니다. 이제 막 프로그래밍을 시작하겠습니다. 책을 읽고 코드 복사를 시도했지만 작동하지 않습니다. 다음은 내가 시도한 내용입니다.Python의 구문 오류가 잘못되었습니다.

>>> def function(x): 
    return x+2 
function(2) 
SyntaxError: invalid syntax 

"function"이라는 단어가 강조 표시되었습니다. 아주 똑같은 예제가이 책에 사용되어서 제대로 작동하는 것처럼 보이기 때문에 혼란 스럽지만 결국에는 그 오류가 나옵니다. 무슨 일 이니?

+0

귀하의 노력과 함께 행운을 빕니다! 도움을 요청할 곳을 아는 것이 무엇보다 좋은 출발이며 Stack Overflow에는 많은 도움을 얻을 수 있습니다. 기존 질문을 읽고 다른 사람들이 언어를 사용하는 방법을보고 파이썬 코드가 어떻게 보이는지 이해하는 것이 좋습니다. –

+0

나는 프로그래밍을 가르치기 위해 대부분 인터넷을 사용하여 여기에서 추천 할 것이다. http://docs.python.org로 이동하여 여기에서 자습서를 작성하십시오. 그것은 내가 배운 방법이고, 나는이 사이트를 자주 방문하는 많은 다른 사람들을 의심합니다. – Droogans

답변

3

저는 당신이 제목에 파이썬을 넣으 려한다고 가정합니다. 파이썬은 프로그램을 파싱 할 때 실제로 공백을 의미있는 것으로 간주한다는 점에서 흥미로운 구문 규칙을 가지고 있습니다. 제 말은 여분의 공간, 개행 또는 탭 등이 실제로 프로그램의 의미를 변경한다는 것입니다. 책 예제를 다시 한 번 확인하고 똑같은 (탭, 줄 바꿈 및 모두) 구문을 작성했는지 확인하십시오. 다음과 같이 보일 수 있습니다.

def f(x): 
    return x + 2 

새 줄과 탭에 유의하십시오. 이 함수를 호출하려면 별도의 행에서 다음과 같이 말하십시오.

f(5) 

또는 5를 원하는 매개 변수로 바꾸십시오.

편집 :

때문에 전체 스크립트는해야한다 :

def f(x): 
    return x + 2 

f(2) 
+0

예와 정확히 같지만 "f"를 구문 오류로 강조 표시합니다. 나는 "f (5)"를 들여 쓰지는 않지만 그게 어떻게되어 있는지, 다른 모든 공백은 올바르게 놓여져있는 것처럼 보입니다. ghh 이것은 미친 소리입니다. – Colly

5

당신은 그것의 실행에서 함수 정의를 분리해야합니다. 또한 파이썬은 줄의 시작 부분에서 공백에 민감합니다. 보십시오이 (정확히) : 한 줄에

def function(x): 
    return x+2 
function(2) 

또는, (당신이하지 말아야하는, the style guidelines 참조)

def function(x): return x+2; function(2) 

또는 파이썬 쉘 :

>>> def function(x): 
    return x+2 

>>> function(2) 
4 

함수 정의와 함수 사용 사이의 빈 줄을 기록하십시오. 함수를 정의한 후 Enter 키를 한 번 눌러 프롬프트를 다시 얻습니다.

0

이것은 Python 2.6.6 및 IDLE 2.6.6을 사용하는 사용자를위한 것입니다.

파이썬 인터프리터는 공백과 들여 쓰기에 매우 민감하기 때문에 함수 선언과 실행을 구분해야합니다.

당신이 일을해야합니다

>>> def square(input): 
    output=input*input 
    return output 
print square(5) 

출력 : 구문 에러 : 유효하지 않은 구문을 할

올바른 방법 :

>>> def square(input): 
    output=input*input 
    return output 

>>> print square(3) 
9 
2

을이 시도 :

def function(x): 
    return x+2 
function(5) 

파이썬에서는 들여 쓰기가 중요합니다. 그들은 파이썬 세계의 {}입니다.

function(5) 전에 실제로 공백을 추가 할 필요가 없습니다. 왜냐하면 파이썬은 들여 쓰기가되어 있지 않기 때문에 함수 정의에 포함시키지 않기 때문입니다. 추가 공백 행을 추가하는 것은 여전히 ​​좋은 습관이지만 반드시 필요한 것은 아닙니다.

+1

파이썬 스크립트의 경우에 맞습니다. 질문에서'>>>'는 asker가 REPL에서 문장을 실행하고 있음을 나타냅니다. 이 경우 빈 줄은 이전 명령문을 끝내고 함수를 사용하기 전에 새 명령문을 시작하는 데 필요합니다. – cgmb

관련 문제