Данные и их типы

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

Данные могут иметь самые разные формы. Зачастую программы работают с числами и строками. На предыдущем занятии мы выполнили арифметические операции над числами: сложение изменяло одно число на величину другого, а умножение увеличивало его соответственно числу раз второго.

Числа тоже бывают разнообразными: целыми, дробными, могут достигать больших значений или иметь длительную дробную часть.

Изучая Python, мы столкнемся с тремя основными типами данных:

  • целые числа (тип int) – это как положительные, так и отрицательные числа, включая ноль (например, 4, 687, -45, 0).
  • числа с плавающей точкой (тип float) – дробные, или вещественные, числа (например, 1.45, -3.789654, 0.00453). Обратите внимание, что для отделения целой и дробной частей используется точка.
  • строки (тип str) — это последовательности символов, укладывающиеся в кавычки (например, "ball", "What is your name?", 'dkfjUUv', '6589'). Отметим, что для строк в Python можно использовать как одинарные, так и двойные кавычки, причем даже один символ в кавычках считается строкой. Специального символьного типа здесь нет.

Операции в программировании

Операция – это выполнение действий над операндами, на которых работает оператор, представляющий собой определенный инструмент. Представьте, что вы создаете стол: ваши операнды – доска и гвозди, оператор – молоток.

Оператор и операнды

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

>>> 10.25 + 98.36
108.61
>>> 'Hello' + 'World'
'HelloWorld'

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

>>> 1 + 'a'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Сообщение интерпретатора TypeError: unsupported operand type(s) for +: 'int' and 'str' указывает, что возникла ошибка типа - несовместимые типы операндов int и str.

Изменение типов данных

Проблему с вышеупомянутой операцией можно решить, преобразовав число 1 в строку "1". В Python существуют встраиваемые функции, которые позволяют это делать. Позже подробнее рассмотрим, что такое функции. Пока мы имеем дело с тремя типами данных (int, float и str), обсудим соответствующие функции: int(), float(), str().

>>> str(1) + 'a'
'1a'
>>> int('3') + 4
7
>>> float('3.2') + int('2')
5.2
>>> str(4) + str(1.2)
'41.2'

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

>>> int('hi')
Traceback (most recent call last):
File "<stdin>", line 1, in "<stdin>"
ValueError: invalid literal for int() with base 10: 'hi'

Ошибка ValueError указывает, что строка 'hi' не может быть представлена как число в десятичной системе счисления. Однако функция int() имеет более сложный функционал:

>>> int('101', 2)
5
>>> int('F', 16)
15

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

Также отметим разницу в понятиях. Данные могут выступать как значения и литералы. Эти термины близки, но не идентичны, и их различия станут понятными при более глубоком изучении программирования.

Переменные

Данные размещаются в памяти компьютера. Если вы вводите число, оно записывается в ячейку памяти. Однако как узнать, где оно хранится, и как затем его использовать? Здесь на помощь приходят переменные, служащие для идентификации данных.

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

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

Термин "переменная" подразумевает изменение. На практике вы увидите, что она может сначала содержать одни данные, а потом другие, т. е. ее значение может изменяться и быть изменчивым.

В Python, как и в большинстве языков, связывание переменных с данными происходит с помощью знака =. Этот процесс называется присваивание. Например, выражение sq = 4 устанавливает, что переменная sq теперь ссылается на число 4, находящееся в памяти.

Присваивание значения переменной

Имена переменных могут быть произвольными, но не следует забывать о некоторых правилах:

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

При использовании интерпретатора для вывода значения переменной достаточно набрать ее имя и нажать Enter.

>>> sq = 4
>>> sq
4

Приведем более сложный пример работы с переменными в интерактивном режиме:

>>> apples = 100
>>> eat_day = 5
>>> day = 7
>>> apples = apples - eat_day * day
>>> apples
65

Здесь переменные apples, eat_day и day связаны с соответствующими значениями. В сложном выражении apples = apples - eat_day * day сначала выполняется правая часть выражения, после - его результат присваивается обратно в переменную apples, теряя старое значение 100. Фактически используются значения переменных: 100, 5 и 7.

Практическая работа

  1. Переменной var_int присвойте 10, var_float - 8.4, а var_str - "No".
  2. Измените значение var_int, увеличив его в 3.5 раза и сохраните результат в переменной big_int.
  3. Уменьшите var_float на единицу и сохраните в той же переменной.
  4. Разделите var_int на var_float, затем big_int - на var_float. Связать эти результаты с переменными не требуется.
  5. Преобразуйте var_str в "NoNoYesYesYes" с помощью конкатенации (+) и повторения (*).
  6. Отобразите значения всех переменных.

Вопросы для самопроверки:

  1. Какие основные типы данных существуют в Python?
  2. Приведите примеры данных типа int, float и str.
  3. Какая операция выполняется оператором "+" при работе со строками?
  4. Какие встроенные функции в Python помогают с преобразованием типов данных?
  5. Как в Python происходит связывание переменных с данными?
  6. Какие правила нужно соблюдать при создании имен переменных в Python?

Программа курса:

  1. Описание курса
  2. Эволюция и основы языков программирования

    История программирования в кратком и понятном изложении. Что такое машинный язык, почему появились ассемблеры, языки высокого уровня и объектно-ориентированные. Зачем нужен транслятор, и почему он может быть либо компилятором, либо интерпретатором.

  3. Знакомство с основами Python

    Особенности языка Python, работа в интерактивном режиме и подготовка файлов с исходным кодом.

  4. Типы данных и переменные в Python

    Базовые типы данных в Python: целое, вещественное числа, строки. Изменение типа данных с помощью встроенных функций. Понятие об операциях и переменных. Присваивание значения переменной.

  5. Ввод и вывод данных с Python функциями

    Для вывода на экран в Python 3.x используется функция print(). Вывод может быть предварительно отформатирован. Для ввода данных с клавиатуры используется функция input(), которая возвращает в программу строку.

  6. Логические выражения и операторы в Python

    Логические выражения. Логические операторы языка Python: == (равно), != (не равно), (больше), = (больше или равно), and (логическое И), or (логическое ИЛИ), not (отрицание).

  7. Ветвление и условные операторы в Python

    Управление потоком программы с помощью операторов if-else. Создание логических ветвлений, обработка условий и выполнение разных блоков кода в Python.

  8. Изучите обработку ошибок и исключений в Python

    Общее представление об ошибках и исключениях в языке программирования Python. SyntaxError, NameError, TypeError, ValueError, ZeroDivisionError. Обработка исключений с помощью инструкции try-except.

  9. Множественное ветвление с if-elif-else в Python

    Оператор множественного ветвления языка Python позволяет организовать более двух веток выполнения программы без необходимости вложения условных операторов друг в друга. Конструкция включает одну ветку if, произвольное количество elif и необязательную ветку else.

  10. Цикл while и его применение в Python

    С помощью циклов в программировании организуется многократное следующее друг за другом выполнение одних и тех же участков кода. Бывают циклы с условием и со счетчиком. К первым относится цикл while, или цикл "пока".

  11. Изучите функции и их применение в Python

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

  12. Локальные и глобальные переменные в Python

    В программировании важное значение имеет представление о локальных и глобальных переменных. Локальные переменные существуют внутри функций и не доступны за ее пределами. Глобальные переменные видны во всей программе.

  13. Оператор return и возврат значений в Python

    С помощью оператора return можно вернуть значение из тела функции в основную программу. В языке программирования Python можно вернуть несколько значений, перечислив их через запятую после оператора return. Также в функции может быть несколько return, но всегда выполняется только один из них.

  14. Параметры и аргументы функций в Python

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

  15. Встроенные функции Python для работы

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

  16. Использование модулей в Python

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

  17. Генерация псевдослучайных чисел в Python

    Для генерации псевдослучайных чисел в языке программирования Python используются функции модуля random. Функция random() генерирует вещественное число от 0 до 1. Функции randint() и randrange() производят целые псевдослучайные числа в указанных диапазонах.

  18. Изучение списков в Python - основы и операции

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

  19. Изучение цикла for в Python

    Цикл for в языке программирования Python предназначен для перебора элементов структур данных (списков, словарей, кортежей, множеств) и многих других объектов. Это не цикл со счетчиком, каковым является for во многих других языках. Нередко цикл for используется совместно с функцией range(), генерирующей объекты-диапазоны.

  20. Строки в Python - методы и срезы

    В Python строки - это неизменяемые последовательности символов или подстрок. Из них, так же как из списков, можно извлекать отдельные символы с помощью индексов или подстроки с помощью взятия срезов. В языке Python есть множество встроенных строковых методов, позволяющих упростить обработку строк.

  21. Кортежи - неизменяемые структуры данных

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

  22. Словари в Python - работа с ключами и значениями

    Словарь в Python - это изменяемая неупорядоченная структура данных, элементами которой являются пары "ключ:значение". В словари можно добавлять и удалять элементы, изменять значения ключей. В Python словари имеют ряд методов, упрощающих работу с ними.

  23. Работа с файлами в Python

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