在Python 2.7中使用多个占位符格式化程序打印字符串

在Python 2.7中使用多个占位符格式化程序打印字符串,python,string,list,printing,formatting,Python,String,List,Printing,Formatting,我试图在Python2.7.10中创建一个算法,该算法接受用户输入,将其拆分并将单词放入一个列表,然后从该列表中获取所有单词,并以特定的方式打印它们 usr_input = raw_input(' > ') input = usr_input.split(' ') print "You think that the painting is:" print "%s" + ", %s" * len(input) + "." % ( > ? < ) 我知道这可以通过str.jo

我试图在Python2.7.10中创建一个算法,该算法接受用户输入,将其拆分并将单词放入一个列表,然后从该列表中获取所有单词,并以特定的方式打印它们

usr_input = raw_input(' > ')

input = usr_input.split(' ')

print "You think that the painting is:"
print "%s" + ", %s" * len(input) + "." % ( > ? < )

我知道这可以通过
str.join(str)
方法实现,但是有没有一种方法可以像我上面解释的那样实现呢?谢谢。

您可以通过执行以下操作来做您想做的事情:

print ",".join(["%s"] * len(input)) % tuple(input)
基本上,构造
%s,
。。。并将输入作为列表传递给字符串格式化程序。你也可以完全按照你写的那样去做,只要把你的清单传进去就行了

print "%s" + ", %s" * len(input)) + "." % tuple(input)

您应该在“%”之后使用元组。请注意,您已经考虑了打印中的第一个单词,因此len(input)-1个单词留待编写

usr_input = raw_input(' > ')

input = usr_input.split(' ')

output = "%s" + ", %s" * (len(input) - 1) + "."
print "You think that the painting is:"
print output % tuple(input)
使用
print(“%s”+”,%s“*(len(input)-1)+”)%tuple(input)


但是,IMO
,'.join(input)+'.
更好:)

您好,谢谢您的回答,但我尝试将列表传递给它,结果如下:
TypeError:格式字符串的参数不够。另外,您附加的第一个代码返回:
TypeError:不支持%的操作数类型:'list'和'list'
,第二个代码只返回
%s、&s、&s、%s。
我想知道是否有一种方法可以在没有
.join(str)
方法的情况下执行此操作。好的,对不起。编辑我的答案-我有一个挂括号错误。你知道回答你问题的每个人都给出了相同的答案,对吗?是的,但不是每个人的答案都是可执行的。嗨,谢谢你的概念,将输入转换成元组可能就可以了。虽然在输入了一些参数后,我在尝试运行代码时遇到了一个错误。下面是我要说的:`>a您认为这幅画是:打印“%s”+,%s*(len(input)-1)+““%tuple(input)TypeError:在字符串格式化过程中并非所有参数都被转换”。格式化优先于串联,因此出现了错误。谢谢大家。我已经修好了,谢谢!这就解决了问题。出于好奇,(我是Python新手)为什么您认为这里使用
.join(str)
方法更好?(通常在组合字符串时使用它比使用
str+str
更好吗?)更具pythonic性,通常更快。@Anshu Kumar感谢大家的贡献,Anshu Kumar设法解决了这个问题。
usr_input = raw_input(' > ')

input = usr_input.split(' ')

output = "%s" + ", %s" * (len(input) - 1) + "."
print "You think that the painting is:"
print output % tuple(input)