Как логические значения отформатированы в Strings в Python? - PullRequest
149 голосов
/ 14 февраля 2010

Я вижу, что не могу сделать:

"%b %b" % (True, False)

в Python. Я угадал %b для b (oolean). Есть ли что-то подобное?

Ответы [ 3 ]

219 голосов
/ 14 февраля 2010
>>> print "%r, %r" % (True, False)
True, False

Это не относится к логическим значениям - %r вызывает метод __repr__ для аргумента. %s (для str) также должно работать.

58 голосов
/ 14 февраля 2010

Если хотите True False используйте:

"%s %s" % (True, False)

потому что str(True) равно 'True', а str(False) равно 'False'.

или, если хотите, 1 0 используйте:

"%i %i" % (True, False)

потому что int(True) это 1 и int(False) это 0.

14 голосов
/ 12 января 2015

Вы также можете использовать класс Formatter строки

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) недоступны. Подробнее см. Спецификация формата на мини-языке

...