Python: len()函数不识别开头的0

0 投票
3 回答
7997 浏览
提问于 2025-05-01 03:59

我想测试一个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的时候也能正常工作。

撰写回答