python - 格式字符串的参数不足

标签 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 />")

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

最佳答案

如果 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 之后添加一个逗号。

关于python - 格式字符串的参数不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764520/

相关文章:

java - SimpleDateFormat 不会解析!

Python 3 : How to read a csv file and store specific values as variables

python - 允许使用 Scrapy Image Pipeline 进行重复下载吗?

python - 来自 python 的子进程模块无法运行 bash 命令,如 "<cmd1> | <cmd2>"

excel - ods 和 xls 中的 PHPSpreadsheet 不正确的日期格式代码

c - 使用 "%c%c..."格式说明符打印字符串会产生不稳定的结果。为什么会这样?

format - 为什么字节顺序存在?

c# - 无法在 Silverlight DataGrid 列中应用字符串格式

python - 如何在matplotlib右侧显示音频

python - Aerospike where 查询索引 python