Печать переменных в 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.