diff --git a/exercicios/para-casa/__pycache__/calculo_media_kerlla.cpython-311.pyc b/exercicios/para-casa/__pycache__/calculo_media_kerlla.cpython-311.pyc new file mode 100644 index 0000000..6a3b5af Binary files /dev/null and b/exercicios/para-casa/__pycache__/calculo_media_kerlla.cpython-311.pyc differ diff --git a/exercicios/para-casa/calculadora_kerlla.py b/exercicios/para-casa/calculadora_kerlla.py new file mode 100644 index 0000000..5f0ea3c --- /dev/null +++ b/exercicios/para-casa/calculadora_kerlla.py @@ -0,0 +1,71 @@ +# Desenvolva uma calculadora (utilizando a metodolodia TDD) que tenha as 4 operações básicas +# e teste ela usando testes unitários. + +# Operações básicas: +# Soma +# Subtração +# Multiplicação +# Divisão + +import unittest + +def soma(a, b): + return a + b + +def subtracao(a, b): + return a - b + +def multiplicacao(a, b): + return a * b + +def divisao(a, b): + if b == 0: + raise ValueError("Não é permitido dividir por zero.") + return a / b + +class TestCalculadora(unittest.TestCase): + def test_soma_positivos(self): + self.assertEqual(soma(3, 4), 7) + + def test_soma_negativos(self): + self.assertEqual(soma(-2, -3), -5) + + def test_soma_zeros(self): + self.assertEqual(soma(0, 0), 0) + + def test_soma_positivos_negativos(self): + self.assertEqual(soma(-1, 2), 1) + + def test_subtracao_positivos(self): + self.assertEqual(subtracao(10, 5), 5) + + def test_subtracao_negativos(self): + self.assertEqual(subtracao(-6, -2), -4) + + def test_subtracao_positivos_negativos(self): + self.assertEqual(subtracao(4, -3), 7) + + def test_multiplicacao_positivos(self): + self.assertEqual(multiplicacao(6, 5), 30) + + def test_multiplicacao_negativos(self): + self.assertEqual(multiplicacao(-8, -4), 32) + + def test_multiplicacao_positivos_negativos(self): + self.assertEqual(multiplicacao(8, -8), -64) + + def test_divisao_positivos(self): + self.assertEqual(divisao(16, 4), 4) + + def test_divisao_negativos(self): + self.assertEqual(divisao(-8, -2), 4) + + def test_divisao_positivos_negativos(self): + self.assertEqual(divisao(12, -4), -3) + + def test_divisao_por_zero(self): + with self.assertRaises(ValueError): + divisao(10, 0) + +if __name__ == '__main__': + unittest.main() diff --git a/exercicios/para-casa/calculo_media_kerlla.py b/exercicios/para-casa/calculo_media_kerlla.py new file mode 100644 index 0000000..9ca9d97 --- /dev/null +++ b/exercicios/para-casa/calculo_media_kerlla.py @@ -0,0 +1,52 @@ +# Exercício 1: 'Faça um arquivo contendo ao menos 4 cenários de +# testes mapeados por você, com descrição e resultado esperado' + +# Cenário de testes para cáculos de média aritmética: + +# Média aritmética = Soma dos Valores dos Itens dividido pela Quantidade Total de Itens +# Exemplo: 10 e 30 +# Valor 10 somado ao valor 30 = Soma dos Valores do Itens = 40 +# Quantidade Total de Itens = 2 (item 10 e item 30) +# Média = 40 dividido por 2 +# Média = 20 + +# Média de itens iguais: +# 5, 5 e 5 +# 5+5+5 / 3 = 5 + +# Média com poucos itens: +# 2 e 8 +# 2+8 / 2 = 5 + +# Média com muitos itens: +# 2, 10, 38, 9872, 75, 833, 662, 47, 17 +# 2+10+38+9872+75+833+662+47+17 / 9 = 1284 + +# Média com apenas um item: +# 10 +# 10 / 1 = 10 + +# Média com números negativos: +# -538, 80 e -382 +# (-538)+(80)+(-382) / 3 = -280 + +# Média com frações: +# (13,69), (82,08) e (15,00) +# (13,69)+(82,08)+(15,00) / 3 = 36,92333... + +# Média sem nenhum item: +# Nulo +# Mensagem de Erro: "É necessário envio de valores numéricos para calcular a média" + +# Média de itens inválidos: +# 15, 50, Pedra +# Mensagem de Erro: "Não é permitido o envio de valores não numéricos para calcular a média" + +######################################################################################### + +# Exercício 2: 'Faça um Arquivo Python calculando a média de uma lista de números' + +def calcular_media(numeros): + if not numeros: + return 0 + return sum(numeros) / len(numeros) \ No newline at end of file diff --git a/exercicios/para-casa/test_calc-media_kerlla.py b/exercicios/para-casa/test_calc-media_kerlla.py new file mode 100644 index 0000000..05b5c80 --- /dev/null +++ b/exercicios/para-casa/test_calc-media_kerlla.py @@ -0,0 +1,46 @@ +# Exercício 3: 'Faça um arquivo de teste, que contenha todos os testes mapeados por você (passo 1), +# para testar o arquivo python que você calculou as médias' + +import unittest +from calculo_media_kerlla import calcular_media + +class TestCalcularMedia(unittest.TestCase): + + def test_media_lista_vazia(self): + resultado = calcular_media([]) + self.assertEqual(resultado, 0) + + def test_media_itens_iguais(self): + resultado = calcular_media([5, 5, 5]) + self.assertEqual(resultado, 5) + + def test_media_poucos_itens(self): + resultado = calcular_media([2, 8]) + self.assertEqual(resultado, 5) + + def test_media_muitos_itens(self): + resultado = calcular_media([2, 10, 38, 9872, 75, 833, 662, 47, 17]) + self.assertEqual(resultado, 1284) + + def test_media_apenas_um_item(self): + resultado = calcular_media([10]) + self.assertEqual(resultado, 10) + + def test_media_numeros_negativos(self): + resultado = calcular_media([-538, 80, -382]) + self.assertEqual(resultado, -280) + + def test_media_com_fracoes(self): + resultado = calcular_media([13.69, 82.08, 15.00]) + self.assertAlmostEqual(resultado, 36.923333, places=6) + + def test_media_sem_itens(self): + resultado = calcular_media([]) + self.assertEqual(resultado, 0) + + def test_media_itens_invalidos(self): + with self.assertRaises(ValueError): + calcular_media([15, 50, "Pedra"]) # erro proposital, imaginando probabilidades de uso + +if __name__ == '__main__': + unittest.main()