Числа и строки как типы данных в Python. Переменные
Данные и их типы
В реальной жизни мы совершаем различные действия над окружающими нас предметами, или объектами. Мы меняем их свойства, наделяем новыми функциями. По аналогии с этим компьютерные программы также управляют объектами, только виртуальными, цифровыми. Пока не дойдем до уровня объектно-ориентированного программирования, будем называть такие объекты данными.
Очевидно, данные бывают разными. Часто компьютерной программе приходится работать с числами и строками. Так мы уже имели дело с числами, выполняя над ними арифметические действия. Операция сложения выполняла изменение первого числа на величину второго, а умножение увеличивало одно число в количество раз, соответствующее второму.
Числа в свою очередь также бывают разными: целыми, вещественными, могут иметь огромную величину или очень длинную дробную часть.
При знакомстве с языком программирования Python мы столкнемся с тремя типами данных:
-
целые числа (тип
int
) – положительные и отрицательные целые числа, а также 0 (например, 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 <module> ValueError: invalid literal for int() with base 10: 'hi'
Здесь возникла ошибка значения (ValueError
), так как передан литерал (в данном случае строка с буквенными символами), который нельзя преобразовать к числу с основанием 10. Однако функция int
не такая простая:
>>> int('101', 2) 5 >>> int('F', 16) 15
Если вы знаете о различных системах счисления, то поймете, что здесь произошло.
Обратим внимание еще на одно. Данные могут называться значениями, а также литералами. Эти три понятия ("данные", "значение", "литерал") не обозначают одно и то же, но близки и нередко употребляются как синонимы. Чтобы понять различие между ними, места их употребления, надо изучить программирование глубже.
Переменные
Данные хранятся в ячейках памяти компьютера. Когда мы вводим число, оно помещается в какую-то область памяти. Но как потом узнать, куда именно? Как впоследствии обращаться к этим данными? Нужно как-то установить связь с местом хранения наших данных, запомнить его и пометить.
Раньше, при написании программ на машинном языке, обращение к ячейкам памяти осуществляли с помощью указания их регистров, то есть конкретно сообщали, куда положить данные и откуда их взять. Однако с появлением ассемблеров при обращении к данным стали использовать словесные переменные, что куда удобней для человека.
Механизм связи между переменными и данными может различаться в зависимости от языка программирования и типов данных. Пока достаточно запомнить, что в программе данные связываются с каким-либо именем и в дальнейшем обращение к ним происходит через это имя-переменную.
Слово "переменная" обозначает, что сущность может меняться, в ней что-то непостоянно. Действительно, вы увидите это в дальнейшем, одна и та же переменная может быть связана сначала с одними данными, а потом – с другими. То есть ее значение может меняться, она переменчива.
В программе на языке Python, как и на большинстве других языков, связь между данными и переменными устанавливается с помощью знака =
. Такая операция называется присваивание (также говорят "присвоение"). Например, выражение sq = 4
означает, что на объект, представляющий собой число 4, находящееся в определенной области памяти, теперь ссылается переменная sq, и обращаться к этому объекту следует по имени sq.
Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:
-
Желательно давать переменным осмысленные имена, говорящие о назначении данных, на которые они ссылаются.
-
Имя переменной не должно совпадать с командами языка (зарезервированными ключевыми словами).
-
Имя переменной должно начинаться с буквы или символа подчеркивания (_), но не с цифры.
-
Имя переменной не должно содержать пробелы.
Чтобы узнать значение, на которое ссылается переменная, находясь в режиме интерпретатора, достаточно ее вызвать, то есть написать имя и нажать Enter.
>>> sq = 4 >>> sq 4
Вот более сложный пример работы с переменными в интерактивном режиме:
>>> apples = 100 >>> eat_day = 2 >>> days = 7 >>> apples = apples - eat_day * days >>> apples 86
Здесь используются три переменные: apples, eat_day и days. Каждой из них присваивается свое значение. Выражение apples = apples - eat_day * days
сложное. Сначала выполняется подвыражение, стоящее справа от знака равенства. После этого его результат присваивается переменной apples, в результате чего ее старое значение (100) теряется. В подвыражении apples - eat_day * days
вместо имен переменных на самом деле используются их значения, то есть числа 100, 2 и 7.
Практическая работа
-
Переменной var_int присвойте значение 10, var_float - значение 8.4, var_str - "No".
-
Значение, хранимое в переменной var_int, увеличьте в 3.5 раза. Полученный результат свяжите с переменной var_big.
-
Измените значение, хранимое в переменной var_float, уменьшив его на единицу, результат свяжите с той же переменной.
-
Разделите var_int на var_float, а затем var_big на var_float. Результат данных выражений не привязывайте ни к каким переменным.
-
Измените значение переменной var_str на "NoNoYesYesYes". При формировании нового значения используйте операции конкатенации (
+
) и повторения строки (*
). -
Выведите значения всех переменных.
Примеры решения и дополнительные уроки в pdf-версии курса