2010-05-09 4 views
4

는 파이썬 3.1 콘솔에서이 코드를 실행하기 위해 노력하고있어 나는 구문 에러 받고 있어요 :루프를 인쇄 할 때 파이썬 3.1이 SyntaxError를 던지는 이유는 무엇입니까?

>>> while True: 
...  a=5 
...  if a<6: 
...    break 
... print("hello") 
    File "<stdin>", line 5 
    print("hello") 
     ^
SyntaxError: invalid syntax 
>>> 

(이것은 단지 지점을 만들기 위해 코드를 단축됩니다.)

내가 뭔가를 놓치고 있습니까? 모르는 다른 마술이 있나요?

답변

7
당신이 함수에서 전체를 넣으면 작동하고

: 당신이 함수 (단지 인터프리터) 외부에서 작업을 수행하려고하면

def test(): 
    while True: 
     a=5 
     if a<6: 
      break 
    print("hello") 

, 그것은 전체를 다시 평가하는 방법을 알고하지 않습니다 왜냐하면 인터프리터에서는 한 번에 하나의 명령문 만 처리 할 수 ​​있기 때문입니다. 귀하의 while 루프는 그와 같은 진술이며 귀하의 print 내용은 그러한 진술입니다. 귀하는 2 개의 진술을 가지고 있지만, 통역사는 오직 하나만 사용합니다.

+0

아, 단 하나의 문장 만 처리 할 수 ​​있다는 것을 몰랐습니다. 감사! :) – bubersson

9

새로운 줄 바꿈되지 않는 코드 줄을 입력하기 전에 현재 블록을 완료하려면 빈 줄을 REPL에 입력해야합니다.