为什么我尝试格式化一个元组时会出现“TypeError:not all arguments converted during string formatting”错误?

147

我想使用%风格的字符串格式化来打印一个元组:

tup = (1,2,3)
print("this is a tuple: %s." % (tup))

我期望它打印出类似于This is a tuple: (1,2,3).的内容,但是实际上我得到了一个错误,提示TypeError: not all arguments converted during string formatting

这是什么问题,我该如何解决?


在编辑这个问题以使其更加清晰和现代化时,我保留了原始示例中一个有趣的方面:括号围绕着tup。这些括号对于%语法来说不是必需的,并且也不会创建一个元组。可能 OP 理解为需要包装元组(在这里的答案中描述),但只是使用方法错误。关于该问题的更多信息,请参见如何创建一个只包含一个元素的“单例”元组

16个回答

2

对于 Python 3

tup = (1,2,3)
print("this is a tuple %s" % str(tup))

1
尝试以下方法以获得答案:
>>>d = ('1', '2') 
>>> print("Value: %s" %(d))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting

如果我们将一个元组放在括号中,它本身就成为了一个元组:
>>> (d)
('1', '2')

这意味着上面的打印语句看起来像:print("Value: %s" %('1', '2')),这是一个错误!
因此:
>>> (d,)
(('1', '2'),)
>>> 

以上内容将被正确传递给打印函数的参数。

0

多年来发生了很大变化,现在你可以这样做:

tup = (1,2,3)
print(f'This is a Tuple {tup}.')

结果是:这是一个元组(1,2,3)。


0

在Python3中使用f-string进行快速打印。

tup = (1,2,3)
print(f"this is a tuple {tup}")

-1
你也可以试试这个;
tup = (1,2,3)
print("this is a tuple {something}".format(something=tup))

你不能仅仅因为元组的打包和解包概念,就使用%s(tup)


-5

言而无信,不如静默示码:

>>> tup = (10, 20, 30)
>>> i = 50
>>> print '%d      %s'%(i,tup)
50  (10, 20, 30)
>>> print '%s'%(tup,)
(10, 20, 30)
>>> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接