Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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 3.x - Fatal编程技术网

Python 如何让它准确地检测一个数字中有多少位?

Python 如何让它准确地检测一个数字中有多少位?,python,python-3.x,Python,Python 3.x,我试图让我的代码在自己的行上分别显示每个数字,它确实做到了这一点。然而,我在它的末尾得到了一个错误,所以我想准确地检测数字中有多少位。我很难找到一个不是len()的解决方案,因为对于这个特定的程序,我不应该使用它 这是我的密码: number = int(input("Enter a positive integer: ")) number = str(number) digits = 0 while True: print(number[digits]) digits += 1

我试图让我的代码在自己的行上分别显示每个数字,它确实做到了这一点。然而,我在它的末尾得到了一个错误,所以我想准确地检测数字中有多少位。我很难找到一个不是len()的解决方案,因为对于这个特定的程序,我不应该使用它

这是我的密码:

number = int(input("Enter a positive integer: "))
number = str(number)
digits = 0
while True:
    print(number[digits])
    digits += 1

您可以创建一个计数器,其while循环应如下所示:

num = int(input("enter num"
result = 0

while num > 10:
  num = num // 10
  result += 1

result += 1


print(result)

它抛出一个错误,因为您正在运行一个无限while循环。改为使用

number = int(input("Enter a positive integer: "))
number = str(number)
digits = 0
for i in number:
    print(i)
    digits+=1

您还可以使用
log10
(以10为底的对数)函数:

import math
number = int(input("Enter a positive integer: "))
print(1 + int(math.log10(number)))

您只需打印与新行分隔符连接的字符串元素即可解决问题,而无需尝试查找字符串中有多少元素:

number = input("Enter a positive integer: ")
print('\n'.join(number))

出现错误的原因是当
数字
获取数字长度的值时,例如
l
,则
数字[l]
不存在(索引从0开始)

number=input(“输入一个正整数:”)
#类型(数字)是指您不必转换为int并重新转换为string
#既然你可以这样走。。
数字=0
对于数字中的数字:
打印(数字)#数字仍然是str
位数+=1

对于编号为1的项目:数字+=1
。您还可以添加
print(item)
数字=[character.isdigit()表示str(number)中的字符]为什么要获取字符串(
number
),将其转换为整数,然后再转换回字符串?我认为这可以正确计算“007”中有多少个数字?这就是为什么+1
number = input("Enter a positive integer: ")) 

# type(number) is <class 'str'> you don't have to convert to int and reconvert to string

# since <class 'str'> implements iterable you could go like this ..

digits = 0 

for digit in number:

     print(digit)  # digit is still a str here

     digits += 1