如何打印像python3中的printf?

在Python 2我使用

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

我试过了

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

在Python2中, print是一个引入了一个声明的关键字:

 print "Hi" 

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

 print ("Hi") 

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

所以,你的路线应该是这样的:

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

此外,Python3和更新的build议是使用{}风格的格式,而不是%风格的格式:

 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 Cookbook 。

 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-string。 更好的是它扩展了语法,也允许带有插值的格式说明符。 当我search到这个东西的时候,我一直在努力工作(并且遇到了这个老问题!):

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

PEP 498有详细信息。 而且…它使用其他语言中的格式说明符来sorting我的宠物 – 允许指定符自己可以是expression式! 好极了! 请参阅: 格式说明符 。

更简单一个。

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

然后:

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

由于您的%不在print(...)括号内,因此您试图将variables插入print调用的结果中。 print(...)将返回None ,所以这将不起作用,并且还有一个小问题就是你已经在这个时间和行程中打印了你的模板,而这个时间旅行被我们所居住的宇宙的法则所禁止。

您要打印的所有内容(包括%及其操作数)需要位于 print(...)调用中,以便可以在打印之前构buildstring。

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

我已经增加了一些额外的空间,使其更清晰(虽然他们不是必要的,一般不认为是好风格)。

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