В 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))
В 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))
В 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)))
Самый рекомендуемый способ - использовать метод format
. Подробнее об этом здесь
a, b = 1, 2
print("a={0},b={1}".format(a, b))
Простая функция 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
Простой пример:
print("foo %d, bar %d" % (1,2))
Python 3.6 представил f-строки для встроенной интерполяции. Что еще приятнее, он расширил синтаксис, чтобы также позволить спецификаторы формата с интерполяцией. Что-то, над чем я работал, пока я искал это (и наткнулся на этот старый вопрос!):
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
PEP 498 содержит данные. И... он отсортировал мой любимый peeve с спецификаторами формата в других языках - позволяет спецификациям, которые сами могут быть выражениями! Ура! См. Спецификаторы формата.
Более простой.
def printf(format, *values):
print(format % values )
Тогда:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
Поскольку ваш %
находится вне круглых скобок print(...)
, вы пытаетесь вставить переменные в результат своего вызова print
. print(...)
возвращает None
, так что это не сработает, а также небольшое количество вас, уже напечатав ваш шаблон, к этому времени и путешествию во времени запрещается законами вселенной, в которой мы живем.
Все, что вы хотите распечатать, включая %
и его операнд, должно быть внутри вашего вызова print(...)
, чтобы строка могла быть построена до ее печати.
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
Я добавил несколько лишних пробелов, чтобы сделать их более ясными (хотя они не нужны и обычно не считаются хорошим стилем).
Другие слова printf отсутствуют в python... Я удивлен! Лучший код
def printf(format, *args):
sys.stdout.write(format % args)
Из-за этой формы можно не печатать \n. Все остальные нет. Вот почему печать - плохой оператор. А также вам нужно написать args в особой форме. В функции выше нет недостатков. Это стандартная обычная форма функции printf.
print("Name={}, balance={}".format(var-name, var-balance))