Bom pessoal, abaixo está um rotina simples de cálculo de média dos alunos, com critérios de pesos por notas e verificação de aprovação baseado na média mínima exigida.

# Marcelo Lima
# Função para cálculo de notas com pesos variados

class Nota():
    def __init__(self,nome,media_de_aprovacao):
        # Contrutor da Classe Nota
        # Instância o nome do aluno e a nota mínima de aprovação
        self.nome = nome
        self.media_de_aprovacao = media_de_aprovacao

    def valida_notas(self,nota_para_validar,peso):
        # Validação simples para garantir que 
        # a nota informada esteja entre 0 e 10
        if (0 <= float(nota_para_validar) <= 10):
            nota_validas = {'nota':float(nota_para_validar),
                  'peso':float(peso)}

            return nota_validas
        else:
            raise RuntimeError('Nota deve estar entre 0 e 10')

    def calcula_media(self,**valores):
        # Cálculo das médias informadas seguindo as 
        # exigências de peso por nota
        soma_das_notas=0

        for nota in notas:
            #calcula peso
            media =+ nota.get('peso')
            soma_das_notas =+ nota.get('nota') * nota.get('peso')

        return (soma_das_notas/media)


aluno = Nota(input("Informe o nome do Aluno: "),
             input("A nota mínima para aprovação: "))

notas=[]
notas.append(aluno.valida_notas(
    input("Informe a primeira nota: "),
    input("Informe a peso para a primeira nota: ")
                                ))
notas.append(aluno.valida_notas(
    input("Informe a segunda nota: "),
    input("Informe a peso para a segunda nota: ")
                                ))
notas.append(aluno.valida_notas(
    input("Informe a terceira nota: "),
    input("Informe a peso para a terceira nota: ")
                                ))

media = Nota.calcula_media(notas)

if media >= float(aluno.media_de_aprovacao):
    resultado_final="APROVADO"
else:
    resultado_final = "REPROVADO"

print("O aluno %s obteve as seguintes notas: \n"
      " %s com peso %s,\n"
      " %s com peso %s e \n"
      " %s com peso %s \n"
      " portanto a média final calculada é \n"
      " %s com base na exigência mínima de nota maior ou igual a %s, \n"
      " o aluno está %s" % (aluno.nome,
                notas[0].get('nota'),notas[0].get('peso'),
                notas[1].get('nota'),notas[1].get('peso'),
                notas[2].get('nota'),notas[2].get('peso'),
                media,aluno.media_de_aprovacao,resultado_final))