1

如果

>>> (1,2)*2
>>> (1,2,1,2)

为什么这不起作用?

'%d %d %d %d' % (1,2)*2

TypeError: not enough arguments for format string

有没有另一种方法可以做到这一点而不必显式地构造元组?

4

2 回答 2

3

您需要添加一对括号:

'%d %d %d %d' % ((1,2)*2)

在 Python 中,%*具有相同的优先级,因此您的代码相当于

('%d %d %d %d' % (1,2))*2

这两个运算符具有相同优先级的原因是它%也是余数运算符,因此被认为与乘法和除法属于同一类别。

于 2013-08-22T19:57:34.783 回答
0

只需添加一对额外的括号:

>>> '%d %d %d %d' % ((1,2)*2)
'1 2 1 2'
>>>

就目前而言,您的代码正在尝试使用该字符串(1,2)然后将该字符串乘以 2。

于 2013-08-22T19:57:37.390 回答