格式字符串参数不足

发布于 2024-08-31 09:39:49 字数 435 浏览 4 评论 0原文

我在 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 />")

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

I have such code in 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 />")

And the error is in the title of this post. What's wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瀞厅☆埖开 2024-09-07 09:39:49

如果 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 中带括号的表达式不会自动成为元组。 (expr) 相当于 expr(expr, ) 相当于将 expr 作为第一个元素的单元素元组。因此,请尝试在第二个 print 语句中的 self.turnnow 后面添加一个逗号。

Your code would fail if self.turnnow is an empty tuple:

>>> 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,)
()

This is because a parenthesized expression in Python does not automatically become a tuple if the tuple would have only one element. (expr) is equivalent to expr. (expr, ) is equivalent to a one-element tuple holding expr as the first element. So, try adding a comma after self.turnnow in the second print statement.

心病无药医 2024-09-07 09:39:49

编辑:忽略这个答案,这不可能是问题。留待评论。

尝试是否

(self.turnnow)

(self.turnnow,)

help 替换(即添加尾随逗号)。现在的情况不是元组,括号只是装饰性的。情况可能并非如此,因为您没有提供行号 - 必须猜测。

EDIT: Disregard this answer, it cannot be the problem. Keeping for the comments.

Try if replacing

(self.turnnow)

with

(self.turnnow,)

helps (i.e. adding a trailing comma). The way it is now that's not a tuple and parens are merely decorative. Might not be the case since you didn't provide line number — have to guess.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文