Алла Тамбовцева, НИУ ВШЭ
Типы переменных (не путать с data types и data scales):
True
и False
.Посмотрим, как определить тип переменной (функция type()
):
x = 2.34
type(x)
float
y = 5
type(y)
int
name = "Alla"
type(name)
str
type(True)
bool
Иногда требуется преобразовать тип переменной, например, из числа с плавающей точкой сделать целое число. Зачем это бывает нужно? Для удобства и для более корректной выдачи результатов. Например, у нас есть база данных по респондентам, в которой указан их год рождения, и мы хотим добавить столбец с возрастом респондентов (числом полных лет). Из-за того, что кто-то ввел год в виде 1993.0, возраст при вычислениях тоже получится числом с плавающей точкой — 25.0. Так как мы знаем, что возраст всегда будет целым, чтобы дробная часть не смущала, можно привести все значения к целочисленному типу.
int(25.0) # int - от integer
25
int("23")
23
str(45) # str - от string
'45'
float("23.56")
23.56
Однако, если преобразование невозможно, Python выдаст ошибку (а точнее, исключение ValueError
, про исключения поговорим позже):
float("23,56")
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-9-5b87eb4fb8b7> in <module> ----> 1 float("23,56") ValueError: could not convert string to float: '23,56'
Так как запятая в Python не воспринимается как десятичный разделитель (в качестве разделителя используется точка), превратить строку '23,56'
в число не получится, нужно будет сначала заменить запятую на точку. Как работать со строками, мы обсудим позже, но если интересно, можно сделать следующее: создать любую строковую переменную, а потом после её названия поставить точку и нажать Tab. Так же, как и в случае с модулем math
, выпадет список всех возможных методов, которые можно применять к строке.
Иногда возникает необходимость запросить какую-нибудь информацию у пользователя — попросить ввести её с клавиатуры. Это может быть нужно, например, когда мы пытаемся имитировать заполнение какой-нибудь формы (собрать информацию и обработать) или написать функцию, которая будет работать по-разному в зависимости от режима ("Если хотите выгрузить данные из файла, нажмите 1, если хотите вводить данные вручную, введите 2").
Запросить данные с клавиатуры можно с помощью функции input()
:
s = input("Enter something:")
Enter something:something
print(s)
something
Давайте рассмотрим ещё один пример и запросим у пользователя его возраст:
age = input("Enter your age: ")
Enter your age: 26
age
'26'
Введенное нами значение сохранилось. Однако, если посмотреть внимательнее, это не совсем число: число пять стоит в кавычках. Это строка! То есть обычный текст. Проверим:
type(age) # действительно
str
Тут нам как раз и пригодится преобразование типов переменных:
age = int(input("Enter your age: "))
Enter your age: 26
Теперь все правильно, с age
можно работать как с числом:
type(age)
int
В заключение рассмотрим пример с вводом двух чисел с новой строки (необязательно целых). Сохраним введенные пользователем числа в переменные A
и B
, а потом выведем на экран их сумму и разность в одну строку:
A = float(input("Enter a number: "))
B = float(input("Enter a number: "))
print("Sum:", A + B, "Difference:", A - B, sep="\t")
Enter a number: 9.6 Enter a number: 5.1 Sum: 14.7 Difference: 4.5
В коде выше в функции print()
мы задействовали аргумент sep
. Это разделитель, который отделяет элементы в строке, выводимой с помощью print()
. Как мы видели, по умолчанию функция print()
выводит все элементы через пробел. Другими словами, значение sep
по умолчанию — это " "
. В этом примере мы записали \t
, это специальный символ для табуляции, отступа в четыре пробела. Но вообще символ в sep
может быть любым.