如何像Python3中的printf一样打印?
在Python 2中,我使用了:如何像Python3中的printf一样打印?,python,string,python-3.x,Python,String,Python 3.x,在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") 在这两个版本中,%都是一个运算符,它要求在左侧有一个字符串,在右侧有一个值或一个值元组或一个映射对象(如dict) 因此,您的线路应该如
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")
在这两个版本中,%
都是一个运算符,它要求在左侧有一个字符串,在右侧有一个值或一个值元组或一个映射对象(如dict
)
因此,您的线路应该如下所示:
print("a=%d,b=%d" % (f(x,n),g(x,n)))
另外,对于Python3和更新版本,建议使用{}
-样式格式,而不是%
-样式格式:
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
Python 3.6引入了另一种字符串格式范例:
最推荐的方法是使用
format
方法。阅读更多关于它的信息
因为您的
%
在打印(…)
括号之外,所以您正在尝试将变量插入到打印调用的结果中print(…)
返回None
,因此这将不起作用,还有一件小事,此时您已经打印了您的模板,时间旅行被我们居住的宇宙法则所禁止
要打印的全部内容,包括%
及其操作数,都需要在print(…)
调用中,以便在打印字符串之前构建字符串
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
我添加了一些额外的空格以使其更清晰(尽管它们不是必需的,通常也不被认为是好的样式)。简单示例:
print(“foo%d,bar%d”%(1,2))
来自的简单printf()函数
示例输出:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
一个更简单的
def printf(format, *values):
print(format % values )
然后:
Python3.6为内联插值引入了f字符串。更棒的是,它扩展了语法,还允许使用插值的格式说明符。我在谷歌上搜索时一直在做的事情(遇到了这个老问题!):
他有详细资料。而且。。。它用其他语言中的格式说明符对我的不满进行了排序——允许说明符本身可以是表达式!耶!请参阅:.%
始终是一个字符串运算符,与print
语句无关。例如,您可以使用s=“a=%d,b=%d”%(f(x,n),g(x,n))
创建一个字符串,然后使用print s
打印该字符串。或者:print('a={first:4.2f},b={second:03d})。格式(first=f(x,n),second=g(x,n))
,其中此示例显示了如何使用printf样式修饰符并仍然使用关键字。@rapt,它有一些巨大的优势。其中最重要的一点是,您只能多次引用同一格式或按顺序引用:“{1}、{1}、{0}和{1}”。格式(“鸡蛋”、“垃圾邮件”)==“垃圾邮件、垃圾邮件、鸡蛋和垃圾邮件”注意:这也是将变量注入字符串的最有效方法。呵呵<代码>打印
和格式
。。。?回到60多年前的FORTRAN时代:)
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("Name={}, balance={}".format(var-name, var-balance))
def printf(format, *values):
print(format % values )
printf("Hello, this is my name %s and my age %d", "Martin", 20)
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')