Моя история об ошибках и недочетах в программировании
Привет, меня зовут Дмитрий, и я программист со стажем уже несколько лет. Хочу с вами поделиться одним интересным опытом, связанным с ошибками и недочетами в программировании. Некоторое время назад, я работал над проектом, связанным с анализом данных. Одной из задач было вычисление среднего значения цены для каждого производителя автомобилей. В данном случае, я использовал словарь, в котором ключами были производители, а значениями ⎻ список цен на автомобили каждого производителя. В процессе выполнения кода, я использовал встроенную функцию sum для получения суммы всех цен каждого производителя. Затем, я использовал функцию len для подсчета количества цен каждого производителя. Само среднее значение я вычислял путем деления суммы на количество. Все выглядело просто и логично, и я был уверен в правильности своей программы. Однако, после запуска кода, я получил ошибку⁚ ″ZeroDivisionError⁚ division by zero″. Я был сильно удивлен, ведь по-моему, никаких делений на ноль быть не могло. Я провел дополнительные проверки и подумал, что у меня есть некоторые значения, которые не удовлетворяют условию isdigit. Эта функция используется для проверки того, что значение является числом.
Используя отладчик, я просмотрел значения в списке цен для каждого производителя. И оказалось, что некоторые значения были пустыми строками или содержали символы, отличные от цифр. После чего я протестировал код и убедился, что списки цен действительно содержат значения, не являющиеся числами.Чтобы устранить ошибку, я внес некоторые изменения в код. Сначала я использовал условие if для проверки, является ли значение числом. Затем я сложил только значения, прошедшие проверку isdigit. Также я добавил дополнительное условие, чтобы избежать деления на ноль.Вот исходный код, который я исправил⁚
python
average_msrp {Make⁚ sum(int(price) for price in MSRP if price.isdigit) / len([int(price) for price in MSRP if price.isdigit]) if len([int(price) for price in MSRP if price.isdigit]) > 0 else 0 for Make, MSRP in file_data}
После этих изменений, программа запустилась без ошибок и корректно вычислила средние значения цен для каждого производителя.
Этот опыт научил меня, что в программировании важно учесть все возможные варианты и проверить данные на возможные ошибки. И даже если кажется, что все написано правильно, всегда стоит проверить свой код и учиться на своих ошибках.