English 中文(简体)
为什么我获得“TypeError:不是在扼制格式过程中转换的所有论点”试图形成一个图形?
原标题:Why do I get "TypeError: not all arguments converted during string formatting" trying to format a tuple?
  • 时间:2009-09-21 17:03:45
  •  标签:

我想使用%-打字格式,印刷图:

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

我期望它像<代码”一样印刷。 这是一张图:(1,2,3),但我有了一个字典上的错误。 差价:并不是在扼制格式过程中转换的所有论点。

什么是错的,我如何确定?


在编辑这个清晰度和现代化的问题时,我保留了原始例子的一个有趣方面:围绕<代码>tup的括号。 <>>>><>>>>>>>>>>>>> 符号<> syntax, 且o 无需<>。 也许,《任择议定书》认为(这里的答复中描述的)全面总结是必要的,但只是错了。 关于这一问题的更多信息,见。 • 如何创建“单一州”图,只包含一个要素

最佳回答
>>> thetuple = (1, 2, 3)
>>> print("this is a tuple: %s" % (thetuple,))
this is a tuple: (1, 2, 3)

作为唯一项目,即<代码>(指南,>部分)的单一年度参考书,是此处的关键轨道。

问题回答

<>% syntax>已过时。 使用str.format , 更简单易读:

t = 1,2,3
print( this is a tuple: {0}. .format(t))

正确的做法是:

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

<>% string营运人仍在3.x处得到支持,因而更容易将图形(或清单)作为单独的数值。 采用<代码>。

>>> tup = (1,2,3)
>>> print("First: %d, Second: %d, Third: %d" % tup)
First: 1, Second: 2, Third: 3
>>> print( First: {}, Second: {}, Third: {} .format(1,2,3))
First: 1, Second: 2, Third: 3
>>> print( First: {0[0]}, Second: {0[1]}, Third: {0[2]} .format(tup))
First: 1, Second: 2, Third: 3

:>>!

>>> tup = (1, 2, 3)
>>> print "Here it is: %s" % (tup,)
Here it is: (1, 2, 3)
>>>

此处,(tup,) - https://stackoverflow.com/questions/12876177/>, 随线搭桥,,是一部包含图的图形。 外部研究是占经营者比例的论点。 内部教学内容是实际印刷的。 如无线搭桥 com,(tup)tup相同——母体只是正常的组别母。

尽管这个问题很老,答案很多,但我仍然想加上最不成熟的“常设”以及可读/明智的回答。

由于安道莫尼已经正确展示了普通读物印刷方法,因此,这是对单程印刷每个元素的补充,因为Fong Kah Chun用%s syntax正确显示了这一点。

有趣的是,在评论中只提到了这一点,但使用星号操作员来包装图,则使用<代码>str.format,充分具有灵活性和可读性。 方法: 印本

tup = (1, 2, 3)
print( Element(s) of the tuple: One {0}, two {1}, three {2} .format(*tup))

这样做还避免在印刷一个单一要素图时印刷一个拖车,因为Jacob CUI绕过该图,有<代码>replace。 (尽管如果想在印刷时保留类型代表的话, trail线代表是正确的):

tup = (1, )
print( Element(s) of the tuple: One {0} .format(*tup))
t = (1, 2, 3)

# the comma (,) concatenates the strings and adds a space
print "this is a tuple", (t)

# format is the most flexible way to do string formatting
print "this is a tuple {0}".format(t)

# classic string formatting
# I use it only when working with older Python versions
print "this is a tuple %s" % repr(t)
print "this is a tuple %s" % str(t)

这只字不动地使用扼制格式,但你应当能够做到:

print( this is a tuple  , (1, 2, 3))

如果你真的想要采用扼制格式:

print( this is a tuple %s  % str((1, 2, 3)))
# or
print( this is a tuple %s  % ((1, 2, 3),))

1. 明确将主食转换成第一线:

t = (1,2,3)

print("This is a tuple: %s" % str(t))

<<%>>>>> > 操作者在座标上> 印本格式 在这里,由于我们使用<条码>%的持单人,因此宜通过(以<条码>(t)重印)。

如果使用<代码>(format)将只包含一个论点的图形成形,则该图将出现一个线 trail:

>>> t = (1,)
>>> print( this is a tuple: {}. .format(t))
this is a tuple: (1,).

这与Syntax

你也可以尝试这样做。

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

仅凭包装和无包装的概念,即可使用<条码>%s>。





相关问题