Trilhas
/
Python
Python
/
Exercícios
/
Conta de luz
Conta de luz

Conta de luz

Exercício de aprendizagem

Introdução

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'>

Aritmética

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 %).

Adição e subtração

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

Multiplicação

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

Divisão

A divisão sempre retorna um float, mesmo que o resultado seja um número inteiro:

>>> 6/5
1.2

>>> 6/2
3.0

Divisão inteira

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

Módulo

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

Arredondamento

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

Prioridade e parênteses

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

Precisão e representação

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.

Instruções

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.

1. Obter as horas extras

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

2. Obter o valor em kW

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

3. Obter o valor em kWh

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

4. Obter a eficiência

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

5. Obter o custo

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
Editar via GitHub O link abre em uma nova janela ou aba
Python Exercism

Tudo pronto para começar Conta de luz?

Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.