Я бачу, що не можу:
"%b %b" % (True, False)
в Python. Я здогадався %b
для b (oolean). Чи є щось подібне?
Я бачу, що не можу:
"%b %b" % (True, False)
в Python. Я здогадався %b
для b (oolean). Чи є щось подібне?
Відповіді:
>>> print "%r, %r" % (True, False)
True, False
Це не властиво булевим значенням - %r
викликає __repr__
метод на аргументі. %s
(для str
) також повинен працювати.
%r
і %s
?
print(str("foo"))
просто друкує foo
новий рядок. print(repr("foo"))
однак друкує 'foo'
новий рядок, включаючи цитати, оскільки це те, що вам потрібно набрати в інтерпретаторі python, щоб отримати відповідний об'єкт аргументу в python.
Ви також можете використовувати клас форматів рядка
print "{0} {1}".format(True, False);
print "{0:} {1:}".format(True, False);
print "{0:d} {1:d}".format(True, False);
print "{0:f} {1:f}".format(True, False);
print "{0:e} {1:e}".format(True, False);
Ось такі результати
True False
True False
1 0
1.000000 0.000000
1.000000e+00 0.000000e+00
Деякі %
специфікатори типу -формату ( %r
, %i
) недоступні. Докладніше див. Міні-мова специфікації формату
{:_^5}
ви отримаєте, '__1__'
якщо ви не str(...)
булі.
Щоб оновити це для Python-3, ви можете це зробити
"{} {}".format(True, False)
Однак якщо ви хочете фактично відформатувати рядок (наприклад, додати пробіл), ви стикаєтесь з тим, що Python вводить булеве значення в нижнє значення C (тобто int), наприклад
>>> "{:<8} {}".format(True, False)
'1 False'
Щоб обійти це, ви можете подати True
у вигляді рядка, наприклад
>>> "{:<8} {}".format(str(True), False)
'True False'