Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resultado None

Boa tarde, eu gostaria de tirar uma dúvida, eu criei um exercicio e sempre a minha função retorna um valor none, onde é impresso no resultado.


n1 = int(input("DIGITE A 1ª NOTA: "))
n2 = int(input("DIGITE A 2ª NOTA: "))

def media_aluno(n1,n2):
   me = (n1+n2)/2
   return me

media_a = media_aluno(n1,n2)

def status_aluno():

    if media_a >= 7:
        if(media_a == 10):
            print("Aprovado com distinção")
        else:
            print("Aprovado")
    elif(media_a < 7):
        print("Reprovado")



print(status_aluno())

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Oioi Lutizembergue, tudo bem com você?

Quando estamos trabalhando com funções em Python, precisamos entender que toda função retorna um resultado. Nós temos a opção de informar ao python o que nós queremos que nossa função nos retorne, e podemos fazer isso colocando a declaração return algum_valor no final da nossa função. Caso preferimos não informar ao python o que a função está retornando, ele automaticamente colocará um valor nulo na resposta, ou no caso none.

O que está acontecendo é que sua função status_aluno() não apresenta nenhum retorno definido, o que faz com que o python retorne o valor nulo no momento em que você utiliza a função print(status_aluno()). Para resolvermos isso, temos várias opções. Uma delas é implementando uma variável para armazenar o valor da resposta de aprovação ou reprovação, dentro de sua função, como mostrado abaixo:

def status_aluno():
    if media_a >= 7:
        status_final = "Aprovado"
        if(media_a == 10):
            print(f"{status_final} com distinção")
        else:
            print(f"{status_final}")
    elif(media_a < 7):
        status_final = "Reprovado"
        print(f"{status_final}")
    return status_final
print(status_aluno())

Resultado:

DIGITE A 1ª NOTA: 10
DIGITE A 2ª NOTA: 10 
Aprovado com distinção
Aprovado

Perceba que eu utilizei a variável status_final para armazenar o valor do status do aluno, e retornei essa variável no final da função status_aluno(), ainda utilizando esses mesmos valores nas funções print() contidas dentro da função.

Outro modo que podemos fazer isso, para evitar redundância na minha resposta final, é retirando as funções print() de dentro da função status_aluno(), mantendo a variável agora dentro dos condicionais, como mostrado abaixo:

def status_aluno():
    if media_a >= 7:
        if(media_a == 10):
            status_final = "Aprovado com Distinção"
        else:
            status_final = "Aprovado"
    elif(media_a < 7):
        status_final = "Reprovado"
    return status_final

print(status_aluno())

Resultado:

DIGITE A 1ª NOTA: 10
DIGITE A 2ª NOTA: 10 
Aprovado com distinção

Dessa forma, o resultado se mantém mais direto, mantendo a veracidade da sua resposta :)

Caso tenha interesse de se aprofundar ainda mais sobre a Linguagem Python, recomendo a formação Python e orientação a objetos na alura!

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Entendi Laís, já fiz a correção muito obrigado! Eu já estou fazendo o curso que você indicou, muito bom! é que em paralelo eu costumo fazer lista de exercícios.