#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.