O Python tem três tipos diferentes de números embutidos: inteiros (int), ponto flutuante (float) e complexos (complex).
Frações (fractions.Fraction) e Decimais (decimal.Decimal) também estão disponíveis por meio de importação da biblioteca padrão.
Números inteiros, incluindo números 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
Números que contêm um ponto decimal (com ou sem parte fracionária) são identificados como floats:
>>> 3.45
3.45
>>> type(3.45)
<class 'float'>
O Python oferece suporte total à aritmética entre esses diferentes tipos de números e converte números de tipo mais restrito para corresponder aos de tipo menos restrito quando usados com os operadores aritméticos binários (+, -, *, /, // e %).
Os operadores de adição e subtração se comportam como na matemática normal.
Se um ou mais operandos forem 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
Assim como na adição e na subtração, a multiplicação converte números de tipo mais restrito para corresponder aos de tipo menos restrito:
>>> 3 * 2
6
>>> 3 * 2.0
6.0
A divisão sempre retorna um float, mesmo que o resultado seja um número inteiro:
>>> 6/5
1.2
>>> 6/2
3.0
Se você precisa de um resultado int, pode 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 (%) retorna o resto da divisão entre os 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 fornece uma função embutida round(number, <decimal_places>) para arredondar um número de ponto flutuante para um determinado número de casas decimais.
Se nenhum número de casas decimais for especificado, o número é arredondado para o inteiro mais próximo e retorna um int:
>>> round(3.1415926535, 2)
3.14
>>> round(3.1415926535)
3
O Python permite usar parênteses para agrupar expressões. Isso é útil quando você quer substituir a ordem padrão das operações.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
O Python segue a regra PEMDAS para precedência de operadores.
Isso significa que os cálculos dentro de () têm a prioridade mais alta, seguidos por **, 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 dígitos é limitado apenas pela memória disponível do sistema hospedeiro.
Números de ponto flutuante costumam ser implementados usando um double em C (15 casas decimais de precisão), mas a representação varia conforme o sistema hospedeiro.
Números complexos têm uma parte real e uma parte imaginary, ambas representadas por números de ponto flutuante.
Para uma discussão mais detalhada dos problemas e limitações da aritmética de ponto flutuante entre linguagens de programação, dê uma olhada em 0.30000000000000004.com e no Tutorial do Python.
A empresa em que você trabalha quer reduzir a pegada de carbono, então quer que você escreva um programa para calcular o consumo de energia e o custo de manter os eletrônicos dela funcionando.
Seu empregador tem um programa que calcula o tempo que diferentes eletrônicos levam para funcionar. No momento, o tempo é armazenado em horas. Quando seu empregador somou as horas, percebeu que a duração não estava correta. Ele quer que você adicione 3 horas extras aos dados de tempo. Ele também gostaria de saber quantas horas "extras" sobram depois de converter os dados em dias "completos" (um dia tem 24 horas). O tempo a converter pode não corresponder a dias completos.
Implemente uma função get_extra_hours() que recebe um inteiro com o número de horas.
A função deve fazer o ajuste apropriado das "horas extras" e então return um inteiro que representa quantas horas precisam ser removidas do total para obter o tempo em dias "completos".
>>> get_extra_hours(25)
4
Seu empregador quer saber o consumo de energia dos diferentes eletrônicos em kW. kW significa quilowatt, e 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.
Implemente uma função get_kW_value() que recebe um inteiro com o número de watts.
A função deve então return os watts em quilowatts, arredondados para 1 casa decimal.
>>> get_kW_value(1150)
1.2
Para conseguir calcular o custo de manter os eletrônicos funcionando, seu empregador precisa saber o consumo de energia em kWh. kWh significa quilowatt-hora, e hora é uma unidade de tempo. Um quilowatt-hora == 1000 watts usados por 1 hora. Uma hora é composta de 60 minutos, e um minuto é composto de 60 segundos. Uma hora equivale a 3600 segundos. Para calcular o valor em kWh, você deve converter os watts em kW e depois fazer uma divisão inteira do resultado por 3600.
Implemente uma função get_kWh_value() que recebe um inteiro com o número de watts.
A função deve então return os quilowatt-horas como um inteiro.
>>> get_kWh_value(5000000)
1
Os eletrônicos não são 100% eficientes. Por isso, seu empregador quer que você calcule a eficiência dos eletrônicos. Para obter a eficiência, você deve dividir o fator de potência (um número de ponto flutuante entre 0 e 100) por 100.
Implemente uma função get_efficiency() que recebe um número de ponto flutuante com o fator de potência.
A função deve então return a eficiência calculada como um número de ponto flutuante.
>>> get_efficiency(80)
0.8
Seu empregador quer saber o custo de manter os eletrônicos funcionando. O custo de manter os eletrônicos funcionando é a potência usada multiplicada pelo custo por kWh. A potência usada é a potência fornecida dividida pela eficiência calculada.
Implemente uma função get_cost(<watts>,<power_factor>,<price>) que recebe um inteiro com o número de watts, um número de ponto flutuante com o fator de potência e um número de ponto flutuante com o custo por kWh.
A função deve então return o custo de manter os eletrônicos funcionando como um número de ponto flutuante.
>>> get_cost(5000000, 80, 0.25)
0.3125
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.