【发布时间】:2020-06-23 02:50:48
【问题描述】:
如何求整数的长度。有很多解决方案,我用过(int(math.log10(TheNumber))+1)。但是如果数字是'0111',它在python 2.7中返回为'1',在python 3.*中它返回'SyntaxError: leading zeroes in a decimal number is not permitted'。但是'0111'是'111'。但是使用len(str(number)) 给出了正确的长度。任何解决方案..
只是想澄清一下。提前致谢
抱歉,问题中的信息很少。 问题是, 0111,这个数字的长度是3,但是当我检查这个整数的长度时,在python 2.7中,它返回2。 代码是
a = 0111
print(len(str(a)))
它返回 2 作为答案,
当我在 python3.* 中运行上面相同的代码时,它显示为SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers。
在我的程序中,如果用户给出这种数字,即有前导零的数字,我应该如何将其转换为没有前导零的数字。
我的输入 = 0111
converted_input =111
在python 2.7中它被认为是八进制数,当我打印它时,它返回73
在 python 3.* 中,它要求八进制表示(SyntaxError)。
如果我用另一种方法int(math.log10(TheNumber))+1
import math
a = 0111
print(int(math.log10(a))+1)
在 python 2.7 中,它返回 2,隐式转换为八进制数。 在 python 3.* 中,它返回语法错误。所以,任何解决方案都会有好处,或者如果我错了,请指出。提前致谢
【问题讨论】:
-
’0111’是字符串而不是整数。如果您希望它返回4,只需使用len(number)。 -
没有“整数的长度”这样的东西。
-
我认为通常将整数的长度视为给定基数中的位数。也许这不是普遍的?
-
也许,但重要的是让初学者远离这样的想法。了解事物的实际情况与这些事物的表示之间的区别至关重要。
-
Abisake - 如果您粘贴(相关部分)您的实际代码,特别是您将数字分配给变量的行以及然后调用函数以获取长度的行,这将有所帮助。仅从描述来看,如果您没有对数字的值使用有效的语法,您如何设法做到 len(str(number)) 存在不确定性。
标签: python python-2.7