Я не понимаю, что делают %s
и %d
и как они работают.
Они используются для форматирования строк. %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))
%s
используется в качестве заполнителя для строковых значений, которые вы хотите ввести в форматированную строку.
%d
используется в качестве заполнителя для числовых или десятичных значений.
Например (для python 3)
print ('%s is %d years old' % ('Joe', 42))
Выведет
Joe is 42 years old
из Питон 3 док
%D
является для десятичное целое число
"%S " является общая строка или объект и в случае объекта, то оно будет преобразовано в строку
Рассмотрим следующий код
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
из положить будет
4.300000 > Джакомо 4.3 4 4.3
как вы можете видеть, %Д
будет обрезать до целого числа, %S
будет поддерживать форматирование, %F
и будет печатать как поплавок и %G
и используется для общего количества
очевидно
print('%d' % (name))
будет генерировать исключение, нельзя преобразовать строку в число
Эти заполнители:
Например: 'Привет %S, у меня есть %Д пончики' %('Алиса', 42)
Эта строка кода будет заменить %S с Элис (str) и %D с 42.
Выход: 'Привет Алиса у меня 42 пончики'
Это может быть достигнуто с помощью "+" и большую часть времени. Чтобы получить более глубокое понимание на ваш вопрос, вы можете хотеть проверить {} / .формат (), а также. Вот один из примеров: https://stackoverflow.com/questions/5082452/python-string-formatting-vs-format
также вижу здесь Гугл на Python учебник видео @ 40', он имеет несколько объяснений
В %D
и %S
в строке форматирования-то "команды" и используется для форматирования строк. В %Д
для чисел, и "%S " для строк.
Для примера:
print("%s" % "hi")
и
print("%d" % 34.6)
Чтобы передать несколько аргументов:
печать (на"%ы %ы %ы%д" на % (на"Привет" и "Ну там-то", то "пользователей" и, 123456))вернет
привет user123456`
%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
не работает для строки И %Д
работе для численного или десятичных величин.
если вы печатаете variable_3
это будет выглядеть так
print(variable_3 % (variable_one, variable_two))
Я искал ответа на StackOverflow и нашел более 45 ответы на мой вопрос.
Это спецификаторы формата. Они используются, когда вы хотите включить значения ваших выражений Python в строки с соблюдением определенного формата.
Относительно подробное введение см. в Dive into Python.
В соответствии с последними стандартами, это, как это должно быть сделано.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Проверьте питон3.6 документы и образец программы
кстати ... <БР> питон3.6 поставляется с ф-строк, который делает вещи намного проще в форматировании! <БР> теперь, если вашей версии 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
Все эти информативные ответы, но никто не уловил суть, в чем разница между %S
и %Д
.
%s
не говорит форматеру для вызова функции НТР ()
на спор и так как мы принуждающего к строке по определению, "%S " является, по сути, просто выполняя ул.(арг)
.
%D
и с другой стороны, звонит типа int()
на аргумент перед вызовом (ул.)
, как ул.(инт(арг))
, это инт
принуждения, а также ул
принуждения.
Например, я могу преобразовать шестнадцатеричное значение в десятичное,
>>> '%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
Так, если целью является просто позвонить ул.(арг)
, тогда %S
будет достаточно, но если вам нужно дополнительное форматирование (например, форматирование чисел с плавающей запятой знаков после запятой) или других форм принуждения, то другие символы форматирования не требуется.
С обозначения Ф-строку, когда вы покидаете праматерии из, значение по умолчанию стр``.
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
То же самое с строки.формат
по умолчанию ул
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'