3

我是python的新手。我一直在学习 Codecademy 的课程。我目前也在使用 Pydev / LiClipse。

在 Codecademy 的第一堂课中,它希望您将变量 parrot 设置为“Norwegian Blue”。然后它希望您使用 len 字符串方法打印鹦鹉的长度。这很简单,我马上得到了答案:

parrot = "Norwegian Blue"
print len(parrot)

当我将完全相同的代码放入 LiClipse 时,它​​返回:

SyntaxError:无效的语法

当我将其更改为时,它在 LiClipse 中工作:

打印(len(鹦鹉))

有人可以让我知道为什么这在 codecademy 中有效,但在 LiClipse 中无效,以及为什么添加括号来修复它?

4

4 回答 4

6

听起来 Pydev/LiClipse 使用的是 Python 3,而 Codeacademy 使用的是 python 2.x 或其他旧版本。当 python 从 2.x 更新到 3 时所做的更改之一是 print 现在是一个函数。

蟒蛇2:

print "stuff to be printed"

蟒蛇 3:

print("stuff to be printed")
于 2016-02-11T05:03:57.353 回答
3

您必须考虑您正在使用的版本。

在 Python 2 中,您的代码将如下所示:

parrot = "Norwegian Blue"
print len(parrot)

在 Python 3 中,您的代码将如下所示:

parrot = "Norwegian Blue"
print ( len(parrot) )
于 2016-02-11T06:01:08.260 回答
2

它在 CodeAcademy 中有效,因为他们的解释器是 Python 2.7,您不需要括号,因为print它是一个语句。在 Python 3.0+ 中,print需要括号,因为它是一个函数。

有关 Python 2.7 和 3.0+ 之间差异的更多信息,请参见此处:

Python 3.0 的新特性

上页打印的一些示例差异:

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!

很高兴知道两者之间的区别,以防您使用的是遗留系统和大量与您的私人环境中的差异。在 Python 2.7 及更低版本中,print()有效;但是,省略()s 在 Python 3.0+ 中不起作用,因此最好养成使用它们进行打印的习惯。

Python 2.7 的生命周期预计将在 2020 年结束,所以无论如何你都有足够的时间。

于 2016-02-11T05:05:06.613 回答
1

在 Python 3 中 print 被更改为需要括号。CodeAcademy 可能正在使用 Python 2,看起来您正在使用 Python 3。

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

从文档

Print 是一个函数 print 语句已被替换为 print() 函数,使用关键字参数替换旧 print 语句 (PEP 3105) 的大部分特殊语法。例子:

于 2016-02-11T05:05:23.763 回答