Базовые типы переменных

Андрей К…
Последнее изменение:
0
0
0

Базовые типы переменных:


Даже самые сложные объекты сводятся к каким-то маленьким и базовым. Например, вселенные сводятся к галактикам, галактики сводятся к звездам и планетам, планеты сводятся к химическим элементам, элементы к атомам и т.п. Именно из самых маленьких и простых вещей строятся сложные системы.


Целые числа (int)


Один из базовых типов в питоне - целые числа. Например, 1, 2342342, 10212312312312313  - целые числа. В Питоне 3+ нет максимального значения – вы можете наращивать число до тех пор, пока не истощите ресурсы компьютера.
Например, 

# Объявим переменную с изначальным значением 1
cnt = 1

# Бесконечно будем повторять один и тот же цикл
while True:
    print(cnt) # Вывести текущее значение переменной
    cnt+=1 # Увеличить переменную на единицу


Такой скрипт можно запустить, и бесконечно на него смотреть – число будет расти с каждой итерацией цикла, и я понятия не имею, когда он закончится.
Что бы привести к целому числу значение другого типа,  можно воспользоваться функцией int(). Что бы узнать тип переменной, можно воспользоваться функцией type().
Например.

# Объявим строковую переменную
cnt = "1"
# посмотрим её тип
print(type(cnt))
# Приведем к числу
cnt = int(cnt)
# Посмотрим тип еще раз
print(type(cnt))


Видим, что переменная сменила тип:


Числа с плавающей точкой (float)

Это дробные числа, например 123.1231, 0.0001, 123123123131.0 – это именно они. Привести числа из другого формата в формат float можно, использовав функцию float().
Например:

volume = "99095.17162071"
volume_f = float(volume)
print(volume)


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


a = 0.1
print(a)
print("{a:0.64f}".format(a=a))

Сюрприз! В первый раз, когда я вывел просто переменную, питон заботливо округлил мне её, что бы я не переживал и все такое. Во второй раз я попросил вывести как есть – и он вывел как, по его мнению есть.  Т.е. в памяти записалось не то, что я просил – 0.1, а формула, по которой можно получить 0.1 с некоторой погрешностью.
Поэтому, при работе с числами с плавающей точкой, не полагайтесь на точные данные, не сравнивайте две переменные float между собой без подготовки (округления например), рассмотрите вариант хранения данных в целых числах, которые при необходимости можно будет разделить. Так же можно воспользоваться модулем decimal , который несколько улучшает работу с такими числами.
Но если прям уж такая точность до дцатого знака после запятой вам не нужна, то не парьтесь, float в целом хорошо работают, и много сделано и оптимизированно так, что бы не навредить, просто имейте в виду вот такую особенность при работе.


Строковые типы (str)


Данные, которые хранятся как строки. “Тут был Вася”, или «» являются примерами таких типов. Пустая строка – это тоже строка.
Для приведения типа можно воспользоваться функцией str()

i = 10
s = "Привет "

final = s + str(i)
print(final)

Реклама


 


Логические типы (bool)


Типы данных, которые представляют истину или ложь. Значения, в общем-то, два – True и False. True обозначает истину, False, соответственно, ложь. 
Их можно как назначать, так и вычислять на лету.
Например:

# Небо зеленое - Ложь (я так считаю)
sky_is_green = False

# Зеленое ли небо?
print("Зеленое ли небо?", sky_is_green)
print("1 равен 1? ", 1==1)
print("1 равен 2?", 1==2)
print("Строка '1' равна числу 1?", '1' == 1)


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


Тип NoneType


Специальный тип данных – None. Он обозначает НЕИЗВЕСТНОЕ значение. Оно ни пустое, ни ложь, ни что-либо еще. Оно именно неизвестное. Например, мимо вас проехало 5 автомобилей. 2 из них вы опознали. Это Жигули и БМВ. Три вы не смогли опознать. Ваши знания будут выглядеть как-то так:

car1_model = "Жигули"
car2_model = None
car3_model = None
car4_model = "BMW"
car5_model = None


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

print(car2_model is None) # вернет True

Реклама



Приведение типов и исключение


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

s = "asd"
print(int(s))


выбросит исключение 

ValueError: invalid literal for int() with base 10: 'asd'


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

s = "asd"
try:
    # Пытаемся привести строку к числу, и присвоить переменной new_i
    new_i = int(s)
except ValueError:
    # Если не удалось это сделать, пусть переменная new_i имеет значение 0
    new_i = 0
    
print(new_i)

Подробнее про механизм исключений и перехвата их поговорим позже.
 

Нет комментариев
Пожалуйста, Авторизуйтесь что бы оставить свой комментарий