Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Correção: Estruturas For Aninhadas

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui.



Olá pessoal!! Depois de uma sumida pra conseguir lançar um dos meus projetos, estou retomando o curso. A um tempo deixei uns exercícios mas não corrigi. Logo... vamos corrigi-los!



Correção: Estruturas For Aninhadas



1. O dicionário abaixo representa uma lista de alunos (chaves) e suas notas (valores). Percorra esse dicionário e calcule a média de cada aluno imprimindo o nome do aluno seguido de sua nota.
alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]}


Esse exercício é muito divertido e simples. A grande sacada está em lembrar de usar o método items() em conjunto com o for. Vamos ver o código.

Código :
alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]}
for aluno,notas in alunos.items():
    media = 0
    for nota in notas:
        media += nota
    media = float(media) / len(notas)
    print \"Aluno:\",aluno
    print \"Média:\",media
    print
Nada muito complexo. Declaramos o dicionário com os alunos, e já vamos para o for. Nele "desempacotamos" as variáveis aluno (string) e a variável notas (lista de números). É importante notar que esse "desempacotamento" só é possível porque usamos o método items(), caso contrário só seria possível obter o nome do aluno. Depois criamos um novo for, que irá pegar cada nota dentro de notas. Esse for simplesmente soma todas notas do aluno. Depois desse for podemos dividir pelo comprimento da variável notas, assim obtemos a média!


2. Repita o exercício 1 informando, ao final de tudo, a média da turma.

Código :
alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]}
media_turma = 0
for aluno,notas in alunos.items():
    media = 0
    for nota in notas:
        media += nota
    media = float(media) / len(notas)
    media_turma += media
    print \"Aluno:\",aluno
    print \"Média:\",media
    print
 
media_turma = float(media_turma)/len(alunos)
print \"Media da turma:\",media_turma
Aqui bastou adicionar uma outra variável com o nome media_turma. Nela somamos todas as médias e depois dividimos pelo número de alunos.


3. Repita o exercício 2 informando quais alunos foram aprovados (média deve ser maior ou igual a 6).

Código :
alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]}
media_turma = 0
for aluno,notas in alunos.items():
    media = 0
    for nota in notas:
        media += nota
    media = float(media) / len(notas) 
    media_turma += media
    print \"Aluno:\",aluno
    if media < 6:
        print \"Média:\",media,\"(Reprovado)\"
    else:
        print \"Média:\",media
    print
 
media_turma = float(media_turma)/len(alunos)
print \"Media da turma:\",media_turma
Para resolver esse, bastou adicionar um if verificando se a nota é menor que 6 (de 0 até 5.9).

Até mais...

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

Categorias
Python , Cursos , Curso de Python

Comentários

  1. Avatar de lord4rk
    Ola Magnun!!
    Pow cara ficou bem simples... eu quase acertei eu usei o items()

    Código :
    for aluno in alunos.items():
        print aluno
     
    ('fulano', [6, 7, 5, 2])
    ('sicrano', [7, 8, 9, 8])
    ('beltrano', [10, 9, 10, 10])
    Afff... que simples, ai nem sai do primeiro!!



    []'s
    Jr.
  2. Avatar de Magnun
    Normal cara!! o início é sempre assim, aos poucos agente vai pegando o jeito.
  3. Avatar de silvanofideles
    media_turma = float(media_turma)/len(alunos)

    só para tirar dúvidas, em seu código não haveria a necessidade do "float" nesta linha, pois,
    a mesma já está na variavel "media".

    Procede o pensamento ????
  4. Avatar de Magnun
    Correto silvanofideles, não é necessário.
  5. Avatar de fabraga
    Citação Postado originalmente por Magnun
    Correto silvanofideles, não é necessário.
    Acho que era mais ou menos isso que o "silvanofideles" comentou que eu ia perguntar - com relação ao uso do "float()". O programa ficaria mais simples (e relativamente mais rápido, exigindo ao processador uma operação a menos) se ao invés de usar o float() eu apenas declaresse a variável com 0.00 ??

    Código PHP:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    # Media de notas dos alunos

    alunos={'Fulano':[6,7,5,2],'Sicrano':[7,8,9,8],'Beltrano':[10,9,10,10]}

    m_turma 0.00 
    for aluno,notas in alunos.items():
        
    media 0.00 
        
    for nota in notas:
            
    media += nota
        media 
    /= len(notas)
        
    m_turma += media 
        
    print("Nome:",aluno,"\t- Média: %.2f"%media,"(Reprovado)" if media<else "")

    m_turma /= len(alunos)
    print(
    "\nMédia da turma: %.2f"%m_turma
    Obrigado!
  6. Avatar de Magnun
    Também está correto. Mas como estou abordando o Python para iniciantes na programação achei melhor deixar explícito essa conversão.
  7. Avatar de deathglory
    Código :
    # -*- coding = utf-8 -*-
    #Calcula média dos valores do dicionário
    alunos = {'fulano':[6,7,5,2],'sicrano':[7,8,9,8],'beltrano':[10,9,10,10]}
    soma = 0.0
    soma_a = 0.0
    media_t = 0.0
    for aluno in alunos.keys():
        tam = len(alunos[aluno])
        for nota in alunos[aluno]:
            soma = soma + nota  
        media_a = float(soma)/tam
        if media_a >= 6.0:
            print ('%s: %.2f --> Aprovado' % (aluno, media_a))
        else:
            print ('%s: %.2f --> Reprovado' % (aluno, media_a))
        soma_a = soma_a + media_a 
        soma = 0.0
    media_t = float(soma_a)/len(alunos.keys())    
    print ('Média da turma é: %.2f' % media_t)

+ Enviar Comentário