我已经运行了4组以下的语句,并且它们给出了不同的结果。我不确定差异的原因。请参阅下面的说明 -
' USERCOUNT'强制转向元组,为什么格式化成为一个元组?在这里被胁迫了吗?
usercount=(6) #integer value
print ("Users connected: %d"%(usercount,))
Users connected: 6
%s或%d没有区别,如果它的元组,打印功能的工作方式相同。
usercount=(6)
print ("Users connected: %s"%(usercount,))
Users connected: 6
' USERCOUNT'声明为元组,print fxn适用于%s占位符。
usercount=(6,) # now tuple
print ("Users connected: %s"%(usercount,))
Users connected: (6,)
相同情况%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
答案 0 :(得分:2)
很高兴知道你应该将%s用于数字的字符串%d(十进制),你可以阅读这个Link以获得关于这两个的更好的信息。
但在你的情况下:
usercount=(6)
行只返回一个Integer值及其使用%d
的真实方式。
usercount=(6)
行只返回一个Integer值,它可以被转换为字符串并打印出来,因此您也可以使用%s
。
usercount=(6,)
行只返回一个元组值,可以将其转换为字符串并打印,这样您就可以使用%s
。
usercount=(6,)
行只返回一个元组值,在这种情况下,您无法将元组转换为整数,因此您无法使用%d
。