“print” throws an invalid syntax error in Python 3

自古美人都是妖i 提交于 2020-05-15 05:10:11

问题


I am brand new to python. I have been working on the courses on Codecademy. I am also currently using Pydev / LiClipse.

In one of the first lessons on Codecademy it wants you to set the variable parrot to "Norwegian Blue". Then it wants you to print the length of parrot using the len string method. It is very simple, and I got the answer right away with:

parrot = "Norwegian Blue"
print len(parrot)

When I put the exact same code into LiClipse it returned:

SyntaxError: invalid syntax

It work in LiClipse when I changed it to:

print (len(parrot))

Can someone let me know why that worked in codecademy, but not in LiClipse, and why adding the parenthesis fixed it?


回答1:


It sounds like Pydev/LiClipse is using Python 3 while Codeacademy is using python 2.x or some other older version. One of the changes made when python updated from 2.x to 3 was print is now a function.

Python 2:

print "stuff to be printed"

Python 3:

print("stuff to be printed")



回答2:


You must take into account the version in which you are working.

In Python 2 your code would look like this:

parrot = "Norwegian Blue"
print len(parrot)

In Python 3 your code would look like this:

parrot = "Norwegian Blue"
print ( len(parrot) )



回答3:


It worked in CodeAcademy because their interpreter is a Python 2.7, where you didn't need the parenthesis because print was a statement. In Python 3.0+, print requires the parentheses because it's a function.

More information on what's different between Python 2.7 and 3.0+ can be found here:

What's New In Python 3.0

Some of the sample differences with print on the above page:

Old: print "The answer is", 2*2
New: print("The answer is", 2*2)

Old: print x,           # Trailing comma suppresses newline
New: print(x, end=" ")  # Appends a space instead of a newline

Old: print              # Prints a newline
New: print()            # You must call the function!

It's good to know the differences between both, in case you're working with legacy systems and the lot vs. in your private environment. In Python 2.7 and below, print() works; however, omitting the ()s does not work in Python 3.0+, so it's better to get into the habit of using them for print.

End of life for Python 2.7 is expected to be in 2020, so you have plenty of time anyway.




回答4:


In Python 3 print was changed to require parenthesis. CodeAcademy is probably using Python 2 and it looks like you're using Python 3.

https://docs.python.org/3/whatsnew/3.0.html#print-is-a-function

From the docs

Print Is A Function The print statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old print statement (PEP 3105). Examples:



来源:https://stackoverflow.com/questions/35331117/print-throws-an-invalid-syntax-error-in-python-3

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!