148

在 Python 2 中,我使用了:

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

我试过了:

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

9 回答 9

234

在 Python2 中,print是一个关键字,它引入了一个语句:

print "Hi"

在 Python3 中,print是一个可以调用的函数:

print ("Hi")

在这两个版本中,%是一个运算符,它需要左侧的字符串和右侧的值或值的元组或映射对象(如dict)。

所以,你的行应该是这样的:

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

此外,对于 Python3 和更新版本的建议是使用{}-style 格式而不是%-style 格式:

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

Python 3.6 引入了另一种字符串格式化范例:f-strings

print(f'a={f(x,n):d}, b={g(x,n):d}')
于 2013-10-18T19:04:19.070 回答
63

最推荐的方法是使用format方法。在此处阅读有关它的更多信息

a, b = 1, 2

print("a={0},b={1}".format(a, b))
于 2013-10-18T19:06:12.120 回答
37

来自O'Reilly 的 Python Cookbook 的简单 printf() 函数。

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
于 2016-06-16T01:19:18.927 回答
30

Python 3.6 为内联插值引入了 f 字符串。更好的是它扩展了语法以允许格式说明符与插值。我在谷歌上搜索时一直在做的事情(并遇到了这个老问题!):

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

PEP 498有详细信息。而且...它用其他语言中的格式说明符对我的小毛病进行了分类——允许说明符本身可以是表达式!耶!请参阅:格式说明符

于 2017-09-02T11:54:33.763 回答
18

简单示例:

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

于 2014-04-22T17:15:25.607 回答
11

一个更简单的。

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

然后:

printf("Hello, this is my name %s and my age %d", "Martin", 20)
于 2017-01-20T13:29:39.963 回答
2

因为您%print(...)括号之外,所以您试图将变量插入到调用结果printprint(...)返回None,所以这不起作用,还有一个小问题,你已经打印了你的模板,时间旅行被我们居住的宇宙法则所禁止。

您要打印的整个内容,包括 the%及其操作数,都需要您的print(...)调用中,以便可以在打印之前构建字符串。

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

我添加了一些额外的空格以使其更清晰(尽管它们不是必需的,并且通常不被认为是好的样式)。

于 2013-10-18T19:13:26.310 回答
2
print("Name={}, balance={}".format(var-name, var-balance))
于 2016-10-24T14:49:52.403 回答
-2

print("{:.4f} @\n".format(2))

格式化在这种情况下很有帮助。

您可以在下面的链接中参考更多详细信息。

Python 格式化

于 2021-06-22T11:29:27.550 回答