O Python tem três tipos diferentes de números incorporados: inteiros (int), de vírgula flutuante (float) e complexos (complex).
As frações (fractions.Fraction) e os decimais (decimal.Decimal) também estão disponíveis através de importação da biblioteca padrão.
Os números inteiros, incluindo os hexadecimais (hex()), octais (oct()) e binários (bin()) sem casas decimais, também são identificados como ints:
# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>
>>> -12
-12
Os números que contêm um ponto decimal (com ou sem partes fracionárias) são identificados como floats:
>>> 3.45
3.45
>>> type(3.45)
<class 'float'>
O Python suporta totalmente a aritmética entre estes diferentes tipos de números e converte os números mais restritos para corresponderem aos seus equivalentes menos restritos quando se usam os operadores aritméticos binários (+, -, *, /, // e %).
Os operadores de adição e subtração comportam-se como na matemática normal.
Se um ou mais dos operandos for um float, os ints restantes também serão convertidos em floats:
>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0
Tal como na adição e na subtração, a multiplicação converte os números mais restritos para corresponderem aos seus equivalentes menos restritos:
>>> 3 * 2
6
>>> 3 * 2.0
6.0
A divisão devolve sempre um float, mesmo que o resultado seja um número inteiro:
>>> 6/5
1.2
>>> 6/2
3.0
Se precisares de um resultado int, podes usar a divisão inteira para truncar o resultado.
A divisão inteira é feita com o operador //:
>>> 6//5
1
>>> 6//2
3
O operador de módulo (%) devolve o resto da divisão dos dois operandos:
# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0
# The result of % is 2 here, because 3 only goes into 5 once, with 2 leftover
>>> 5 % 3
2
Outra forma de ver 5 % 3:
>>> whole_part = int(5/3)
1
>>> decimal_part = 5/3 - whole_part
0.6666666666666667
>>> whole_remainder = decimal_part * 3
2.0
O Python disponibiliza uma função incorporada round(number, <decimal_places>) para arredondar um número de vírgula flutuante para um determinado número de casas decimais.
Se não for especificado o número de casas decimais, o número é arredondado para o inteiro mais próximo e devolve um int:
>>> round(3.1415926535, 2)
3.14
>>> round(3.1415926535)
3
O Python permite usar parênteses para agrupar expressões. Isto é útil quando queres alterar a ordem de operações predefinida.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
O Python segue a regra PEMDAS para a precedência dos operadores.
Isto significa que os cálculos dentro de () têm a prioridade mais alta, seguidos de **, depois *, /, //, %, + e -:
>>> 2 + 3 - 4 * 4
-11
>>> (2 + 3 - 4) * 4
4
# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 64, then 2 + 192
>>> 2 + 3 * 4 ** 4
770
Os inteiros em Python têm precisão arbitrária: o número de algarismos é limitado apenas pela memória disponível do sistema anfitrião.
Os números de vírgula flutuante são normalmente implementados com um double em C (15 casas decimais de precisão), mas a representação varia consoante o sistema anfitrião.
Os números complexos têm uma parte real e uma parte imaginary, ambas representadas por números de vírgula flutuante.
Para uma discussão mais detalhada das questões e limitações da aritmética de vírgula flutuante nas várias linguagens de programação, dá uma vista de olhos a 0.30000000000000004.com e ao Tutorial de Python.
A empresa para a qual trabalhas quer reduzir a sua pegada de carbono, por isso quer que escrevas um programa para calcular o consumo de energia e o custo de funcionamento dos seus equipamentos eletrónicos.
O teu empregador tem um programa que calcula quanto tempo demoram a funcionar os diferentes equipamentos eletrónicos. Neste momento, o tempo está armazenado em horas. Quando o teu empregador somou as horas, reparou que a duração não estava correta. Querem que acrescentes 3 horas extra aos dados de tempo. Também gostariam de saber quantas horas "extra" sobram depois de converteres os dados em dias "completos" (um dia tem 24 horas). O tempo a converter pode não estar em dias completos.
Implementa uma função get_extra_hours() que aceita um número inteiro que representa o número de horas.
A função deve fazer o ajuste adequado das "horas extra" e depois return um número inteiro que representa quantas horas é preciso retirar ao total para obteres o tempo em dias "completos".
>>> get_extra_hours(25)
4
O teu empregador quer saber o consumo de energia dos diferentes equipamentos eletrónicos em kW. kW significa quilowatt, e o watt é uma unidade de potência. O quilo, no nome da unidade, é um prefixo do sistema métrico que significa 1000. Um quilowatt == 1000 watts.
Implementa uma função get_kW_value() que aceita um número inteiro que representa o número de watts.
A função deve depois return os watts em quilowatts, arredondados a 1 casa decimal.
>>> get_kW_value(1150)
1.2
Para conseguires calcular o custo de funcionamento dos equipamentos eletrónicos, o teu empregador precisa de saber o consumo de energia em kWh. kWh significa quilowatt-hora, em que a hora é uma unidade de tempo. Um quilowatt-hora == 1000 watts utilizados durante 1 hora. Uma hora é composta por 60 minutos e um minuto é composto por 60 segundos. Uma hora é igual a 3600 segundos. Para calcular o valor em kWh, tens de converter os watts em kW e depois fazer a divisão inteira do resultado por 3600.
Implementa uma função get_kWh_value() que aceita um número inteiro que representa o número de watts.
A função deve depois return os quilowatts-hora como um número inteiro.
>>> get_kWh_value(5000000)
1
Os equipamentos eletrónicos não são 100% eficientes. Por isso, o teu empregador quer que calcules a eficiência dos equipamentos eletrónicos. Para obteres a eficiência, tens de dividir o fator de potência (um float entre 0 e 100) por 100.
Implementa uma função get_efficiency() que aceita um float que representa o fator de potência.
A função deve depois return a eficiência calculada como um float.
>>> get_efficiency(80)
0.8
O teu empregador quer saber o custo de funcionamento dos equipamentos eletrónicos. O custo de funcionamento dos equipamentos eletrónicos é a potência utilizada multiplicada pelo custo por kWh. A potência utilizada é a potência fornecida dividida pela eficiência calculada.
Implementa uma função get_cost(<watts>,<power_factor>,<price>) que aceita um número inteiro que representa o número de watts, um float com o fator de potência e um float com o custo por kWh.
A função deve depois return o custo de funcionamento dos equipamentos eletrónicos como um float.
>>> get_cost(5000000, 80, 0.25)
0.3125
Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.