Как печатать как printf в python3?

В python 2 я использовал

print "a=%d,b=%d" % (f(x,n),g(x,n))

Ive попробовал

print("a=%d,b=%d") % (f(x,n),g(x,n))

Ответ 1

В Python2 print было ключевым словом, в котором было указано утверждение:

print "Hi"

В Python3, print - это функция, которая может быть вызвана:

print ("Hi")

В обеих версиях % - это оператор, для которого требуется строка в левой части и значение или кортеж значений или объект сопоставления (например, dict) в правой части.

Итак, ваша строка должна выглядеть так:

print("a=%d,b=%d" % (f(x,n),g(x,n)))

Кроме того, рекомендация для Python3 и new заключается в использовании форматирования {} -style вместо % -строчного форматирования:

print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))

Ответ 2

Самый рекомендуемый способ - использовать метод format. Подробнее об этом здесь

a, b = 1, 2

print("a={0},b={1}".format(a, b))

Ответ 3

Простая функция printf() из Поваренная книга O'Reilly Python.

import sys
def printf(format, *args):
    sys.stdout.write(format % args)

Пример вывода:

i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14

Ответ 4

Простой пример:

print("foo %d, bar %d" % (1,2))

Ответ 5

Python 3.6 представил f-строки для встроенной интерполяции. Что еще приятнее, он расширил синтаксис, чтобы также позволить спецификаторы формата с интерполяцией. Что-то, над чем я работал, пока я искал это (и наткнулся на этот старый вопрос!):

print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')

PEP 498 содержит данные. И... он отсортировал мой любимый peeve с спецификаторами формата в других языках - позволяет спецификациям, которые сами могут быть выражениями! Ура! См. Спецификаторы формата.

Ответ 6

Более простой.

def printf(format, *values):
    print(format % values )

Тогда:

printf("Hello, this is my name %s and my age %d", "Martin", 20)

Ответ 7

Поскольку ваш % находится вне круглых скобок print(...), вы пытаетесь вставить переменные в результат своего вызова print. print(...) возвращает None, так что это не сработает, а также небольшое количество вас, уже напечатав ваш шаблон, к этому времени и путешествию во времени запрещается законами вселенной, в которой мы живем.

Все, что вы хотите распечатать, включая % и его операнд, должно быть внутри вашего вызова print(...), чтобы строка могла быть построена до ее печати. ​​

print( "a=%d,b=%d" % (f(x,n), g(x,n)) )

Я добавил несколько лишних пробелов, чтобы сделать их более ясными (хотя они не нужны и обычно не считаются хорошим стилем).

Ответ 8

Другие слова printf отсутствуют в python... Я удивлен! Лучший код

def printf(format, *args):
    sys.stdout.write(format % args)

Из-за этой формы можно не печатать \n. Все остальные нет. Вот почему печать - плохой оператор. А также вам нужно написать args в особой форме. В функции выше нет недостатков. Это стандартная обычная форма функции printf.

Ответ 9

print("Name={}, balance={}".format(var-name, var-balance))