Não ficou muito claro na explicação, por que não posso utilizar Long ou Complexo para o salário?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Não ficou muito claro na explicação, por que não posso utilizar Long ou Complexo para o salário?
Diego,
O Python 3 não possui limites superiores ou inferiores em inteiros, e não existe uma definição matemática para ordenar números complexos arbitrários (embora as partes reais ou imaginárias de dois números complexos possam ser ordenadas separadamente). No Python 2 tem, e tb uma precedência no tipo numérico resultante obedece a ordem:
int -> long -> float -> complex
independente da operação matemática.
>>> 3 + 2 # int + int = int
5
>>> 3 + 2L # int + long = long
5L
>>> 3 + 2L + 3. # ... + float = float
8.0
>>> 3 + 2L + 3. + 0j # ... + complex = complex
(8+0j)
A conversão de tipo pode ser feita com as funções: int; long; float; e complex.
>>> pi = 3.1415926535897931
>>> r = 5
>>> a = pi*r**2
>>> a = int(pi*r**2)
>>> a
78
>>> c = complex(3,-4)
>>> c
(3-4j)
>>> float(c)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float; use abs(z)
</module></stdin>
Como pode ver, não é possível converter um complexo para float, ou mesmo int e long. Para se converter um complexo se deve trabalhar em uma de suas componentes, parte real ou imaginária, ou com o seu método, como abaixo:
>>> d = float(c.real)
>>> d
3.0
>>> c.real
3.0
>>> abs(c) # retorna o módulo do complexo: sqrt(real**2 + imag**2)
5.0
Concluindo no Python 2 é muito difícil não cometer erros na conversão de salario nestes tipos de números, mesmo porque não consigo pensar em variável COMPLEX ou LONG para UM CAMPO como este.