Как проверить, содержит ли кортеж только числа в Python

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

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

Введение

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

Затем в рамках лабораторного занятия (LabEx) вы научитесь использовать функцию all() в сочетании с функцией isinstance() для проверки того, что все элементы в кортеже действительно являются числами. Наконец, вы узнаете, как корректно обрабатывать пустые кортежи при выполнении этой проверки.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/numeric_types -.-> lab-559585{{"Как проверить, содержит ли кортеж только числа в Python"}} python/conditional_statements -.-> lab-559585{{"Как проверить, содержит ли кортеж только числа в Python"}} python/tuples -.-> lab-559585{{"Как проверить, содержит ли кортеж только числа в Python"}} python/build_in_functions -.-> lab-559585{{"Как проверить, содержит ли кортеж только числа в Python"}} python/data_collections -.-> lab-559585{{"Как проверить, содержит ли кортеж только числа в Python"}} end

Определение числовых кортежей

На этом этапе вы научитесь определять кортежи (tuples), содержащие только числовые данные (целые и вещественные числа) на Python. Кортежи - это фундаментальная структура данных в Python, похожая на списки (lists), но с одной важной разницей: они неизменяемы (immutable), то есть их элементы не могут быть изменены после создания. Эта неизменяемость делает их полезными для представления фиксированных наборов данных.

Начнем с создания простого кортежа, содержащего целые числа:

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

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

    ## ~/project/numeric_tuple.py
    my_tuple = (1, 2, 3, 4, 5)
    print(my_tuple)
  3. Сохраните файл.

  4. Откройте терминал.

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

    python ~/project/numeric_tuple.py

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

    (1, 2, 3, 4, 5)

Теперь создадим кортеж, содержащий вещественные числа:

  1. Измените файл numeric_tuple.py, добавив в него вещественные значения:

    ## ~/project/numeric_tuple.py
    my_tuple = (1.0, 2.5, 3.7, 4.2, 5.9)
    print(my_tuple)
  2. Сохраните файл.

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

    python ~/project/numeric_tuple.py

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

    (1.0, 2.5, 3.7, 4.2, 5.9)

Кортежи также могут содержать смесь целых и вещественных чисел:

  1. Измените файл numeric_tuple.py, добавив в него и целые, и вещественные значения:

    ## ~/project/numeric_tuple.py
    my_tuple = (1, 2.5, 3, 4.2, 5)
    print(my_tuple)
  2. Сохраните файл.

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

    python ~/project/numeric_tuple.py

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

    (1, 2.5, 3, 4.2, 5)

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

Использование функции all() с функцией isinstance()

На этом этапе вы научитесь использовать функцию all() в сочетании с функцией isinstance() для проверки того, являются ли все элементы в кортеже (tuple) числами. Это полезный метод для валидации данных и обеспечения того, что ваш код работает с правильными типами значений.

Сначала разберемся, что делают функции all() и isinstance():

  • all(iterable): Эта функция возвращает True, если все элементы итерируемого объекта (например, кортежа) являются истинными (или если итерируемый объект пуст). Она возвращает False, если хотя бы один элемент является ложным.
  • isinstance(object, classinfo): Эта функция возвращает True, если object является экземпляром classinfo (например, int, float). В противном случае она возвращает False.

Теперь создадим скрипт на Python для проверки, являются ли все элементы в кортеже целыми числами или вещественными:

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

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

    ## ~/project/check_numeric_tuple.py
    def is_numeric_tuple(my_tuple):
        return all(isinstance(item, (int, float)) for item in my_tuple)
    
    tuple1 = (1, 2.5, 3, 4.2, 5)
    tuple2 = (1, 2, 'a', 4, 5)
    tuple3 = (1.0, 2.0, 3.0)
    
    print(f"Tuple 1 is numeric: {is_numeric_tuple(tuple1)}")
    print(f"Tuple 2 is numeric: {is_numeric_tuple(tuple2)}")
    print(f"Tuple 3 is numeric: {is_numeric_tuple(tuple3)}")

    В этом скрипте:

    • Мы определяем функцию is_numeric_tuple, которая принимает кортеж в качестве входного параметра.
    • Внутри функции мы используем функцию all() с генераторным выражением (isinstance(item, (int, float)) for item in my_tuple) для проверки, является ли каждый item в кортеже экземпляром либо int, либо float.
    • Затем мы тестируем функцию на трех разных кортежах.
  3. Сохраните файл.

  4. Откройте терминал.

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

    python ~/project/check_numeric_tuple.py

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

    Tuple 1 is numeric: True
    Tuple 2 is numeric: False
    Tuple 3 is numeric: True

    Этот вывод показывает, что tuple1 и tuple3 содержат только числовые значения, в то время как tuple2 содержит строку, поэтому он не считается числовым кортежем.

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

Обработка пустых кортежей

На этом этапе вы научитесь обрабатывать пустые кортежи (tuples) при проверке на числовые значения. Пустой кортеж - это кортеж без элементов, представленный как (). Важно учитывать пустые кортежи в своем коде, чтобы избежать потенциальных ошибок и обеспечить ожидаемое поведение программы.

Давайте модифицируем скрипт из предыдущего шага для обработки пустых кортежей:

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

  2. Откройте файл check_numeric_tuple.py в директории ~/project.

    ## ~/project/check_numeric_tuple.py
    def is_numeric_tuple(my_tuple):
        if not my_tuple:
            return True  ## An empty tuple is considered numeric
        return all(isinstance(item, (int, float)) for item in my_tuple)
    
    tuple1 = (1, 2.5, 3, 4.2, 5)
    tuple2 = (1, 2, 'a', 4, 5)
    tuple3 = (1.0, 2.0, 3.0)
    tuple4 = () ## Empty tuple
    
    print(f"Tuple 1 is numeric: {is_numeric_tuple(tuple1)}")
    print(f"Tuple 2 is numeric: {is_numeric_tuple(tuple2)}")
    print(f"Tuple 3 is numeric: {is_numeric_tuple(tuple3)}")
    print(f"Tuple 4 is numeric: {is_numeric_tuple(tuple4)}")

    В этом модифицированном скрипте:

    • Мы добавили проверку в начале функции is_numeric_tuple: if not my_tuple: return True. Эта проверка определяет, является ли кортеж пустым. Если он пуст, функция возвращает True, считая пустой кортеж числовым.
    • Мы добавили пустой кортеж tuple4 = () для тестирования функции.
  3. Сохраните файл.

  4. Откройте терминал.

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

    python ~/project/check_numeric_tuple.py

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

    Tuple 1 is numeric: True
    Tuple 2 is numeric: False
    Tuple 3 is numeric: True
    Tuple 4 is numeric: True

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

Обработка пустых кортежей - это хорошая практика, которая делает ваш код более надежным и предотвращает неожиданное поведение. В этом случае мы решили считать пустой кортеж числовым, но вы можете изменить логику в соответствии с вашими конкретными требованиями.

Резюме

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

Затем в практическом занятии показано, как проверить, содержит ли кортеж только числа, используя функцию all() в сочетании с функцией isinstance(). (Содержание в оригинальном описании практического занятия обрезано.)