如果
>>> (1,2)*2
>>> (1,2,1,2)
为什么这不起作用?
'%d %d %d %d' % (1,2)*2
TypeError: not enough arguments for format string
有没有其他方法可以做到这一点而无需显式构造元组?
答案 0 :(得分:3)
您需要添加一对括号:
'%d %d %d %d' % ((1,2)*2)
在Python中,%
and *
have the same precedence,因此您的代码等同于
('%d %d %d %d' % (1,2))*2
两个运算符具有相同优先级的原因是%
也是余数运算符,因此被认为与乘法和除法属于同一类别。
答案 1 :(得分:0)
只需添加一对额外的括号:
>>> '%d %d %d %d' % ((1,2)*2)
'1 2 1 2'
>>>
目前的情况是,您的代码正在尝试使用(1,2)
生成字符串,然后将该字符串乘以2.