Типы данных | Программирование на Питоне

Типы данных

Все курсы > Программирование на Питоне > Занятие 2

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

Какие типы данных есть в Питоне

Некоторые типы данных позволяют записать только одну единицу информации в переменную. К ним, в частности, относятся:

  • целочисленное значение (integer);
  • десятичная дробь, или если быть более точным, число с плавающей запятой (float);
  • комплéксное число (complex);
  • строка (string); и
  • логическое значение (boolean).

Именно этими типами данных мы и займемся на сегодняшнем занятии. Также существуют типы данных, в которых могут содержаться несколько элементов (так называемые коллекции, collections). К ним относятся:

  • списки (list);
  • словари (dictionary);
  • множества (set); и
  • кортежи (tuple).

Мы изучим их во втором разделе этого курса.

Вначале откроем ноутбук к этому занятию

Работа с числами

Числовые данные могут быть представлены целым числом (integer), числом с плавающей точкой (float) и комплексным числом (complex).

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

Операции с числами

С числами возможны арифметические операции, операции сравнения и логические операции. Повторим уже известные нам арифметические операции.

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

Также напомню про операторы сравнения.

Здесь хотелось бы обратить внимание на два момента. Во-первых, результатом сравнения становится логическое значение True или False (об этом чуть позже). Во-вторых, еще раз напомню, что == и = — это разные символы. В первом случае мы проверяем равенство двух значений, во втором — присваиваем значение переменной.

Кроме этого, существуют и чисто логические операции И, ИЛИ и НЕ.

Перевод чисел в другую систему счисления

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

Перевод числа в восьмеричную и шестнадцатеричную систему счисления осуществляется аналогичным образом с помощью функций oct() и hex() соответственно.

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

Подробнее про системы счисления мы поговорим на курсе дискретной математики.

Строковые данные

Как мы уже знаем, строку нужно заключить в одинарные или двойные кавычки.

Такой тип данных можно разбить на несколько строк (multiline string). Для этого нужно использовать тройные одинарные или двойные кавычки.

Длина строки

Функция len() позволяет посчитать количество символов в строке.

Объединение строк

Две и более строки можно объединить друг с другом. Пробелы, если они нужны, добавляются отдельно.

Индекс символа в строке

Как мы помним, при создании строки, Питон автоматически создает два индекса, нумерует символы от начала и до конца (начиная с нуля, положительный индекс) и с конца и до начала (начиная с −1, отрицательный индекс).

положительный и отрицательный индексы строки в Питоне

Рассмотрим примеры:

Срезы строк

Также можно делать срезы, то есть выбирать сразу несколько символов.

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

срез строки в Питоне

Циклы в строках

Символы в строке можно вывести один за другим с помощью цикла for.

Методы .strip() и .split()

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

Метод .split() делит строку на части. По умолчанию, по пробелам, но можно указать и другой разделитель.

В результате получился питоновский список. Если посчитать длину списка, то мы получим количество слов в тексте.

Замена символа в строке

Бывает полезно заменить один символ другим. Например, если дробная часть отделена запятой, а не точкой, и напрямую преобразовать такую строку во float не получится.

Логические значения

В программировании иногда очень полезно задать выражению истинное или ложное значение и в зависимости от этого выполнить те или иные действия. Мы уже видели ранее, что при сравнении Питон выдает значения True или False. На самом деле эти значения сами по себе являются отдельным типом данных и могут быть записаны в переменную.

Логический тип данных называется bool или boolean в честь Джорджа Буля, который создал так называемую булеву алгебру (Boolean algebra) или алгебру логики. Она, в частности, лежит в основе архитектуры любого компьютера.

Теперь рассмотрим несложную программу.

Подведем итог

На этом занятии мы изучили три типа данных: числовые данные, строки и логический тип данных. С числовыми данными можно выполнять арифметические операции, операции сравнения и логические операции.

Работая со строками, мы можем определить количество символов в строке, объединить несколько строк, посмотреть символ по его индексу, сделать срез строки, просмотреть каждый из символов в цикле for, избавиться от ненужных символов по краям строки или разделить строку на отдельные части. Кроме того, мы можем заменить один элемент строки на другой.

Помимо этого, мы можем записать в переменную логическое значение True или False, и использовать его при написании программ.

Вопросы для закрепления

Какими типами данных представлены числовые значения?

Посмотреть правильный ответ

Какой символ используется по умолчанию в методах .strip() и .split()?

Посмотреть правильный ответ

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

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


Ответы на вопросы

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

Ответ. Действительно, использовать только функцию str() в данном случае нельзя.

Вариант 1. Объявить новый список и в цикле for помещать туда строковые значения через функцию str() и метод .append().

Вариант 2. Использовать метод, называемый list comprehension.

Вариант 3. Применить функции map() и list().

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


Вопрос. Чем десятичная дробь отличается от числа с плавающей запятой?

Ответ. Начнем с того, что компьютер хранит числа в двоичном формате (то есть в виде 0 и 1), и десятичная дробь (то есть дробь с основанием 10) является лишь удобным человеку способом представления двоичных чисел, которыми оперирует компьютер.

Одновременно двоичную дробь можно записать в памяти компьютера различными способами и выбранный Питоном (а также другими языками программирования) способ называется floating point number (число с плавающей запятой) или сокращенно float. Если коротко, такой способ использует преимущества экспоненциальной записи числа и адаптирует ее к использованию в компьютере.

Небольшой терминологический нюанс. По-русски мы говорим про число с плавающей запятой. При этом по-английски речь идет о floating point number (т.е. числе с плавающей точкой). Различие связано лишь с тем, что в России в качестве разделителя целой и дробной частей числа принята запятая, а в англоязычных странах — точка. Фактически, разумеется, это один и тот же формат.

Более подробно про системы счисления и способы представления чисел на компьютере мы будем говорить на курсе дискретной математики.