当我尝试用' 0'分割一串数字时,它会给我一个错误的输出。
for x in str(0123):
print x
8
3
但如果没有0,那就是正确的。
for x in str(1234):
print x
1
2
3
4
任何人都可以帮忙吗?
答案 0 :(得分:3)
当您输入数字0123
时,它会以整数形式输入。整数没有内置的前导零,因此在123
函数将其转换为字符串之前,它会将自身缩减为str()
。
因此,您的计划会看到str(123)
而不是str(0123)
。
您可以通过使用引号而不是str()
将数字设为字符串来解决此问题:
for x in "0123":
print x
编辑:根据评论,我意识到我的解释有错误。尽管关于整数的内容没有内置零,但实际上Python 2中的行为却做了不同的事情。
用前导零写的整数是octal numbers in python。所以当你放0123
时,str()
没有像我说的那样看到123
,它实际上看到的是1*8^2+2*8+3 = 83
,并转换str(83)
,这就是你的输出越来越好了。
无论如何,关闭引号中的数字仍然可以得到你想要的东西,只是出于与我想的不同的原因。