使用python print()进行元组和占位符交互?

时间:2018-05-08 03:51:21

标签: python tuples

我已经运行了4组以下的语句,并且它们给出了不同的结果。我不确定差异的原因。请参阅下面的说明 -

案例1

' USERCOUNT'强制转向元组,为什么格式化成为一个元组?在这里被胁迫了吗?

usercount=(6)  #integer value
print ("Users connected: %d"%(usercount,))  
Users connected: 6

情况2

%s或%d没有区别,如果它的元组,打印功能的工作方式相同。

usercount=(6)
print ("Users connected: %s"%(usercount,))
Users connected: 6

情形3

' USERCOUNT'声明为元组,print fxn适用于%s占位符。

usercount=(6,) # now tuple
print ("Users connected: %s"%(usercount,))
Users connected: (6,)

CASE4

相同情况%d占位符抛出错误,需要编号,而不是元组。

usercount=(6,)
print ("Users connected: %d"%(usercount,))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-59-02d2ce66d935> in <module>()
      1 usercount=(6,)
----> 2 print ("Users connected: %d"%(usercount,))
TypeError: %d format: a number is required, not tuple

此外,当元组以另一种方式声明时,两个占位符都有效。

usercount=(6,)
print ("Users connected: %s"%(usercount))
Users connected: 6

usercount=(6,)
print ("Users connected: %d"%(usercount))
Users connected: 6

1 个答案:

答案 0 :(得分:2)

很高兴知道你应该将%s用于数字的字符串%d(十进制),你可以阅读这个Link以获得关于这两个的更好的信息。
但在你的情况下:

情况1:

usercount=(6)行只返回一个Integer值及其使用%d的真实方式。

情况2:

usercount=(6)行只返回一个Integer值,它可以被转换为字符串并打印出来,因此您也可以使用%s

情形3:

usercount=(6,)行只返回一个元组值,可以将其转换为字符串并打印,这样您就可以使用%s

CASE4:

usercount=(6,)行只返回一个元组值,在这种情况下,您无法将元组转换为整数,因此您无法使用%d