尝试乘以元组元素时字符串格式错误 - python

时间:2013-08-22 19:56:43

标签: python string tuples

如果

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

为什么这不起作用?

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

TypeError: not enough arguments for format string

有没有其他方法可以做到这一点而无需显式构造元组?

2 个答案:

答案 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.