Ошибка синтаксиса Python print len ​​()

Я новичок в питоне. Я работал над курсами по Codecademy. Я также в настоящее время использую Pydev / LiClipse.

На одном из первых уроков Codecademy он хочет, чтобы вы установили переменную parrot на "Norwegian Blue". Затем он хочет, чтобы вы напечатали длину попугая, используя метод строки len. Это очень просто, и я сразу же получил ответ:

parrot = "Norwegian Blue"
print len(parrot)

Когда я поместил точно такой же код в LiClipse, он вернулся:

SyntaxError: неверный синтаксис

Он работает в LiClipse, когда я изменил его на:

печать (лен (попугай))

Может кто-нибудь сообщить мне, почему это работает в codecademy, но не в LiClipse, и почему добавление скобок исправило это?

4 ответа

Решение

Похоже, что Pydev/LiClipse использует python 3, в то время как Codeacademy использует python 2.7 или другую более старую версию. Одно из изменений, сделанных, когда python обновился с 2.7 до 3, использовало print следующим образом:

print "stuff to be printed"

чтобы:

print("stuff to be printed")

Вы должны принять во внимание версию, в которой вы работаете.

В Python 2 ваш код будет выглядеть так:

parrot = "Norwegian Blue"
print len(parrot)

В Python 3 ваш код будет выглядеть так:

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

Это работало в 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 году, так что у вас все равно будет достаточно времени.

В Python 3 печать была изменена, чтобы требовать скобки. CodeAcademy, вероятно, использует Python 2, и похоже, что вы используете Python 3.

https://docs.python.org/3/whatsnew/3.0.html

Из документов

Print Is A Функция Оператор print был заменен функцией print() с аргументами с ключевыми словами для замены большей части специального синтаксиса старого оператора печати (PEP 3105). Примеры:

Другие вопросы по тегам