[Python] Решено TypeError: неподдерживаемые типы операндов для... Коллекция решений для отчетов об ошибках
[Python] Решено TypeError: неподдерживаемые типы операндов для... Коллекция решений для отчетов об ошибках
Содержание этой статьи
  • Предисловие
  • 1. Возможные причины ошибок
  • 2. Примеры кодов ошибок
  • 3. Решение
    • Вариант 1. Проверьте, имеет ли значение значение переменной None.
    • Вариант 2. Используйте обработку исключений
    • Вариант 3. Укажите значения по умолчанию.
    • Решение 4. Проверьте тип операнда
  • Подвести итог

Предисловие

В программировании на Python ошибка TypeError обычно указывает на то, что при выполнении операции использовался несовместимый тип данных. В этой статье будет использоваться конкретный пример ошибки — TypeError: неподдерживаемые типы операндов для *: 'int' и 'NoneType' – для анализа предыстории проблемы, возможных причин ошибки, предоставления примеров кода ошибки и примеров исправления кода. и Сделайте несколько заметок.

Ошибки TypeError возникают при попытке использовать несовместимый тип данных с неподдерживаемым оператором. Например, вы столкнетесь с этой ошибкой при попытке умножить целое число с типом None.

1. Возможные причины ошибок

  • переменная не инициализируется: перед использованием переменной,Возможно, вы забыли его инициализировать.,Делает это значение None.
  • функциявозвращаемое значение:называетсяфункциявозможно, при определенных условиях Возврат Нет,И звонивший не выполнил должных проверок.
  • Неправильное преобразование типа: во время процесса преобразования типа могла произойти ошибка, в результате чего ожидаемый целочисленный тип стал None.
  • Логические ошибки: в условных суждениях или циклах могут быть логические ошибки, которые приводят к использованию None там, где его не следует использовать.

2. Примеры кодов ошибок

Предположим, у нас есть функция, которая возвращает целое число или None в зависимости от условия.

Язык кода:javascript
копировать
def get_value(condition):
    # Возвращает целое число или None в зависимости от условия
    if condition:
        return 10
    else:
        return None

# неправильное использование
value = get_value(False)  # Возврат Нет
result = 5 * value  # Здесь будет выброшено TypeError, поскольку значение равно None.

или неподдерживаемые операторы и типы, например попытка выполнить операцию с неподдерживаемым типом операнда. Например, вычитание между строками и целыми числами.

Язык кода:javascript
копировать
result = "hello" - 1
# исправление
result = "hello" + str(1)

Другой пример: умножение массивов и скаляров: попробуйте выполнять операции умножения непосредственно над списками и скалярами.

Язык кода:javascript
копировать
result = [1, 2, 3] * 1.5
# исправление
result = [1, 2, 3] * 2

Наконец, есть распространенная словарная ошибка: попытка выполнить со словарем арифметические операции, такие как сложение, вычитание, умножение и деление.

Язык кода:javascript
копировать
data = {"a": 1, "b": 2}
result = data + 2
# исправление
result = {key: value + 2 for key, value in data.items()}

3. Решение

Вариант 1. Проверьте, имеет ли значение значение переменной None.

Язык кода:javascript
копировать
def get_value(condition):
    if condition:
        return 10
    else:
        return None

value = get_value(False)
if value is not None:
    result = 5 * value  # Безопасная операция умножения
else:
    print("Value is None, cannot perform multiplication.")

Вариант 2. Используйте обработку исключений

Язык кода:javascript
копировать
def get_value(condition):
    if condition:
        return 10
    else:
        return None

try:
    value = get_value(False)
    result = 5 * value  # Попробуйте операцию умножения
except TypeError as e:
    print(f"An error occurred: {e}")  # Захват и печать сообщений об ошибках

Вариант 3. Укажите значения по умолчанию.

Язык кода:javascript
копировать
def get_value(condition):
    if condition:
        return 10
    else:
        return None

value = get_value(False) or 1  # Если значение равно «Нет», используйте 1 в качестве значения по умолчанию.
result = 5 * value  # Даже если значение равно None, здесь не будет выброшено TypeError.

Решение 4. Проверьте тип операнда

Перед выполнением операции добавьте проверку типа, чтобы убедиться, что типы операндов соответствуют ожиданиям.

Язык кода:javascript
копировать
def add_numbers(a, b):
    if not isinstance(a, (int, float)):
        raise TypeError("Expected int or float, got {}".format(type(a)))
    if not isinstance(b, (int, float)):
        raise TypeError("Expected int or float, got {}".format(type(b)))
    return a + b
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода