如果
>>> (1,2)*2
>>> (1,2,1,2)
为什么这不起作用?
'%d %d %d %d' % (1,2)*2
TypeError: not enough arguments for format string
有没有另一种方法可以做到这一点而不必显式地构造元组?
您需要添加一对括号:
'%d %d %d %d' % ((1,2)*2)
在 Python 中,%
并*
具有相同的优先级,因此您的代码相当于
('%d %d %d %d' % (1,2))*2
这两个运算符具有相同优先级的原因是它%
也是余数运算符,因此被认为与乘法和除法属于同一类别。
只需添加一对额外的括号:
>>> '%d %d %d %d' % ((1,2)*2)
'1 2 1 2'
>>>
就目前而言,您的代码正在尝试使用该字符串(1,2)
然后将该字符串乘以 2。