Ошибка синтаксиса 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+, можно найти здесь:
Некоторые из примеров различий с печатью на приведенной выше странице:
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). Примеры: