J'essaie d'obtenir mon code pour afficher chaque chiffre individuellement sur sa propre ligne, et il le fait. Cependant, je reçois une erreur à la fin de celui-ci, donc je veux détecter exactement combien de chiffres sont dans le nombre. J'ai du mal à trouver une solution pour cela qui n'est pas len (), car pour ce programme spécifique je ne suis pas censé l'utiliser.

Voici mon code:

number = int(input("Enter a positive integer: "))
number = str(number)
digits = 0
while True:
    print(number[digits])
    digits += 1
2
adamgeo1 4 nov. 2019 à 09:02

5 réponses

Vous pouvez également utiliser la fonction log10 (logarithme avec base 10):

import math
number = int(input("Enter a positive integer: "))
print(1 + int(math.log10(number)))
1
Selcuk 4 nov. 2019 à 06:11

Il génère une erreur car vous exécutez une boucle while infinie. Utilisez plutôt pour.

number = int(input("Enter a positive integer: "))
number = str(number)
digits = 0
for i in number:
    print(i)
    digits+=1
2
Sharan_Sundar 4 nov. 2019 à 06:06

Vous pouvez créer un compteur et avec une boucle while devrait ressembler à:

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

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

result += 1


print(result)
3
Damián Rafael Lattenero 4 nov. 2019 à 06:05

Vous pouvez résoudre votre problème simplement en imprimant des éléments de chaîne concaténés avec un délimiteur de nouvelle ligne sans tenter de trouver le nombre d'éléments dans la chaîne:

number = input("Enter a positive integer: ")
print('\n'.join(number))
0
Eduard Ilyasov 4 nov. 2019 à 13:14

La raison pour laquelle vous obtenez l'erreur est que lorsque digits acquiert la valeur de la longueur du nombre, dites l, alors number[l] n'existe pas (les indices commencent à 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
Tilak Maddy 4 nov. 2019 à 13:21