Некоторая ошибка новичка, которую я не понимаю в python

#python #pydev

#python #пыдев

Вопрос:

Итак, вот код, я скопировал его символ за символом из codecademy и попытался изменить его, но получил ту же ошибку. Я знаю, что codecademy использует python 2, но различия не будут настолько велики, что базовый «%s» не будет работать!

 from datetime import datetime

now = datetime.now()

print ("%s   %s   %s") % (now.year, now.month, now.day)
 

и это мое сообщение об ошибке:

  Traceback (most recent call last):
 File "C:UsersSunilDesktopBeginning ProgrammingJavaworkspaceHelainsrcpackag__init__.py", line 5, in <module>
 print ("%s   %s   %s") % (now.year, now.month, now.day)
 TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'     
 

Какую ошибку я совершаю?

Ответ №1:

В Python 3 print это функция, поэтому этот код вызывает print("%s %s %s") , а затем применяется % к результату этого вызова, который равен None.

Попробуйте print ("%s %s %s" % (now.year, now.month, now.day))

Комментарии:

1. Ах, спасибо за ваше краткое, но понятное объяснение! Спасибо, что ответили на этот вопрос и некоторые из моих будущих вопросов, которые я неизбежно получу!

Ответ №2:

Вы также можете использовать форматирование строк.

 from datetime import datetime

now = datetime.now()

print ("{} {} {}".format(now.year, now.month, now.day))