格式字符串的参数不足

时间:2010-05-04 10:36:53

标签: python format

我在Python中有这样的代码:

def send_start(self, player):
    for p in self.players:
        player["socket"].send_cmd('<player id="%s" name="%s" you="%s" avatar="*.png" bank="%s" />'%(self.players.index(p)+1, p['name'], int(player["pid"]==p["pid"]), 0))
    player["socket"].send_cmd('<game playerid="%s" />'%(self.turnnow))
    player["socket"].send_cmd("<start />")

错误在这篇文章的标题中。怎么了?

2 个答案:

答案 0 :(得分:18)

如果self.turnnow为空元组,则代码将失败:

>>> var = ()
>>> print "%s" % (var)
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: not enough arguments for format string
>>> print "%s" % (var,)
()

这是因为如果元组只有一个元素,Python中带括号的表达式 not 会自动成为元组。 (expr)相当于expr(expr, )相当于将expr作为第一个元素的单元素元组。因此,请尝试在第二个self.turnnow语句中添加print之后的逗号。

答案 1 :(得分:4)

编辑:忽略这个答案,这不是问题所在。保留意见。

尝试更换

(self.turnnow)

(self.turnnow,)

有帮助(即添加一个尾随逗号)。现在的方式不是元组和parens只是装饰性的。可能不是这样,因为你没有提供行号 - 必须猜测。