Calculadora de média ponderada de notas por categoria
Esta calculadora de média ponderada combina as notas das categorias conforme a importância relativa de cada uma.
Executar grátis
Informe uma nota percentual e um peso para trabalhos, projetos, provas, participação ou qualquer outra categoria. A calculadora multiplica cada nota pelo respectivo peso, soma os produtos e divide pelo peso total. Como os pesos são normalizados automaticamente, eles podem somar 100, 1, 20 ou outro valor positivo. O resultado inclui a média final e um detalhamento por categoria para você conferir fórmulas, explicar notas ou integrar o mesmo cálculo a um fluxo acadêmico.
Informe notas e pesos coerentes por categoria
Crie uma linha para cada categoria que participa da nota geral. Dê um nome claro, informe a nota obtida como percentual de 0 a 100 e forneça um peso não negativo. Um curso típico pode usar Trabalhos com 20, Projetos com 35 e Provas com 45. Esses valores somam 100, mas isso não é obrigatório. Você pode informar 2, 3.5 e 4.5 e obter a mesma média, pois apenas a proporção entre os pesos importa. Pesos decimais como 0.2, 0.35 e 0.45 também funcionam. Use uma única escala de pesos na solicitação; misturar 20 com 0.35 representaria uma proporção provavelmente diferente da desejada. As notas precisam estar em percentuais, portanto converta 42 pontos de um total de 50 em 84 antes do envio. Uma categoria pode ter peso zero para aparecer no detalhamento sem alterar a média. Pelo menos uma categoria precisa ter peso positivo, e são aceitas até 100 linhas por solicitação.
Entenda a fórmula da média ponderada
O cálculo usa a média ponderada padrão: multiplica cada nota pelo seu peso, soma todos esses produtos e divide a soma ponderada pela soma dos pesos. Se Trabalhos tiver nota 88 e peso 20, Projetos tiver 94 e 35, e Provas tiver 81 e 45, os produtos serão acumulados antes da divisão. Assim, uma categoria de peso maior influencia mais o resultado final. A resposta apresenta a soma ponderada e o peso total, permitindo que você reproduza a fórmula principal. Ela também informa cada peso normalizado como parcela decimal do todo e cada contribuição em pontos da nota. As contribuições somam a média exibida, exceto por diferenças inofensivas do arredondamento na sexta casa decimal. Os pesos nunca são forçados a somar 100, porque a divisão pelo total real já faz a normalização correta. Números inválidos, pesos negativos, notas fora do intervalo, nomes vazios e peso total zero geram erro de entrada em vez de uma nota enganosa.
Interprete e audite o resultado
Use weighted_average como o percentual combinado das categorias enviadas. A lista mantém a ordem original e acrescenta normalized_weight e weighted_contribution, mostrando exatamente como cada linha afetou a resposta. Esse detalhamento ajuda quando um estudante pergunta por que uma ótima nota em trabalhos não compensou uma prova mais baixa ou quando um professor verifica se o sistema acadêmico está aplicando corretamente os pesos do plano de ensino. A calculadora não atribui conceitos, aplica curvas, descarta a menor nota, substitui atividades ausentes nem exige pesos totalizando 100; essas são decisões da política de avaliação. Se os pesos atuais cobrirem apenas categorias concluídas, você deve decidir entre normalizar a nota sobre o trabalho finalizado ou representar categorias pendentes com nota zero. As duas escolhas são matematicamente válidas, porém geram resultados diferentes. O algoritmo é determinístico, não usa serviços de rede e arredonda os campos numéricos retornados para seis casas decimais. A mesma entrada válida produz o mesmo resultado estruturado no navegador e pela API.
Casos de uso
Confira a nota atual de um curso
Combine trabalhos, testes, projetos e provas conforme os pesos por categoria publicados no plano de ensino.
Audite cálculos do sistema de notas
Compare o resultado de uma plataforma acadêmica com uma soma ponderada transparente, peso total e contribuições por categoria.
Automatize relatórios acadêmicos
Calcule médias ponderadas consistentes em relatórios sem manter fórmulas de planilha para cada estudante.
Perguntas frequentes
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A calculadora de nível A também pode ser executada no navegador.
Os pesos precisam somar 100?
Não. Qualquer escala não negativa e coerente funciona, pois a soma ponderada é dividida pelo peso total real.
Posso usar pesos decimais?
Sim. Os valores 0.2, 0.35 e 0.45 produzem a mesma média que 20, 35 e 45.
O que acontece com uma categoria de peso zero?
Ela permanece no detalhamento, mas não contribui para a média final. Pelo menos um peso deve ser positivo.
A calculadora atribui um conceito?
Não. Ela retorna apenas o percentual ponderado, pois as faixas variam entre cursos e instituições.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/edu/weighted-grade-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"categories":[{"name":"Homework","score":88,"weight":20},{"name":"Projects","score":94,"weight":35},{"name":"Exams","score":81,"weight":45}]}'const res = await fetch("https://api.kit.forhosting.com/edu/weighted-grade-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"categories": [
{
"name": "Homework",
"score": 88,
"weight": 20
},
{
"name": "Projects",
"score": 94,
"weight": 35
},
{
"name": "Exams",
"score": 81,
"weight": 45
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/weighted-grade-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"categories": [
{
"name": "Homework",
"score": 88,
"weight": 20
},
{
"name": "Projects",
"score": 94,
"weight": 35
},
{
"name": "Exams",
"score": 81,
"weight": 45
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/weighted-grade-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"categories":[{"name":"Homework","score":88,"weight":20},{"name":"Projects","score":94,"weight":35},{"name":"Exams","score":81,"weight":45}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"categories":[{"name":"Homework","score":88,"weight":20},{"name":"Projects","score":94,"weight":35},{"name":"Exams","score":81,"weight":45}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/weighted-grade-average", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"categories": [
{
"name": "Homework",
"score": 88,
"weight": 20
},
{
"name": "Projects",
"score": 94,
"weight": 35
},
{
"name": "Exams",
"score": 81,
"weight": 45
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.weighted_grade_average",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |