Введение
В этом лабораторном занятии (LabEx) мы рассмотрим, как проверить, является ли число нулем в Python. В рамках этого занятия будут рассмотрены основные концепции нуля, прямое сравнение с нулем и обработка точности чисел с плавающей запятой.
Мы начнем с создания Python-скрипта для демонстрации базовых свойств нуля, включая сложение, вычитание и умножение. Также мы изучим поведение при делении на ноль, которое вызывает ошибку в Python.
Исследуйте концепцию нуля
На этом этапе мы рассмотрим концепцию нуля в Python. Ноль - это фундаментальное числовое значение, которое представляет отсутствие количества. Понимание того, как ноль ведет себя в различных контекстах, является важным аспектом при написании точного и надежного кода на Python.
Сначала создадим простой Python-скрипт, чтобы продемонстрировать базовые свойства нуля.
Откройте редактор VS Code в среде LabEx.
Создайте новый файл с именем
zero_example.pyв директории~/project.~/project/zero_example.pyДобавьте следующий код в файл
zero_example.py:## Assigning zero to a variable x = 0 ## Printing the value of the variable print("The value of x is:", x) ## Adding a number to zero y = x + 5 print("x + 5 =", y) ## Subtracting a number from zero z = x - 3 print("x - 3 =", z) ## Multiplying a number by zero result = 10 * x print("10 * x =", result)Этот скрипт демонстрирует базовые арифметические операции с нулем.
Сохраните файл.
Запустите скрипт с помощью команды
pythonв терминале:python zero_example.pyВы должны увидеть следующий вывод:
The value of x is: 0 x + 5 = 5 x - 3 = -3 10 * x = 0Как вы можете видеть, при сложении или вычитании числа из нуля получается это число (или его отрицательное значение), а при умножении любого числа на ноль результатом является ноль.
Теперь рассмотрим деление на ноль. Деление на ноль не определено в математике и вызовет ошибку в Python.
Измените файл
zero_example.py, добавив в него деление на ноль:## Assigning zero to a variable x = 0 ## Printing the value of the variable print("The value of x is:", x) ## Adding a number to zero y = x + 5 print("x + 5 =", y) ## Subtracting a number from zero z = x - 3 print("x - 3 =", z) ## Multiplying a number by zero result = 10 * x print("10 * x =", result) ## Division by zero (will cause an error) try: division_result = 10 / x print("10 / x =", division_result) except ZeroDivisionError as e: print("Error:", e)Мы используем блок
try-exceptдля обработки потенциальной ошибкиZeroDivisionError.Сохраните файл.
Запустите скрипт снова:
python zero_example.pyВы должны увидеть следующий вывод:
The value of x is: 0 x + 5 = 5 x - 3 = -3 10 * x = 0 Error: division by zeroТеперь скрипт перехватывает ошибку
ZeroDivisionErrorи выводит информативное сообщение об ошибке вместо аварийного завершения.
Понимание того, как обрабатывать ноль в своем коде, является важным для предотвращения непредвиденных ошибок и обеспечения корректной работы программ.
Прямое сравнение с нулем
На этом этапе мы научимся сравнивать числа напрямую с нулем в Python. Прямое сравнение - это простой способ проверить, равно ли число нулю, больше ли оно нуля или меньше него. Это распространенная операция во многих программировании задач, таких как валидация входных данных, управление потоком программы и реализация математических функций.
Создадим Python-скрипт, чтобы продемонстрировать прямое сравнение с нулем.
Откройте редактор VS Code в среде LabEx.
Создайте новый файл с именем
compare_zero.pyв директории~/project.~/project/compare_zero.pyДобавьте следующий код в файл
compare_zero.py:## Assigning a number to a variable number = 5 ## Comparing the number with zero if number > 0: print(number, "is greater than zero") elif number < 0: print(number, "is less than zero") else: print(number, "is equal to zero") ## Changing the value of the number to zero number = 0 ## Comparing the number with zero again if number > 0: print(number, "is greater than zero") elif number < 0: print(number, "is less than zero") else: print(number, "is equal to zero") ## Changing the value of the number to a negative number number = -3 ## Comparing the number with zero one more time if number > 0: print(number, "is greater than zero") elif number < 0: print(number, "is less than zero") else: print(number, "is equal to zero")Этот скрипт сравнивает разные числа с нулем с использованием операторов
if,elifиelse.Сохраните файл.
Запустите скрипт с помощью команды
pythonв терминале:python compare_zero.pyВы должны увидеть следующий вывод:
5 is greater than zero 0 is equal to zero -3 is less than zeroСкрипт правильно определяет, больше ли число нуля, меньше ли оно нуля или равно ему.
Прямое сравнение с нулем является простым и эффективным для целочисленных значений. Однако при работе с числами с плавающей запятой необходимо быть осторожными из-за возможных проблем с точностью, которые мы рассмотрим на следующем этапе.
Обработка точности вещественных чисел
На этом этапе мы обсудим, как обрабатывать точность чисел с плавающей запятой при сравнении их с нулем. Из-за способа представления чисел с плавающей запятой в компьютерах они часто подвержены небольшим ошибкам округления. Это может привести к непредвиденным результатам при прямом сравнении их с нулем.
Например, вычисление, которое теоретически должно дать ноль, на практике может дать очень маленькое ненулевое число, например 1e-16 (0.0000000000000001). Прямое сравнение этого числа с нулем с использованием == вернет False, что может быть нежелательным результатом.
Для обработки этой проблемы обычно используется значение допуска (также известное как эпсилон) для проверки, находится ли число с плавающей запятой "достаточно близко" к нулю.
Создадим Python-скрипт, чтобы продемонстрировать это.
Откройте редактор VS Code в среде LabEx.
Создайте новый файл с именем
float_precision.pyв директории~/project.~/project/float_precision.pyДобавьте следующий код в файл
float_precision.py:## Import the math module import math ## Define a tolerance value (epsilon) tolerance = 1e-9 ## A small value like 0.000000001 ## A floating-point number that is very close to zero due to calculation number = 1e-10 ## Direct comparison with zero (may fail) if number == 0: print("Direct comparison: number is zero") else: print("Direct comparison: number is not zero") ## Using tolerance to compare with zero if math.isclose(number, 0, abs_tol=tolerance): print("Comparison with tolerance: number is close to zero") else: print("Comparison with tolerance: number is not close to zero") ## Another example with a slightly larger number number = 1e-7 ## Direct comparison with zero (will fail) if number == 0: print("Direct comparison: number is zero") else: print("Direct comparison: number is not zero") ## Using tolerance to compare with zero if math.isclose(number, 0, abs_tol=tolerance): print("Comparison with tolerance: number is close to zero") else: print("Comparison with tolerance: number is not close to zero")Этот скрипт демонстрирует, как использовать функцию
math.isclose()с значением допуска для сравнения чисел с плавающей запятой с нулем.Сохраните файл.
Запустите скрипт с помощью команды
pythonв терминале:python float_precision.pyВы должны увидеть следующий вывод:
Direct comparison: number is not zero Comparison with tolerance: number is close to zero Direct comparison: number is not zero Comparison with tolerance: number is not close to zeroКак вы можете видеть, прямое сравнение не дает правильного результата, так как число не является точно равным нулю. Однако при использовании значения допуска с функцией
math.isclose()сравнение правильно определяет, что число близко к нулю.
Функция math.isclose() проверяет, находятся ли два числа с плавающей запятой близко друг к другу в пределах заданного допуска. Аргумент abs_tol задает абсолютный допуск. Если абсолютная разность между двумя числами меньше или равна допуску, функция возвращает True.
Используя значение допуска, вы можете избежать проблем, связанных с точностью чисел с плавающей запятой, и обеспечить точность и надежность сравнений с нулем.
Резюме
В этом практическом занятии мы начали с изучения фундаментального понятия нуля в Python, поняли его поведение в базовых арифметических операциях. Мы создали скрипт zero_example.py, чтобы продемонстрировать, что при сложении или вычитании числа из нуля получается это число (или его противоположное), а при умножении любого числа на ноль получается ноль.
Скрипт был запущен, чтобы наблюдать эти свойства, что подготовило основу для дальнейшего изучения нуля в Python, включая последствия деления на ноль.



