# Exercício Prático 4 - Detector de Outliers via IQR
dados = [40, 42, 45, 48, 50, 52, 55, 58, 60, 180]
dados_ordenados = sorted(dados)
n = len(dados_ordenados)

# Cálculo simplificado de quartis por posição de índice
# Q1 representa a posição aproximada de 25% dos dados
# Q3 representa a posição aproximada de 75% dos dados
q1_idx = int(n * 0.25)
q3_idx = int(n * 0.75)

q1 = dados_ordenados[q1_idx]
q3 = dados_ordenados[q3_idx]

# Intervalo Interquartil
iqr = q3 - q1

# Limites do Boxplot
limite_inferior = q1 - 1.5 * iqr
limite_superior = q3 + 1.5 * iqr

# Identificação de Outliers
outliers = []
dados_limpos = []

for x in dados_ordenados:
    if x < limite_inferior or x > limite_superior:
        outliers.append(x)
    else:
        dados_limpos.append(x)

print("=== DETECÇÃO DE OUTLIERS COM REGRA DO BOXPLOT ===")
print(f"Dados Analisados: {dados_ordenados}")
print(f"Quartil 1 (Q1): {q1}")
print(f"Quartil 3 (Q3): {q3}")
print(f"Intervalo Interquartil (IQR): {iqr}")
print(f"Limite Inferior (LI): {limite_inferior}")
print(f"Limite Superior (LS): {limite_superior}")
print("-" * 45)
print(f"Outliers Detectados: {outliers}")
print(f"Dados Sem Outliers: {dados_limpos}")