Печать переменных в python 3.4
Итак, синтаксис, похоже, изменился с того, что я узнал в Python 2... вот что я до сих пор
for key in word:
i = 1
if i < 6:
print ( "%s. %s appears %s times.") % (str(i), key, str(wordBank[key]))
Первое значение является int, второе - строкой, а final - int.
Как я могу изменить свой оператор печати так, чтобы он правильно печатал переменные?
Ответы
Ответ 1
Синтаксис изменился, поскольку print
теперь является функцией. Это означает, что форматирование %
должно выполняться внутри скобки: 1
print("%d. %s appears %d times." % (i, key, wordBank[key]))
Однако, поскольку вы используете Python 3.x., вы действительно должны использовать новый метод str.format
:
print("{}. {} appears {} times.".format(i, key, wordBank[key]))
Хотя форматирование %
официально не устарело (пока), оно обескураживается в пользу str.format
и, скорее всего, будет удалено с языка в следующей версии (возможно, Python 4)?
1 Просто небольшое примечание: %d
- спецификатор формата для целых чисел, а не %s
.
Ответ 2
Попробуйте синтаксис формата:
print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415))
Выходы:
1. b appears 3.1415 times.
Функция печати вызывается так же, как любая другая функция, с круглыми скобками вокруг всех ее аргументов.
Ответ 3
Проблема кажется неправильной )
. В вашем примере у вас есть %
вне print()
, вы должны переместить его внутри:
Используйте это:
print("%s. %s appears %s times." % (str(i), key, str(wordBank[key])))
Ответ 4
Вы также можете форматировать строку.
>>> print ("{index}. {word} appears {count} times".format(index=1, word='Hello', count=42))
Какие выходы
1. Hello appears 42 times.
Поскольку значения указаны, их порядок не имеет значения. Приведение примера ниже выводится так же, как в приведенном выше примере.
>>> print ("{index}. {word} appears {count} times".format(count=42 ,index=1, word='Hello'))
Эта строка форматирования позволяет вам сделать это.
>>> data = {'count':42, 'index':1, 'word':'Hello'}
>>> print ("{index}. {word} appears {count} times.".format(**data))
1. Hello appears 42 times.
Ответ 5
Версия 3.6+: используйте форматированный строковый литерал, f-string для коротких
print(f"{i}. {key} appears {wordBank[key]} times.")