格式字符串的参数不足

Max*_*rai 13 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 />")
Run Code Online (Sandbox Code Playgroud)

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

Tam*_*más 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,)
()
Run Code Online (Sandbox Code Playgroud)

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