Как мне сделать так, чтобы он точно определял, сколько цифр в числе? - PullRequest
2 голосов
/ 04 ноября 2019

Я пытаюсь, чтобы мой код отображал каждую цифру отдельно в отдельной строке, и он это делает. Однако в конце я получаю сообщение об ошибке, поэтому я хочу точно определить, сколько цифр в числе. У меня проблемы с поиском решения для этого, которое не len (), потому что для этой конкретной программы я не должен его использовать.

Вот мой код:

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

Ответы [ 5 ]

3 голосов
/ 04 ноября 2019

Вы можете создать счетчик, а цикл while должен выглядеть так:

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

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

result += 1


print(result)
2 голосов
/ 04 ноября 2019

Выдает ошибку, потому что вы запускаете бесконечный цикл while. Используйте вместо.

number = int(input("Enter a positive integer: "))
number = str(number)
digits = 0
for i in number:
    print(i)
    digits+=1
1 голос
/ 04 ноября 2019

Вы также можете использовать функцию log10 (логарифм с основанием 10):

import math
number = int(input("Enter a positive integer: "))
print(1 + int(math.log10(number)))
0 голосов
/ 04 ноября 2019

Причина, по которой вы получаете ошибку, состоит в том, что когда digits получает значение длины числа, скажем l, тогда number[l] не существует (индексы начинаются с 0)

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
0 голосов
/ 04 ноября 2019

Вы можете решить свою проблему, просто печатая элементы строки, объединенные с разделителем новой строки, без попыток определить, сколько элементов в строке:

number = input("Enter a positive integer: ")
print('\n'.join(number))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...