Код для определения количества цифр в числе выводит ответ бесконечно

#python

Вопрос:

Я пытаюсь создать программу на Python, которая может сказать вам, сколько цифр в числе. Например, входные 2345 данные выдают выходные 4 цифры. Я попытался сделать это while циклом, но теперь он бесконечно выводит количество цифр в числе.

 interger = int(input('please type an interger and the programme will tell you how many digits it has!: '))  while interger != 0:  if 0 lt; interger lt; 10:  print ('1 digit')  elif 9 lt; interger lt; 100:  print('there are 2 digits')  elif 99 lt; interger lt; 1000:  print('there are 3 digits')  elif 999 lt; interger lt; 10000:  print('there 4 digits')   elif 9999 lt; interger lt; 100000:  print('there are 5 digits')  elif 99999 lt; interger lt; 1000000:  print ('there are 6 digits')  elif 999999 lt; interger lt; 10000000:  print('there are 7 digits')  elif 9999999 lt; interger lt; 100000000:  print('there are 8 digits.')  break  elif interger == interger:  print('that is correct')  

Комментарии:

1. num_digits = len(str(integer))

2. Я не уверен, что понимаю, какова цель цикла while здесь

3. while Цикл предназначен для обеспечения нескольких входов, верно? Тогда input вызов находится в неправильном месте, и условие прерывания отсутствует (по какой-либо причине, кроме 8-значного регистра). Вы тестируете interger != 0 в этом while состоянии, но где вы когда-либо меняетесь interger в цикле? Что заставляет вас думать, что это условие когда-либо будет ложным и остановит цикл? Кроме того, interger написано с ошибкой.

4. Если цель состоит в том, чтобы проверить несколько целых чисел, присвоение interger должно также происходить внутри цикла. Типичная идиома-использовать while True: integer = int(input(...)); if integer == 0: break; ... , что гарантирует, что вы прочитаете ввод по крайней мере один раз, без необходимости дублировать код назначения.

Ответ №1:

Ваше условие «пока» является причиной бесконечной печати, так как значение interger никогда не меняется. Если вы хотите, чтобы он просто выполнил печать один раз, измените

 while interger!=0:  

Для

 if interger != 0:  

Мое предложение по вашему сценарию:

 run = None  while run != 'q':  integer = input("Enter number: ")  print(f'There are {len(integer)} digits')  run = input("Enter q to quit, enter any other key to do another")  

Ответ №2:

Если вам это не поможет, я предложу другой способ.

 interger= int(input('please type an interger and the programme will tell you how many digits it has!: '))  dig = 0 while(interger != 0) :  interger /= 10  dig  = 1  print("There are "   str(dig)   " digits.")  

Как насчет этого?

Ответ №3:

Код Python для определения количества цифр во входном номере и вывода ответа только один раз

 interger = int(input('please type an interger and the programme will tell you how many digits it has!: ')) #to print once print(f"given input {interger} has {len(str(interger))} digits")  

выход

 please type an interger and the programme will tell you how many digits it has!: 65 given input 65 has 2 digits  

Ответ №4:

Оставляя в стороне тот факт, что алгоритм далек от идеала, вам просто не нужен цикл.

 interger= int(input('please type an interger and the programme will tell you how many digits it has!: '))  if 0lt;=intergerlt;10: # zero is also 1 digit  print ('1 digit') elif 9lt;intergerlt;100:  print('there are 2 digits') #etc.