Я не понимаю, что делают %s и %d и как они работают.
Какая разница между% s и% d в форматировании строк Python?
Ответ 1
 Они используются для форматирования строк. %s действует как заполнитель для строки, в то время как %d действует как заполнитель для числа. Их связанные значения передаются через кортеж с использованием оператора %.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
  напечатает marcog 42. Обратите внимание, что имя - это строка (% s), а число - целое число (% d для десятичного числа).
См. Https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting для получения подробной информации.
В Python 3 пример будет:
print('%s %d' % (name, number))
		Ответ 2
 %s используется в качестве заполнителя для строковых значений, которые вы хотите вставить в форматированную строку.
 %d используется в качестве заполнителя для числовых или десятичных значений.
Например (для питона 3)
print ('%s is %d years old' % ('Joe', 42))
 Будет выходной
Joe is 42 years old
		Ответ 3
из питона 3 док
 %d для десятичного целого числа
 %s для общей строки или объекта, а в случае объекта он будет преобразован в строку
Рассмотрим следующий код
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
 выход будет
giacomo 4.3 4 4.300000 4.3
 как вы можете видеть, %d будет усекаться до целого числа, %s будет поддерживать форматирование, %f будет печататься как число с плавающей запятой, а %g используется для общего числа
очевидно
print('%d' % (name))
 сгенерирует исключение; вы не можете преобразовать строку в число
Ответ 4
Это заполнители:
Например: 'Hi %s I have %d donuts' %('Alice', 42)
Эта строка кода заменит% s на Алису (str) и% d на 42.
Выход: 'Hi Alice I have 42 donuts'
Это может быть достигнуто с помощью "+" в большинстве случаев. Чтобы получить более глубокое понимание вашего вопроса, вы можете также проверить {}/.format(). Вот один пример: Форматирование строки Python:% vs..format
также см. здесь учебник по видео python google @40 ', в нем есть некоторые объяснения https://www.youtube.com/watch?v=tKTZoB2Vjuk
Ответ 5
 %d и %s являются заполнителями, они работают как заменяемая переменная. Например, если вы создаете 2 переменные
variable_one = "Stackoverflow"
variable_two = 45
 Вы можете назначить эти переменные предложению в строке, используя кортеж переменных.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
  Обратите внимание, что %s работает для String, а %d работает для числовых или десятичных переменных.
 если вы напечатаете variable_3 это будет выглядеть так
print(variable_3 % (variable_one, variable_two))
 Я искал ответ в StackOverflow и нашел более 45 ответов на мой вопрос.
Ответ 6
 "Команды" форматирования строк %d и %s используются для форматирования строк. %d для чисел, а %s для строк.
Для примера:
print("%s" % "hi")
 а также
print("%d" % 34.6)
 Чтобы передать несколько аргументов:
 print("%s %s %s%d" % ("hi", "there", "user", 123456)) вернет hi there user123456
Ответ 7
Они являются спецификаторами формата. Они используются, когда вы хотите включить значение ваших выражений Python в строки, с определенным форматированием.
См. Погружение в Python для относительно подробного введения.
Ответ 8
Если вы хотите избежать% s или% d, тогда..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Вывод:
my name is marcog and my name is 42
		Ответ 9
 Говоря о которых... 
 Python3.6 поставляется с f-strings что значительно упрощает форматирование! 
 Теперь, если ваша версия Python больше 3,6, вы можете отформатировать строки с помощью следующих доступных методов:
name = "python"
print ("i code with %s" %name)          # with help of older method
print ("i code with {0}".format(name))  # with help of format
print (f"i code with {name}")           # with help of f-strings
		Ответ 10
 Все это информативные ответы, но ни один из них не совсем понял, в чем разница между %s и %d.
 %s говорит форматировщику вызвать функцию str() для аргумента, и поскольку мы по определению приводим строку к значению, %s по сути, просто выполняет str(arg).
 %d с другой стороны, вызывает int() для аргумента перед вызовом str(), например, str(int(arg)), это вызовет как int так и str.
Например, я могу преобразовать шестнадцатеричное значение в десятичное,
>>> '%d' % 0x15
'21'
 или обрезать поплавок.
>>> '%d' % 34.5
'34'
 Но операция вызовет исключение, если аргумент не является числом.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
  Таким образом, если целью является просто вызов str(arg), то достаточно %s, но если вам нужно дополнительное форматирование (например, форматирование десятичных знаков с плавающей запятой) или другое приведение, тогда нужны другие символы формата.
 В нотации f-string, когда вы не используете форматер, по умолчанию используется str.
>>> a = 'some_string'
>>> f'{a:s}'
'some_string'
>>> a = 'some_string'
>>> f'{a}'
'some_string'
  То же самое верно для string.format; по умолчанию это str.
>>> '{}'.format(a)
'some_string'
>>> '{!s}'.format(a)
'some_string'
		Ответ 11
Согласно последним стандартам, так и должно быть.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
 Проверьте документы Python3.6 и пример программы