问题:如何在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))
回答 0
在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}')
回答 1
最推荐的方法是使用format
方法。在这里了解更多
a, b = 1, 2
print("a={0},b={1}".format(a, b))
回答 2
来自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
回答 3
Python 3.6引入了用于内联插值的f字符串。更好的是,它扩展了语法,还允许使用插值的格式说明符。我在Google上搜索时一直在努力的工作(并遇到了这个老问题!):
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
PEP 498包含详细信息。而且…它用其他语言的格式说明符排序了我的烦恼-允许说明符本身可以是表达式!好极了!请参阅:格式说明符。
回答 4
简单的例子:
print("foo %d, bar %d" % (1,2))
回答 5
一个简单的。
def printf(format, *values):
print(format % values )
然后:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
回答 6
因为您%
在print(...)
括号之外,所以您试图将变量插入到调用结果中print
。print(...)
返回None
,所以这将不起作用,还有一个小问题,您已经在这个时间和时间旅行中打印了模板,这是我们所居住的宇宙定律所禁止的。
你想整个事情进行打印,包括%
和它的操作数,需要为内部的print(...)
通话,从而使打印之前它的字符串可以建成。
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
我添加了一些额外的空格以使其更清晰(尽管它们不是必需的,通常也不认为是好的样式)。
回答 7
python中没有其他的printf单词…我很惊讶!最好的代码是
def printf(format, *args):
sys.stdout.write(format % args)
由于这种形式不允许打印\ n。其他所有人都没有。这就是为什么打印不好的原因。而且,您还需要以特殊形式编写args。上面的功能没有缺点。这是printf函数的标准常用形式。
回答 8
print("Name={}, balance={}".format(var-name, var-balance))