Когда Python встречает выражение a = 5 + 3.0, он определяет тип переменной a следующим образом:
5 + 3.0.  5 является целым числом (int), а 3.0 является числом с плавающей точкой (float).int и float, Python автоматически выполняет неявное приведение типа (implicit type conversion) целого числа к типу с плавающей точкой. Это делается для сохранения точности результата.  То есть, 5 временно преобразуется в 5.0.5.0 + 3.0. Операция сложения между двумя числами с плавающей точкой возвращает результат типа float.  В данном случае, 5.0 + 3.0 = 8.0.8.0 (типа float) присваивается переменной a.Таким образом, после выполнения выражения a = 5 + 3.0, переменная a будет иметь тип float и значение 8.0.
Ключевые моменты:
int и float, int приводится к float.int и float всегда будет иметь тип float.