Codecademy Python и Pyscripter выдают сообщения об ошибках

В настоящее время я нахожусь в процессе изучения Python с помощью Codecademy. Я учусь довольно быстро, установил и использую Pyscripter для создания собственных программ наряду с уроками Codecademy. Чаще всего, когда я копирую и вставляю код из Codecademy в Pyscripter и пытаюсь запустить его, я получаю сообщение об ошибке, когда он отлично работает на веб-сайте Codecademy. Есть ли другая версия Python или что-то в этом роде? Или codecademy не учит правильным основам? Я включил пример кода и ошибку, которую я получаю вместе с ним.

def power(base, exponent):  # Add your parameters here!
    result = base**exponent
    print "%d to the power of %d is %d." % (base, exponent, result)

power(37, 4)  # Add your arguments here!

Ошибка, полученная от Pyscripter: Сообщение Имя файла Строка Позиция
SyntaxError
недопустимый синтаксис (, строка 13) 13 40

Другой пример:

from datetime import datetime
now = datetime.now()

print ('%s/%s/%s') % (now.year, now.month, now.day)

Ошибка: Позиция строки с именем файла сообщения
Трассировка
21
Ошибка типа: неподдерживаемые типы операндов для %: 'NoneType' и 'tuple'
Кажется, у меня чертовски используйте %s и %.

Мы будем очень признательны за любые разъяснения.


person Hunter Sneed    schedule 23.02.2014    source источник


Ответы (1)


В этом разница между Python 2 и 3, да.

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> now = datetime.now()
>>>
>>> print ('%s/%s/%s') % (now.year, now.month, now.day)
2014/2/23

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> now = datetime.now()
>>>
>>> print ('%s/%s/%s') % (now.year, now.month, now.day)
%s/%s/%s
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
>>> print ('{0}/{1}/{2}'.format(now.year, now.month, now.day))
2014/2/23

Суть его заключается в различии между print оператором в Python 2 и функцией в Python 3.

person g.d.d.c    schedule 23.02.2014
comment
Так что же нужно сделать, чтобы исправить это? Я попытался ввести '››› from datetime import datetime ››› now = datetime.now() ››› ››› print ('%s/%s/%s') % (now.year, now.month, now.day) %s/%s/%s', и это все еще выдавало мне ошибку. - person Hunter Sneed; 23.02.2014
comment
@user3342332 — посмотрите мои изменения синтаксиса печати Python 3 или перейдите по этой ссылке: docs.python.org/3.1/library/string.html#format-string-syntax - person g.d.d.c; 23.02.2014
comment
Спасибо, теперь понял! - person Hunter Sneed; 23.02.2014