如何在Python3中打印printf?

Mik*_*e L 115 python string python-3.x

在Python 2中我用过:

print "a=%d,b=%d" % (f(x,n),g(x,n))
Run Code Online (Sandbox Code Playgroud)

我试过了:

print("a=%d,b=%d") % (f(x,n),g(x,n))
Run Code Online (Sandbox Code Playgroud)

Rob*_*obᵩ 196

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

print "Hi"
Run Code Online (Sandbox Code Playgroud)

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

print ("Hi")
Run Code Online (Sandbox Code Playgroud)

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

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

print("a=%d,b=%d" % (f(x,n),g(x,n)))
Run Code Online (Sandbox Code Playgroud)

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

print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
Run Code Online (Sandbox Code Playgroud)

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

print(f'a={f(x,n):d}, b={g(x,n):d}')
Run Code Online (Sandbox Code Playgroud)

  • 这种语法很糟糕. (38认同)
  • *或:*`print('a = {first:4.2f},b = {second:03d}'.format(first = f(x,n),second = g(x,n)))`where this示例显示了如何使用printf样式修饰符*和*仍然使用关键字. (14认同)
  • @rapt,它具有一些巨大的优势。同样重要的是,您只能多次或不按顺序引用同一格式:“ {1},{1},{0}和{1}” .format(“ eggs”,“ spam”)= =“垃圾邮件,垃圾邮件,鸡蛋和垃圾邮件” (2认同)

the*_*eye 51

最推荐的方法是使用format方法.在这里阅读更多相关信息

a, b = 1, 2

print("a={0},b={1}".format(a, b))
Run Code Online (Sandbox Code Playgroud)


sta*_*010 24

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

import sys
def printf(format, *args):
    sys.stdout.write(format % args)
Run Code Online (Sandbox Code Playgroud)

示例输出:

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


kva*_*966 21

Python 3.6引入了用于内联插值的f字符串.甚至更好的是它扩展了语法以允许带插值的格式说明符.当我用Google搜索时,我一直在努力的事情(并且遇到了这个老问题!):

print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
Run Code Online (Sandbox Code Playgroud)

PEP 498有详细信息.并且...它在其他语言中使用格式说明符对我的宠物进行排序 - 允许说明符本身可以是表达式!好极了!请参阅:格式说明符.

  • 因为 python2 已被淘汰,这应该是最好的答案。 (3认同)
  • 注意:这也是将变量注入字符串的最高效方式。 (2认同)

Don*_*rek 14

简单示例:

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


小智 9

一个更简单的.

def printf(format, *values):
    print(format % values )
Run Code Online (Sandbox Code Playgroud)

然后:

printf("Hello, this is my name %s and my age %d", "Martin", 20)
Run Code Online (Sandbox Code Playgroud)