1
resposta

Solução

def categorize_performance(score: int):
    if score >= 90:
        return 'Excellent'
    elif score >= 70 and score < 90:
        return 'Good'
    elif score >= 50:
        return 'Fair'
    else:
        return 'Insufficient'
import unittest

class TestPerformanceCategorization(unittest.TestCase):
    
    def test_returns_excellent_when_score_is_greater_than_ninety(self):
        self.assertEqual(categorize_performance(95), 'Excellent')

    def test_returns_excellent_when_score_is_equal_to_ninety(self):
        self.assertEqual(categorize_performance(90), 'Excellent')

    def test_returns_good_when_score_is_between_seventy_and_eighty_nine(self):
        self.assertEqual(categorize_performance(75), 'Good')

    def test_returns_good_when_score_is_equal_to_seventy(self):
        self.assertEqual(categorize_performance(70), 'Good')
        
    def test_returns_fair_when_score_is_between_fifty_and_sixty_nine(self):
        self.assertEqual(categorize_performance(69), 'Fair')

    def test_returns_fair_when_score_is_equal_to_fifty(self):
        self.assertEqual(categorize_performance(50), 'Fair')

    def test_returns_insufficient_when_score_is_below_fifty(self):
        self.assertEqual(categorize_performance(30), 'Insufficient')

unittest.main(argv=[''], verbosity=2, exit=False)
df['Categoria_Desempenho'] = df['NotaFinal'].apply(categoriza_desempenho)
df
1 resposta

Oi, Renato! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu uso do unittest para validar cada faixa de desempenho ficou muito bem estruturado e mostra um ótimo entendimento das boas práticas de testes. A lógica da função está clara e cobre todos os intervalos corretamente.

💡 Uma dica interessante para o futuro é usar a função cut() do pandas para categorizar faixas de valores de forma vetorizada.


import pandas as pd
df['Categoria'] = pd.cut(df['NotaFinal'],
                         bins=[0, 49, 69, 89, 100],
                         labels=['Insufficient', 'Fair', 'Good', 'Excellent'])

Esse código usa pd.cut para segmentar os valores da coluna NotaFinal em categorias definidas por faixas numéricas.

Renato, continue com esse empenho que você vai longe!

Abraços!

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!