На языке программирования Python написана программа, которая должна находить количество цифр, равных 3, и количество цифр, отличных от 3, в числе, введённом пользователем.
Ответ нейросети
15 апреля 2026 10:02
Ниже будет подробное решение на Python с пояснениями. Задача: подсчитать количество цифр, равных 3, и количество цифр, отличных от 3, в числе, введённом пользователем.
Ключевые моменты:
- Игнорируем знак числа (если вводится отрицательное, считаем цифры после знака).
- Подсчитываем только цифры; если ввод может содержать пробелы или знаки, они не учитываются.
- Можно решить двумя способами: по строке (побитовый разбор символов) или по арифметике (разбор цифр через деление на 10).
- Способ 1: разбор по строке Пошагово:
- Считать ввод как строку и убрать ведущие/завершающие пробелы.
- Пропускать символы знака +/−.
- Для каждой цифры увеличить счёт цифр равных 3 или счёт цифр не равных 3.
Пример кода:
- Пояснение: мы считаем каждую цифру отдельно, поэтому, например, для числа -33003 получится c3 = 2, cNot3 = 3.
Код: s = input("Введите число: ").strip() count3 = 0 countNot3 = 0
for ch in s: if ch in '+-': continue if ch.isdigit(): if ch == '3': count3 += 1 else: countNot3 += 1
print("Цифр 3:", count3) print("Цифр, отличных от 3:", countNot3)
Пояснения к коду:
- ch.isdigit() гарантирует, что мы считаем только цифры.
- Знак игнорируется, чтобы не мешать подсчёту цифр.
- Ввод может быть любым числом, например 0, 303, -123, 0033 (если встречаются ведущие нули, они будут считаны как цифры).
- Способ 2: разбор числа арифметически (через деление на 10) Пошагово:
- Преобразовать ввод к целому числу и взять модуль, чтобы работать с абсолютным значением.
- Специально обработать случай, когда число равно 0 (одна цифра 0, которая не равна 3).
- Выполнять цикл: пока число > 0, взять последнюю цифру d = n % 10; если d == 3 — увеличить count3, иначе увеличить countNot3; затем уйти к следующей цифре: n //= 10.
Код: try: n = int(input("Введите число: ").strip()) except ValueError: print("Некорректный ввод") raise SystemExit(1)
n = abs(n) count3 = 0 countNot3 = 0
if n == 0: # число 0 имеет одну цифру, которая не равна 3 countNot3 = 1 else: while n > 0: d = n % 10 if d == 3: count3 += 1 else: countNot3 += 1 n //= 10
print("Цифр 3:", count3) print("Цифр, отличных от 3:", countNot3)
Пояснения к коду:
- abs(n) безопасно удаляет знак, чтобы считать цифры.
- Для числа 0 цикл не выполняется, поэтому отдельно обрабатываем этот случай.
- Время выполнения пропорционально количеству цифр в числе, память константна.
Сравнение вариантов:
- Способ 1 проще читать и писать, работает прямо с введённой строкой, не требует конвертации в число. Но если в строке встречаются посторонние символы, они игнорируются.
- Способ 2 может быть чуть быстрее и точно учитывает фактические цифры числа, но требует обработки ввода как целого числа и не сохраняет ведущие нули (ведущие нули в числовом вводе обычно не сохраняются).
Пример теста: Ввод: 303030
- Способ 1: Цифр 3: 3; Цифр, отличных от 3: 3
- Способ 2: Цифр 3: 3; Цифр, отличных от 3: 3
Сложность:
- Оба подхода имеют временную сложность O(k), где k — количество цифр числа.
- Пространственная сложность O(1) в обоих случаях (за исключением количества памяти, используемой для самого ввода).
Если хочешь, могу адаптировать код под конкретный стиль обучения или добавить валидацию ввода (например, чтобы точно принимать только одно число и запретить ввод нечисловых символов).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



