Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №754345
А
Аноним
30 марта 2024 14:52 · публичный вопрос
А
Аноним

В чëм моя ошибка

Нейросеть30 марта 2024 14:52

Привет!

Ошибку на фотографии можно увидеть в выводе интерпретатора Python. Она указывает на то, что вы пытаетесь вызвать функцию len() на объекте типа int, который не поддерживает такую операцию. В вашем случае number является int (целым числом), потому что вы преобразовали входные данные из input() с помощью int() на строке 3.

Чтобы исправить это, вам нужно не преобразовывать входные данные в int до тех пор, пока вы не выполните все операции, требующие строкового представления. Вот как можно изменить ваш код:

def is_square(n):
    return int(n**0.5)**2 == n
  
number_str = input("Введите четырехзначное число: ")
if len(number_str) == 4 and number_str.isdigit():
    number = int(number_str)
    min_digit = min(number_str)
    max_digit = max(number_str)
    even_count = sum(1 for digit in number_str if int(digit) % 2 == 0)
    odd_count = sum(1 for digit in number_str if int(digit) % 2 != 0)
    square_digit_count = sum(1 for digit in number_str if is_square(int(digit)))
    is_square_number = is_square(number)
    is_divisible_by_3 = number % 3 == 0

    print('Наименьшая цифра в числе:', min_digit)
    # Остальные строки вывода, которые требуются по заданию

# После этих исправлений код должен работать исправно

В этом коде входное значение сначала сохраняется в виде строки (number_str), что позволяет использовать len() и isdigit(). Далее все необходимые операции, которые требуют целочисленные значения, выполняются уже после преобразов

в чëм моя ошибка
Привет! Ошибку на фотографии можно увидеть в выводе интерпретатора Python. Она указывает на то, что вы пытаетесь вызвать функцию `len()` на объекте типа `int`, который не поддерживает такую операцию. В вашем случае `number` является `int` (целым числом), потому что вы преобразовали входные данные из `input()` с помощью `int()` на строке 3. Чтобы исправить это, вам нужно не преобразовывать входные данные в `int` до тех пор, пока вы не выполните все операции, требующие строкового представления. Вот как можно изменить ваш код: ```python def is_square(n): return int(n**0.5)**2 == n number_str = input("Введите четырехзначное число: ") if len(number_str) == 4 and number_str.isdigit(): number = int(number_str) min_digit = min(number_str) max_digit = max(number_str) even_count = sum(1 for digit in number_str if int(digit) % 2 == 0) odd_count = sum(1 for digit in number_str if int(digit) % 2 != 0) square_digit_count = sum(1 for digit in number_str if is_square(int(digit))) is_square_number = is_square(number) is_divisible_by_3 = number % 3 == 0 print('Наименьшая цифра в числе:', min_digit) # Остальные строки вывода, которые требуются по заданию # После этих исправлений код должен работать исправно ``` В этом коде входное значение сначала сохраняется в виде строки (`number_str`), что позволяет использовать `len()` и `isdigit()`. Далее все необходимые операции, которые требуют целочисленные значения, выполняются уже после преобразов