Pesquisar no Python Iniciantes

terça-feira, 21 de agosto de 2012

Exercícios #36 (Estrutura de Decisão)

Boa noite galera!

O 20° exercício diz assim:

“Faça um Programa para leitura de três notas parciais de um aluno. O programa deve calcular a média alcançada pelo aluno e apresentar:

a. A mensagem "Aprovado", se a média for maior ou igual a 7, com a respectiva média alcançada;

b. A mensagem "Reprovado", se a média for menor do que 7, com a respectiva média alcançada;

c. A mensagem "Aprovado com Distinção", se a média for igual a 10. "

Vamos ao código após a explicação:

#!/usr/bin/env python # -*- coding: utf-8 -*- #teste.py """Faça um Programa para leitura de três notas parciais de um aluno. O programa deve calcular a média alcançada por aluno e presentar: a. A mensagem "Aprovado", se a média for maior ou igual a 7, com a respectiva média alcançada; b. A mensagem "Reprovado", se a média for menor do que 7, com a respectiva média alcançada; c. A mensagem "Aprovado com Distinção", se a média for igual a 10. """ def entraNota(quantidade_nota): notas = [] int = 1 for num in range(quantidade_nota): nota = (float(input("Digite a {0}ª nota: ".format(int)))) if nota < 0 or nota > 10: raise ValueError('Erro na {0}ª nota. Digite uma nota entre 0 e 10.'.format(int)) notas.append(nota) int += 1 return notas def mediaAluno(notas): soma = sum(notas) print(soma) media = soma/len(notas) if media > 7.0 and media < 10: print('Aprovado com média: {0}'.format(media)) elif media < 7.0: print('Reprovado com média: {0}'.format(media)) else: print('Aprovado com distinção: 10!') notas = entraNota(3) mediaAluno(notas)
Ficou complicado de entender não é? Calma eu vou explicar passo a passo, fiz esse programa na forma mais "profissional" possível e mais prática de se entender nessa forma "profissional", amanhã vou traze-lo feito apenas com três entradas para o usuário e três ifs mas quem conseguir fazer da forma mais fácil antes poste aqui :), vamos a explicação:

O programa de fato começa apartir da função entraNota que recebe como parâmetro quantidade_nota, ai você me pergunta onde está esse parâmetro? para entendermos melhor essa função e de onde vem esse parâmetro que ela recebe temos que olhar na penultima linha do programa (notas = entraNota(3)) "ai ó" achamos o tal parâmetro ele é o 3, por enquanto esqueça essa atribuição para notas foque em entraNota(3) pois neste caso a leitura está sendo inversa(da direita para esquerda), voltando ao começo do programa na função entraNota(quantidade_nota) esse quantidade_nota é o valor do 3! isso mesmo quando passamos 3 la em baixo para entraNota ele é "guardado" em qualquer parâmetro posto na implementação da função entraNota, poderiamos ter posto entraNota(qualquer_coisa) o importante é que esse parâmetro tem um valor atual de 3, seguindo na função nós declaramos duas variáveis uma notas que no começo é uma lista vazia e uma int que é um inteiro de valor 1 que vamos utilizar como contador de cada nota, no for fazemos uma "loop" mais ou menos assim: para num(numero) numa sequencia de 3, quer dizer vamos passar nesse loop três vezes; na primeira linha do for pedimos a entrada do usuário e passamos para {0} o int que é "startado" com 1 então aparecerá Digite a 1a nota:, e convertemos essa entrada do usuário para ponto flutuante ex: 3 vira 3.0 etc. e guardamos esssa entrada do usuário na variável nota. após verificamos com o if(se) essa nota NÃO esta entre 0 e 10 não estando levantamos uma exeção(raise) que "para" o programa e "imprime" em que nota foi encontrado o erro, isso poderia ser tratado de outra forma mas implementei assim para mostrar a vocês o primeiro código com tratamento de erro presente aqui no blog; e se a nota estiver entre 0 e 10 vamos adicionar na lista notas a nota e incrementamos +1 a int e seguimos com o loop do for até completarmos 3 vezes "corretas", terminando o loop retornamos notas, "ué" mas pra onde nos retornamos a lista com todas as três notas digitada pelo o usuário? simples, voltemos para o fim do programa lembra de notas = entraNota(3)? então essa variável notas ai vai receber o retorno da variável notas da função que tem as notas digitadas pelo usuário, simplificando ela agora está com as notas digitadas na função entraNota, agora só nos falta fazer a média e imprimir se o aluno foi aprovado, reprovado... então fazemos isso criando uma função que recebe essas notas essa função é a mediaAluno(), como dito "chamamos" ela lá em baixo e enviamos como parâmetro as respectivas notas. Já dentro da função somamos essas notas usando outra função que pertence a biblioteca padrão do python que é a sum, com isso todas as três notas serão somadas e guardadas na variável soma, para calcular a média apenas pegamos essa soma e dividimos pela quantidade de notas dentro de notas, "aff" complicado, nem tanto, a função len() retorna a quantidade de elementos em algum objeto, como notas tem três elementos então a len(notas) é igual a 3, a média vai ficar assim soma/3. Finalizando temos que dizer se o sujeito passou..., "aaaa" facim, é mesmo; então para isso usamos a estrutura de decisão conhecida por todos o if, elif, else, assim: if(se) media > 7.0 e media < 10: mostramos Aprovado e a média do sujeito, elif(senão se) média < que 7.0 mostramos Reprovado e a média do sujeito, e caso nada disso aconteça so sobrou uma nota que é 10 então else(senão) mostramos Aprovado com distinção e a média que obviamente é 10. "uuufaaa" terminamos..

É isso pessoal, gostaram? se tiverem dúvidas, sugestões... postem aqui ou mandem email, até a próxima.

2 comentários: