Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中带前导零的整数的长度_Python_Python 2.7 - Fatal编程技术网

python中带前导零的整数的长度

python中带前导零的整数的长度,python,python-2.7,Python,Python 2.7,如何找到整数的长度。有很多解决方案,我使用了(int(math.log10(TheNumber))+1)。但如果数字为“0111”,则在python 2.7和python 3中返回为“1”。*它返回“语法错误:不允许在十进制数中前导零”。但“0111”是“111”。但是使用len(str(number))给出了正确的长度。有什么解决办法吗 我只是想澄清一下。提前谢谢 对不起,问题中没有多少信息。 问题是,, 0111,这个数字的长度是3,但是当我检查这个整数的长度时,在Python2.7中,它返

如何找到整数的长度。有很多解决方案,我使用了
(int(math.log10(TheNumber))+1)
。但如果数字为“0111”,则在python 2.7和python 3中返回为“1”。*它返回
“语法错误:不允许在十进制数中前导零”
。但“0111”是“111”。但是使用
len(str(number))
给出了正确的长度。有什么解决办法吗

我只是想澄清一下。提前谢谢

对不起,问题中没有多少信息。 问题是,, 0111,这个数字的长度是3,但是当我检查这个整数的长度时,在Python2.7中,它返回2。 代码是

它返回2作为答案, 当我在python3.*中运行上述代码时,它显示为
SyntaxError:十进制整数文本中的前导零是不允许的;对八进制整数使用0o前缀

在我的程序中,如果用户给出这种数字,即有前导零的数字,我应该如何将它转换成没有前导零的数字

my_输入=0111

转换的输入=111

在python 2.7中,它被视为八进制数,当我打印它时,它返回
73
在Python3*中,它要求八进制表示(SyntaxError)。 如果我使用另一种方法
int(math.log10(TheNumber))+1

在Python2.7中,它返回2,隐式地转换为八进制数。
在python 3中,它返回语法错误。所以,任何解决方案都会有好处,如果我错了,请指出。提前感谢

语法错误是由于-这基本上使Python3停止将0前缀的数字静默地解释为八进制(Python2就是这样做的)

实际上,
0o111
(即八进制中的111)的计算结果是十进制中的73

你的问题并没有给出太多关于你在看什么样的长度以及你需要用它做什么的信息。但是,如果您想知道一个数字由多少个十进制数字组成,可以执行以下操作:

len(int(number_as_string, 10))

这将确保即使是
'0111'
也以十进制(即111)进行解释。

'0111'
是字符串而不是整数。如果您想让它返回
4
,只需使用
len(number)
。没有“整数的长度”这样的东西。我认为通常认为整数的长度是给定基数中的位数。也许这并不普遍?也许吧,但重要的是要让初学者远离这种思维方式。理解事物的实际存在与仅仅是这些事物的表示之间的区别是至关重要的。Abisake-如果你粘贴(实际代码的相关部分),特别是将数字赋给变量的行,然后调用函数以获得长度,这会有所帮助。仅从描述来看,如果您没有对数字的值使用有效的语法,则无法确定如何执行len(str(number))。问题已经说明
len(str(number))
正在工作。显然,如果不使用常量的有效语法,他将无法从代码中的常量分配
数字
,老实说,OP的具体操作存在相当大的不确定性,因为他没有发布确切的代码。在任何情况下,很明显,在某个时候,他试图使用
0111
,并根据您给出的原因得到了一个
SyntaxError
。还不清楚问题中的
'0111'
是否代表代码中的实际字符串,或者只是他在问题中添加的单引号,虽然没有提到从
math.log10
获取
TypeError
。关于您的答案,
len(int(number\u as\u string,10))
将不起作用。你需要
len(str(int(number\u as\u string,10))
,因为你不能直接在
int
上调用
len
。谢谢,它起作用了,因为
len(str(int(number\u as\u string,10))
给出了正确的答案。
import math
a = 0111
print(int(math.log10(a))+1)
len(int(number_as_string, 10))