Как проверить, является ли число нулем в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) мы рассмотрим, как проверить, является ли число нулем в Python. В рамках этого занятия будут рассмотрены основные концепции нуля, прямое сравнение с нулем и обработка точности чисел с плавающей запятой.

Мы начнем с создания Python-скрипта для демонстрации базовых свойств нуля, включая сложение, вычитание и умножение. Также мы изучим поведение при делении на ноль, которое вызывает ошибку в Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/variables_data_types -.-> lab-559556{{"Как проверить, является ли число нулем в Python"}} python/numeric_types -.-> lab-559556{{"Как проверить, является ли число нулем в Python"}} python/conditional_statements -.-> lab-559556{{"Как проверить, является ли число нулем в Python"}} python/standard_libraries -.-> lab-559556{{"Как проверить, является ли число нулем в Python"}} python/catching_exceptions -.-> lab-559556{{"Как проверить, является ли число нулем в Python"}} end

Исследование концепции нуля

На этом этапе мы рассмотрим концепцию нуля в Python. Ноль - это фундаментальное числовое значение, которое представляет отсутствие количества. Понимание того, как ноль ведет себя в различных контекстах, является важным аспектом при написании точного и надежного кода на Python.

Сначала создадим простой Python-скрипт, чтобы продемонстрировать базовые свойства нуля.

  1. Откройте редактор VS Code в среде LabEx.

  2. Создайте новый файл с именем zero_example.py в директории ~/project.

    ~/project/zero_example.py
  3. Добавьте следующий код в файл 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)

    Этот скрипт демонстрирует базовые арифметические операции с нулем.

  4. Сохраните файл.

  5. Запустите скрипт с помощью команды python в терминале:

    python zero_example.py

    Вы должны увидеть следующий вывод:

    The value of x is: 0
    x + 5 = 5
    x - 3 = -3
    10 * x = 0

    Как вы можете видеть, при сложении или вычитании числа из нуля получается это число (или его отрицательное значение), а при умножении любого числа на ноль результатом является ноль.

Теперь рассмотрим деление на ноль. Деление на ноль не определено в математике и вызовет ошибку в Python.

  1. Измените файл 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.

  2. Сохраните файл.

  3. Запустите скрипт снова:

    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-скрипт, чтобы продемонстрировать прямое сравнение с нулем.

  1. Откройте редактор VS Code в среде LabEx.

  2. Создайте новый файл с именем compare_zero.py в директории ~/project.

    ~/project/compare_zero.py
  3. Добавьте следующий код в файл 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.

  4. Сохраните файл.

  5. Запустите скрипт с помощью команды 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-скрипт, чтобы продемонстрировать это.

  1. Откройте редактор VS Code в среде LabEx.

  2. Создайте новый файл с именем float_precision.py в директории ~/project.

    ~/project/float_precision.py
  3. Добавьте следующий код в файл 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() с значением допуска для сравнения чисел с плавающей запятой с нулем.

  4. Сохраните файл.

  5. Запустите скрипт с помощью команды 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, включая последствия деления на ноль.