Відповіді:
Вони використовуються для форматування рядків. %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))
від python 3 doc
%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))
створить виняток; ви не можете перетворити рядок у число
%s
замість цього використовується число.
%s
використовується як заповнювач для значень рядків, які ви хочете вставити у відформатовану рядок.
%d
використовується як заповнювач для числових або десяткових значень.
Наприклад (для python 3)
print ('%s is %d years old' % ('Joe', 42))
Виводить
Joe is 42 years old
Це заповнювачі:
Наприклад: 'Hi %s I have %d donuts' %('Alice', 42)
Цей рядок коду замінить% s на Alice (str) і% d на 42.
Вихід: 'Hi Alice I have 42 donuts'
Цього можна досягти за допомогою "+" більшу частину часу. Щоб глибше зрозуміти своє запитання, ви можете також перевірити {} / .format (). Ось один приклад: Форматування рядків Python:% vs. .format
також дивіться тут відео з підручника google python @ 40 ', воно має деякі пояснення https://www.youtube.com/watch?v=tKTZoB2Vjuk
%d
І %s
рядок форматування «команди» використовуються для рядків формату. Значення %d
для чисел, а %s
також для рядків.
Наприклад:
print("%s" % "hi")
і
print("%d" % 34.6)
Щоб передати кілька аргументів:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
повернеться hi there user123456
Це всі інформативні відповіді, але жодна не зовсім зрозуміла, в чому полягає різниця між %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 = 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'
Те саме стосується string.format
; за замовчуванням - str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%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 відповідей на моє запитання.
Вони є специфікаторами формату. Вони використовуються, коли ви хочете включити значення виразів Python в рядки з певним форматом.
Дивіться Занурення в Python щодо відносно детального вступу.
Відповідно до останніх стандартів, саме так слід робити.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Перевірте документи python3.6 та зразок програми
Якщо ви хочете уникнути% 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
%s
та %d
.
print
це функція в Python 3, а не оператор.
% s використовується для утримання місця для рядка% d використовується для утримання місця для числа
name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))
це відео йде глибоко про цю пораду https://www.youtube.com/watch?v=4zN5YsuiqMA
Якщо говорити про те, що ...
поставляється 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
%s
це використовується з конфігураціями пошукової системи. Chrome використовує%s
для заміни ключових слів, введених в адресному рядку. Python використовує%s
аналогічним чином. Вprint('description: %s' % descrip)
з%s
оператором буде замінений текстового рядка , що зберігається вdescrip
змінної. Круглі дужки запобігають повідомленню про помилку в Python 3.