Not enough arguments for format string

前端 未结 2 1691
抹茶落季
抹茶落季 2021-02-13 13:03

I have such code in Python:

def send_start(self, player):
    for p in self.players:
        player[\"socket\"].send_cmd(\'

        
相关标签:
2条回答
  • 2021-02-13 13:42

    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.

    0 讨论(0)
  • 2021-02-13 13:51

    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.

    0 讨论(0)
提交回复
热议问题