Типы переменных (не путать с data types и data scales):
True
и False
.Посмотрим, как определить тип переменной:
x = 2.34
type(x) # функция type
float
y = 2
type(y)
int
r = 'hello'
type(r)
str
l = True
type(l)
bool
Иногда требуется преобразовать тип переменной, например, из числа с плавающей точкой сделать целое число. Зачем это бывает нужно? Для удобства и для более корректной выдачи результатов. Например, у нас есть база данных по респондентам, в которой указан их год рождения, и мы хотим добавить столбец с возрастом респондентов (числом полных лет). Из-за того, что кто-то ввел год в виде 1993.0, возраст при вычислениях тоже получится числом с плавающей точкой — 25.0. Так как мы знаем, что возраст всегда будет целым, чтобы дробная часть не смущала, можно привести все значения к целочисленному типу.
int(25.0) # int - от integer
25
Вообще функции для изменения типа переменных называются так же, как и сами типы или их сокращённые названия.
float(23)
23.0
str(2) # str - от string
'2'
int("23") # int - от integer
23
Однако, если преобразование невозможно, Python выдаст ошибку (а точнее, исключение ValueError
, про исключения поговорим позже):
float('23,56')
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-9-b3dd92f20a26> in <module> ----> 1 float('23,56') ValueError: could not convert string to float: '23,56'
Так как запятая в Python не воспринимается как десятичный разделитель (в качестве разделителя используется точка), превратить строку '23,56' в число не получится, нужно будет сначала заменить запятую на точку. Как работать со строками, мы обсудим позже, но если интересно, можно сделать следующее: создать любую строковую переменную, а потом после её названия поставить точку и нажать Tab. Так же, как и в случае с модулем math
, выпадет список всех возможных методов, которые можно применять к строке.
Иногда возникает необходимость запросить какую-нибудь информацию у пользователя — попросить ввести её с клавиатуры. Это может быть нужно, например, когда мы пытаемся имитировать заполнение какой-нибудь формы (собрать информацию и обработать) или написать функцию, которая будет работать по-разному в зависимости от режима ("Если хотите выгрузить данные из файла, нажмите 1, если хотите вводить данные вручную, введите 2").
Запросить данные с клавиатуры можно с помощью функции input()
:
input("Введите что-нибудь: ")
Введите что-нибудь: нечто
'нечто'
Однако обычно нам нужно не просто вывести на экран то, что ввел пользователь (он и сам это видит), но и сохранить введенную информацию. Сделаем это (и заодно перейдем к числам).
num = input("Введите какое-нибудь число: ")
Введите какое-нибудь число: 5
Теперь мы можем работать с переменной num
, в которую мы сохранили результат ввода с клавиатуры.
num
'5'
Введенное нами число 5 сохранилось. Однако, если посмотреть внимательнее, это не совсем число: число пять стоит в кавычках. Это строка! То есть обычный текст. Проверим:
type(num) # действительно
str
Тут нам как раз и пригодится преобразование типов переменных:
num = int(num)
num
5
И теперь всё сразу: правильно и компактно.
num = int(input("Введите какое-нибудь число: "))
num
Введите какое-нибудь число: 7
7
Раз мы не предлагаем пользователю ввести именно целое число, число может быть любым, даже дробным. Учтем это – будем конвертировать введенный текст в число с плавающей точкой.
num = float(input("Введите какое-нибудь число: "))
num
Введите какое-нибудь число: 7.5
7.5
С клавиатуры можно вводить сколько угодно объектов:
numbers = input("Введите числа через пробел: ")
Введите числа через пробел: 2 3
numbers
'2 3'
Только тогда для работы с отдельными элементами ввода потребуется разбить строку на части по какому-нибудь символу (в нашем случае – по пробелу). О разбиении текста на части поговорим позже, когда будем обсуждать работу со строками, а пока разберём вывод информации на экран.
Как мы уже знаем, для вывода чего-либо на экран в Python существует функция print()
:
print(5)
print('Hello!')
5 Hello!
Для того, чтобы вывести на экран сразу несколько объектов, нужно просто перечислить их через запятую в круглых скобках.
age = 23
print('Your age is ', age)
Your age is 23
По умолчанию в качестве разделителей (отделяющих объекты друг от друга) используются пробелы. Но при желании это можно поправить, добавив аргумент sep
(от separator – разделитель):
print(2, 3, sep='-')
2-3
print(2, 3, sep='------')
2------3