Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
71 changes: 71 additions & 0 deletions exercicios/para-casa/calculadora_kerlla.py
Original file line number Diff line number Diff line change
@@ -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()
52 changes: 52 additions & 0 deletions exercicios/para-casa/calculo_media_kerlla.py
Original file line number Diff line number Diff line change
@@ -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)
46 changes: 46 additions & 0 deletions exercicios/para-casa/test_calc-media_kerlla.py
Original file line number Diff line number Diff line change
@@ -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()