Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Correção - O for e Outras Palavras Mais

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui.



No último post eu deixei alguns exercícios a serem resolvidos. O nosso colega neiesc postou uma solução que pode ser conferida aqui.

A solução dele foi bem interessante mas utilizou algumas funções que ainda não estudamos aqui (como o sum), dessa forma vou postar uma solução somente utilizando loops for. Um pequeno detalhe que nosso colega esqueceu foi de especificar o numero como float na divisão das notas, o que pode causar certos problemas em um programa.

Vamos às soluções.

1. Dado o dicionário abaixo, faça programa que verifique qual dos alunos foi reprovado por falta. O critério de reprovação é ter mais faltado mais de 10 vezes.

Código:
Código PHP:
faltas = {'aluno1':2'aluno2':3'aluno3':7'aluno4':11'aluno5':0'aluno6':10}
for 
aluno in faltas:
    if 
faltas[aluno] > 10:
        print 
'O aluno',aluno,'foi reprovado por faltas' 
Execução:
Código :
O aluno aluno4 foi reprovado por faltas
2. Tendo o exemplo anterior como base, modifique o programa de forma que ele cruze os dados do dicionário de faltas com o dicionário de notas (a baixo) e informe se o aluno foi aprovado, usando o critério de faltas e a média de suas notas (maior que 6).

Código PHP:
faltas = {'aluno1':2'aluno2':3'aluno3':7'aluno4':11'aluno5':0'aluno6':10}

notas = {'aluno1':[5,6,5], 'aluno2':[7,8,6], 'aluno3':[6,6,8], 'aluno4':[5,9,8], 'aluno5':[5,6,3], 'aluno6':[6,6,6]}

for 
aluno in faltas:
    if 
faltas[aluno] > 10:
        print 
'O aluno',aluno,'foi reprovado por faltas'
    
else:
        
media 0
        
for nota in notas[aluno]:
            
media += nota
        media 
float(media)/3
        
if media >= 6:
            print 
'O aluno',aluno,'foi aprovado com média:',media
        
else:
            print 
'O aluno',aluno,'foi reprovado com média:',media 
Execução:
Código :
O aluno aluno1 foi reprovado com média: 5.33333333333
O aluno aluno3 foi aprovado com média: 6.66666666667
O aluno aluno2 foi aprovado com média: 7.0
O aluno aluno5 foi reprovado com média: 4.66666666667
O aluno aluno4 foi reprovado por faltas
O aluno aluno6 foi aprovado com média: 6.0
Como eu comentei, esses são exercícios simples apenas para fixação dos conceitos estudados até aqui. De agora para frente os exercícios serão bem diferentes.

Até mais...

Atualizado 01-09-2010 em 09:16 por Magnun

Categorias
Artigos , Artigos , Cursos , Curso de Python

Comentários

  1. Avatar de silvanofideles
    Magnun, gostaria de propor um dicionário a mais no exercício acima, só para compreender melhor o assuntos. Digamos que tivéssemos o dicionario abaixo e para aqueles alunos que reprovaram por media, ainda tivesse uma chance no conselho de classe com nota dos professores acima de 8. como ficaria ???

    conselho = {'aluno1':7, 'aluno2':6, 'aluno4':8, 'aluno3':9, 'aluno5':10, 'aluno6':7}
  2. Avatar de Magnun
    Olá silvanofideles, ficaria da seguinte forma:
    Código :
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
     
    faltas = {'aluno1':2, 'aluno2':3, 'aluno3':7, 'aluno4':11, 'aluno5':0, 'aluno6':10}
     
    conselho = {'aluno1':7, 'aluno2':6, 'aluno4':8, 'aluno3':9, 'aluno5':10, 'aluno6':7}
     
    notas = {'aluno1':[5,6,5], 'aluno2':[7,8,6], 'aluno3':[6,6,8], 'aluno4':[5,9,8], 'aluno5':[5,6,3], 'aluno6':[6,6,6]}
     
    for aluno in faltas:
        if faltas[aluno] > 10:
            print 'O aluno',aluno,'foi reprovado por faltas'
        else:
            media = 0
            for nota in notas[aluno]:
                media += nota
            media = float(media)/3
            if media >= 6:
                print 'O aluno',aluno,'foi aprovado com média:',media
            else:
                if conselho[aluno] >= 8:
                    print 'O aluno',aluno,'foi aprovado pelo conseho de classe'
                else:
                    print 'O aluno',aluno,'foi reprovado com média:',media
  3. Avatar de silvanofideles
    Legal, sanei minhas dúvidas, e agradeço a rápida resposta e muito mais a sua ajuda e dedicação... só tenho que te parabenizar pelo belo trabalho.
  4. Avatar de fabraga
    Não há como esse resultado sair ordenado? Tipo:

    O aluno aluno1 foi...
    O aluno aluno2 foi...
    O aluno aluno3 foi...
    O aluno aluno4 foi...
    etc.

    ??
  5. Avatar de Magnun
    Tem, utilizando um dicionário ordenado. Mas isso é um oooooutro assunto (e também só está disponível no novo Python)
  6. Avatar de fabraga
    Ok... Obrigado por responder!!

    Estarei na expectativa pelo novo Python.
    (enquanto isso continuo lendo as aulas seguintes que estão aqui mesmo ^^)
  7. Avatar de deathglory
    Código :
    # -*- coding = utf-8 -*-
      2 # Verifica se o aluno foi reprovado por faltas ou  por notas
      3 faltas = {'aluno1':2, 'aluno2':3, 'aluno3':7, 'aluno4':11, 'aluno5':0, 'aluno6':10}
      4 notas = {'aluno1':[5,6,5], 'aluno2':[7,8,6], 'aluno3':[6,6,8], 'aluno4':[5,9,8], 'aluno5':[5,6,3], 'aluno6':[6,6,6]}
      5 media = 0.0
      6 soma = 0.0
      7 for aluno_nota, valor_nota in notas.items():
      8         for aluno_falta in faltas.keys():
      9                 if aluno_nota == aluno_falta:
     10                         soma = 0.0
     11                         media = 0.0
     12                         for nota in valor_nota:
     13                                 soma += nota
     14         media = soma/len(valor_nota)
     15         if media < 6:
     16                 print ('Reprovado por Nota --> Aluno: %s Média: %f Falta(s): %d' % (aluno_nota, media, faltas[aluno_nota]))
     17         if media > 6 and faltas[aluno_nota] > 10:
     18                 print ('Reprovado por Falta --> Aluno: %s Média: %f Falta(s): %d' % (aluno_nota, media, faltas[aluno_nota]))
     19         elif media > 6 and faltas[aluno_nota] <= 10:
     20                 print ('Aprovado --> Aluno: %s Média: %f Falta(s): %d' % (aluno_nota, media, faltas[aluno_nota]))

+ Enviar Comentário