2010-05-04 30 views
11

我有这样的代码在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

你有两行代码使用格式字符串,并且其中任何一个代码都有错误(虽然它们看起来很正确)。回溯显示哪一条线? – 2010-05-04 10:40:47

+0

我不知道这是服务器级错误。有自己的登录系统。 – Ockonal 2010-05-04 10:43:13

+1

无重放。没有回溯,甚至无法查看它是否是导致错误的特定功能 – SilentGhost 2010-05-04 10:45:25

回答

17

您的代码将失败。 (expr)相当于expr(expr,)相当于一个元素元组,其持有expr作为第一个元素。因此,请尝试在第二个print声明中的self.turnnow之后添加逗号。

4

编辑:无视这个答案,它不可能是问题。保持评论。

尝试,如果与

(self.turnnow,) 

帮助(即增加一个尾随逗号)替换

(self.turnnow) 

。现在,它不是一个元组和parens只是装饰。可能不是这样,因为你没有提供行号 - 必须猜测。

>>> 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中的括号表达式不自动成为一个元组如果元组将只有一个元素:如果self.turnnow是一个空的元组

+0

在单个参数的情况下,它不必是一个元组。 – SilentGhost 2010-05-04 10:46:51

+0

@SilentGhost:对,但是如果'self.turnnow'本身就是一个元组,那么会出现问题。但是,想一想,这将更有可能是“额外的论据”。 – doublep 2010-05-04 10:50:25

相关问题