簡體   English   中英

Python 2.7.8打印語句“語法錯誤:無效語法”在終端(ubuntu 14.04)但在vim上運行良好,為什么?

[英]Python 2.7.8 print statement “Syntax Error: invalid syntax” in terminal (ubuntu 14.04) but running well on vim, why?

Python 2.7.8 print語句“語法錯誤:無效語法”在終端(14.04)但在vim上運行良好,為什么?

下面的程序打印平方和,首先我嘗試在終端上運行此問題它給出“ 語法錯誤:無效語法 ”,但在vim編輯器上復制相同的代碼並在終端python for.py上運行(文件的名稱)是for.py), 它沒有給出任何錯誤 ,請解釋其背后的原因。

在直接在終端上運行

Type "help", "copyright", "credits" or "license" for more information.
>>> squares= [1, 4, 9, 16]
>>> sum=0
>>> for num in squares:
...     sum+=num
... print sum

File "<stdin>", line 3
  print sum
    ^
SyntaxError: invalid syntax

在vim

$ vim for.py
squares= [1, 4, 9, 16]
sum=0
for num in squares:
   sum+=num
print sum

python for.py

輸出:30#正確運行

在得到@mgilson和@ ohope5的建議后,工作表示感謝

Type "help", "copyright", "credits" or "license" for more information.
>>> squares=[1, 4, 9, 16]
>>> sum=0
>>> for num in squares:
...     sum+=num
... 
>>> print sum
30

REPL(讀取 - 評估 - 打印 - 循環)無法預測下一行,以查看循環是否以與普通解析器相同的方式結束。 換句話說,當python的普通解析器解析你的文件時,它會看到dedent並知道循環在sum+=num之后結束。 當REPL到達同一行時,它無法知道是否應該有另一個語句,因此它假定還有另一個語句。 告訴REPL這是一個循環的終端線(或者更一般地說,任何一組命令的結束)的方法是輸入一個空行。

問題是,當以交互方式使用python時,你必須在任何類型的循環或函數之后給出一個空行,否則它認為下一行與此相關。 這意味着在sum+=num你需要在print語句之前留一個空行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM