2012-03-12 42 views
1

虽然我为python程序做了一个字符串格式化,但是我收到一个错误“格式字符串没有足够的参数”。 我的代码部分的行在python中遇到字符串格式错误

a[i][j] = input("college %d %s" %(j+1) %d[i]) 

有人能指出我的错误?我想不出我自己

+2

“%”非常难看已弃用。您应该考虑使用'“大学{:d} {:s}”。格式(j + 1,d [i])' – 2012-03-12 22:13:53

+1

'%'不被弃用。它计划是,但没有。 – kindall 2012-03-12 23:40:11

回答

3

你应该说

a[i][j] = input("college %d %s" % (j+1, d[i])) 

这是因为%字符串格式化操作者只需要一个说法,所以如果你想多格式化,你需要通过一个元组。所以我不能说

"%s %s" % "Hello" % "World" 

我,而不是必须说

"%s %s" % ("Hello", "World") 

如果你正在使用Python 2.6或更高版本,您还可以使用format method的选项,例如

"college {0} {1}".format(j+1, d) 

如果你正在使用Python 2.7或更高版本,则可以省略索引值,并且简单地说

"college {} {}".format(j+1, d) 
1

我想你的意思是像

a[i][j] = input("college %d %s" % (j+1, d[i])) 
1

a[i][j] = input("college %d %s" %(j+1,d[i]))

0
a[i][j] = input("college %d %s" % (j+1, d[i])) 
0

实际上,你可以仅仅通过增加一个额外%

a[i][j] = input("college %d %%s" %(j+1) %d[i]) 

这样做是因为,说j=5,然后

"college %d %%s" %(j+1) 

解决这个计算结果为

"college 6 %s" 

,那么你有

a[i][j] = input("college 6 %s"%d[i]) 

说了这么多,你不应该做这种方式,因为它是效率低下,最多叠加的%%会得到更多参数添加