Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3600786
А
Аноним
15 апреля 2026 10:01 · публичный вопрос
А
Аноним

k1=0 #Присвоить переменной k1 (количество цифр 3 в записи числа) значение 0. k2=0 #Присвоить переменной k2 (количество других цифр в записи числа) значение 0. a=int(input())…

Запрос пользователя

K1=0 #Присвоить переменной k1 (количество цифр 3 в записи числа) значение 0. k2=0 #Присвоить переменной k2 (количество других цифр в записи числа) значение 0. a=int(input()) #Ввести с клавиатуры число в переменную a. while a!=0: #Цикл будет выполняться до тех пор, пока переменная а не станет равна 0. b=a%10 #Проверить цифру в младшем разряде в записи числа. if b==3: #Проверить выполнение условия: если значение цифры в младшем разряде равно 3, #то увеличить значение переменной k1 на 1. else: #иначе k2=k2+1 #увеличить значение переменной k2 на 1. a=a//10 #Убрать из записи числа младший разряд и вернуться к началу работы цикла. print(k1,k2) #Вывести на экран количество цифр 3 в записи введённого числа и количество других цифр в его записи.

Ответ нейросети
15 апреля 2026 10:01

Ниже детальное решение и разбор. Задача: посчитать в введённом числе количество цифр 3 (k1) и количество всех остальных цифр (k2).

Что было не так в исходном коде

  • В ветке if b == 3 нужно увеличивать k1, но тело этого условия пустое.
  • В ветке else корректно увеличивается только k2, но если цифра равна 3, k2 не увеличивается.
  • Также полезно учесть отрицательные числа и возможность входа числа 0.

Исправленный базовый вариант (без учета нулевого числа как особого случая, но с обработкой отрицательных чисел)

  • Логика:
    • Приводим число к положительному: a = abs(a).
    • Пробегаем по всем цифрам числа, извлекая младшую цифру через a % 10.
    • Если цифра равна 3, увеличиваем k1, иначе увеличиваем k2.
    • После обработки цифры удаляем её: a //= 10.
    • В конце выводим k1 и k2.

Код: k1 = 0 k2 = 0 a = int(input()) a = abs(a) # обрабатываем отрицательные числа while a != 0: b = a % 10 if b == 3: k1 += 1 else: k2 += 1 a //= 10 print(k1, k2)

Пояснение по шагам

  • k1 и k2 инициализируются нулями — счетчики цифр 3 и других цифр.
  • a = abs(a) позволяет считать цифры даже если введено отрицательное число.
  • Цикл while выполняется для всех цифр числа: пока a не станет 0, берём последнюю цифру b = a % 10.
  • Если b == 3, увеличиваем только k1 (k1 += 1). Иначе увеличиваем k2 (k2 += 1).
  • Удаляем последнюю цифру: a = a // 10.
  • По завершении цикла выводим два счетчика: количество цифр 3 и количество остальных цифр.

Пример теста

  • Ввод: 3353
    • цифры: 3, 3, 5, 3
    • k1 = 3, k2 = 1
    • вывод: 3 1

Дополнительные улучшения (необязательно, но полезно)

  • Обработка числа 0 как особого кейса: если пользователь вводит 0, в базовой версии цикл не выполнится и будут выведены 0 0. Если нужно трактовать число 0 как одну цифру 0 (то есть k2 = 1, k1 = 0), можно добавить отдельную ветку до цикла:
    • если a == 0: print(0, 1) и завершить программу.
    • иначе идти по обычному циклу как выше.

Но базовая исправленная версия выше подходит для большинства школьных задач и явно исправляет логическую ошибку в исходном коде.