TypeError: неподдерживаемый тип операндов для%: 'NoneType' и 'str'

Поэтому я ОЧЕНЬ новичок в программировании, и я начал с Python 3. Я начал читать «Learn Python the Hard Way». Теперь я дошел до того, что у меня был этот код:

x = "There are %d types of people." % 10 binary = "binary" do_not = "don't" y = "Those who know %s and those who %s" % (binary, do_not) print(x) print(y) print("I said: %r") % x 

Я не знаю разницу между %r , %s и %d . Ошибка, которую я получаю, это TypeError: unsupported operand type(s) for %: 'NoneType' and 'str' Не знаю, что делать и как это исправить. Пожалуйста, объясните, как я могу заставить его работать и почему это не сработает. Кроме того, в чем разница между% r, d и s? Любые полезные ссылки? Заранее спасибо.

2 Solutions collect form web for “TypeError: неподдерживаемый тип операндов для%: 'NoneType' и 'str'”

Вместо этого вы хотите применить % к строке :

 print("I said: %r" % x) 

Ваш код применяет его к возвращаемому значению вызова print() , который возвращает None .

Кроме того, вы можете переключиться на использование str.format() :

 print("I said: {!r}".format(x)) 

Вы вызываете % вне функции print() . Это пытается увидеть, можно ли напечатать фактическую print функции как %r , а поскольку print ничего не возвращает, она пытается получить %r для значения None (следовательно, ошибка NoneType ). Измените его на:

 print("I said: %r" %(x)) 

Следующий код:

 #!/usr/local/bin/python3 x = "Hello" print ("Hello World! %s") %(x) 

Вызывает следующую ошибку:

 Hello World! %s Traceback (most recent call last): File "main.py", line 3, in print ("Hello World! %s") %(x) TypeError: unsupported operand type(s) for %: 'NoneType' and 'str' 

Изменение кода на следующие работы:

 #!/usr/local/bin/python3 x = "Hello" print ("Hello World! %s" %(x)) 

Вывод:

 Hello World! Hello 
  • Строковый формат: Начать научную нотацию с 0. для положительного числа, с -. для отрицательного числа
  • Форматирование строки с форматом «{0: d}» дает код неизвестного формата «d» для объекта типа «float»
  • Форматирование строки Python, когда строка содержит «% s» без экранирования
  • Как управлять заполнением строки Unicode, содержащей символы Восточной Азии
  • форматирование частичной строки
  • Получить ключи от шаблона
  • Почему Python не может помещаться в string.format с "\ x00"?
  • Преобразуйте или неформатируйте строку в переменные (например, format (), но наоборот) в Python
  • Формат строки с опциональным значением ключа ключа
  • Почему% s быстрее, чем% d для целочисленной замены в python?
  • Форматирование даты и времени в строку с миллисекундами
  • Python - лучший язык программирования в мире.