Python: len()函数不识别开头的0
我想测试一个10位数是否真的有10位,但每当这个数字以0开头时,len()函数只算出9位。我要怎么解决这个问题呢?
目前的情况是:
我有一个由数字组成的变量,我把这个变量转换成了字符串,然后用了这个语句。
if len(something) != 10:
(do something)
我现在的代码是:
number = int(input("Enter number: "))
number = str(number)
if len(number) != 10:
print ("Not 10 digits long")
else:
print ("Good")
如果我输入一个10位的数字,那没问题,但如果我输入一个以0开头的10位数字,len()函数就只识别成9位了。请帮帮我。
3 个回答
0
在Python中,以0开头的数字是用八进制(也叫做八进制数)来表示的。要计算这些数字的位数,你需要先把它们转换成字符串:
# Not converted
number1 = 0373451234
print "number: "+str(number1)+" digits:"+str(len(str(number1)))
> 数字: 65950364 位数: 8
# Converted
number2 = "0373451234"
print "number: "+str(number2)+" digits:"+str(len(str(number2)))
> 数字: 0373451234 位数: 10
1
你把它强制转换成整数了,但输入的值其实是字符串。
number = input("Enter number: ")
if len(number) != 10:
print ("Not 10 digits long")
else:
print ("Good")
len
函数是用来处理字符串的。
如果你在用 Python 2.x,最好用 raw_input("请输入数字: ")
。
2
提供你的代码是因为你把输入的内容转换成了整数,然后又把它转换成了字符串(在Python3中,输入的内容默认是字符串类型,如果你在用Python2,记得要把它转换成字符串,或者使用raw_input,就像hackaholic说的那样)。
把
number = int(input("Enter number: "))
number = str(number)
替换成
number = input("Enter number: ")
这样数字就会直接变成字符串。你可以对它使用len()函数,甚至在它是0000000000的时候也能正常工作。