Ir para o conteúdo
ou

Software livre Brasil

Magnun

Nenhum artigo selecionado ainda.
Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

[Curso de Python] Correção - Funções com Argumentos

24 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Antes de prosseguir leia os artigos anteriores aqui.


Dessa vez dois colegas apresentaram soluções (PEdroArthurJEdi e o neiesc). Cada um abordou o problema de uma forma. Como ainda estamos estudando o básico do Python, vou adotar uma solução mais simplista e que se utiliza somente das noções básicas de programação.


1.
Faça uma programa que utilize uma função para calcular a média dos alunos do dicionário a baixo:

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]}

Dica: Crie uma função que tenha como argumento um lista de notas.

Código da solução:
Código PHP:
def calcula_media(notas):
    
total 0
    tamanho 
0
    
for nota in notas:
        
total += nota
        tamanho 
+= 1

    total 
float(total)/tamanho
    
print 'Media:'total

for aluno in notas:
    print 
'Aluno',aluno,
    
calcula_media(notas[aluno]) 
Saída do programa:
Código:
Aluno aluno1 Media: 5.33333333333
Aluno aluno3 Media: 6.66666666667
Aluno aluno2 Media: 7.0
Aluno aluno5 Media: 4.66666666667
Aluno aluno4 Media: 7.33333333333
Aluno aluno6 Media: 6.0
2. Faça uma função que calcule o quadrado de uma dado número. Exemplo:
Código:
>>> quadrado(2)
4
>>> quadrado(4)
16
>>> quadrado(3)
9
Código da solução:
Código:
>>> def quadrado(numero):
...     print numero**2
...
>>> quadrado(2)
4
>>> quadrado(4)
16
>>> quadrado(5)
25
>>> quadrado(3)
9
>>>
3. Faça uma função que encontre o maior número de uma determinada lista. Teste-a com as listas a baixo:
Código:
l1 = [1, 2, 3]
l2 = [2,7,5,3]
l3 = [7,3,9,5]
l4 = [0, 1, -1]
l5 = [-4, -2, -6]
Código da solução:
Código PHP:
def maior(lista):
    
maior_n lista[-1]
    for 
numero in lista:
        if 
numero maior_n:
            
maior_n numero
    
print 'Maior numero em',lista,':',maior_n

maior
([123])
maior([2,7,5,3])
maior([7,3,9,5])
maior([01, -1])
maior([-4, -2, -6]) 
Execução do programa:
Código:
Maior numero em [1, 2, 3] : 3
>>> maior([2,7,5,3])
Maior numero em [2, 7, 5, 3] : 7
>>> maior([7,3,9,5])
Maior numero em [7, 3, 9, 5] : 9
>>> maior([0, 1, -1])
Maior numero em [0, 1, -1] : 1
>>> maior([-4, -2, -6])
Maior numero em [-4, -2, -6] : -2


[Curso de Python] Funções com Argumentos

17 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Antes de prosseguir leia os artigos anteriores aqui.



No último post sobre funções em Python eu mostrei o básico do básico com as funções. De uma certa forma aquela abordagem é errada e deve ser evitada. Ainda não irei explicar exatamente o porque pois isso depende de um conceito de variáveis locais e globais que eu estarei explicando após ensinar os argumentos das funções.


Funções com Argumentos



As funções se tornam praticamente inúteis se não forem utilizados os argumentos. Mas antes de mais nada, o que é um argumento?

Um argumento é uma variável passada para um função. Dessa forma a função se utiliza desse argumento para trabalhar. Vamos ver um exemplo:

Código PHP:
>>> def ola(nome):
...     print 
'Ola',nome
...
>>>
>>> 
ola('joão')
Ola joão
>>> ola('Maria')
Ola Maria
>>> ola('José')
Ola José
>>> 
Ao definir a função 'ola' eu informei que seria passado um argumento chamado 'nome' e que a função deveria imprimir a palavra 'ola' seguida pelo conteúdo da variável nome. Para quem já trabalhou com outras linguagens como C, C++ ou Java, isso parece algo absurdo pois não foi especificado o tipo da variável. Como vimos a muito tmepo atrás, o Python possui tipagem dinâmica. Com isso não é necessário informar o tipo da variável no argumento.

Esse comportamento pode ser vantajoso ou não, depende do desenvolvedor. O desenvolver Python geralmente é um programador disciplinado, ou seja, suas funções são concisas e bem definidas evitando problemas com o tipo do argumento. A baixo um exemplo de algo que devemos ter cuidado para não ocorrer:

Código PHP:
>>> def ola(nome):
...     print 
'Ola',nome
...
>>>
>>> 
ola('joão')
Ola joão
>>> ola(12)
Ola 12
>>> ola([1,2,3])
Ola [123]
>>> 
Por enquanto não se preocupem com esses problemas, eu irei mostrar uma forma de evitar esse tipo de ocorrências num futuro próximo. Por enquanto vamos ver alguns exemplo de funções.

Vamos fazer uma função que busque uma determinada letra dentro de uma frase:
Código PHP:
def conta_letra(letra_esperadafrase):
    
contador 0
    
for letra in frase:
        if 
letra == letra_esperada:
            
contador += 1
    
print 'Foram encontradas',contador,'ocorrências da letra',letra_esperada

conta_letra
('a''este e um teste')
conta_letra('e''este e um teste')
conta_letra('m''mais uma vez')
conta_letra('s''mais uma vez'
Execução do código:
Código:
Foram encontradas 0 ocorrências da letra a
Foram encontradas 5 ocorrências da letra e
Foram encontradas 2 ocorrências da letra m
Foram encontradas 1 ocorrências da letra s
Como podemos ver, uma função pode ter um ou mais argumentos. Nesse exemplo nossa função possui dois argumentos, uma letra e uma frase. A função percorre todas as letras da frase informada e conta quantas vezes a letra esperada aparece na frase. No final ela imprime o resultado da contagem.

Criar a função dessa forma é uma grande vantagem pois se podemos contar qualquer letra em qualquer frase. Se criássemos uma função que conta a letra 'a' e precisássemos de uma função que conta as ocorrências da letra e, teríamos que uma nova função. Isso é algo que deve ser planejado pelo programador. Devemos sempre tentar criar funções que sejam adaptáveis e reutilizáveis.


Exercícios:
1. Faça uma programa que utilize uma função para calcular a média dos alunos do dicionário a baixo:
Código:
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]}
Dica: Crie uma função que tenha como argumento um lista de notas.


2. Faça uma função que calcule o quadrado de uma dado número. Exemplo:
Código:
>>> quadrado(2)
4
>>> quadrado(4)
8
>>> quadrado(3)
9
3. Faça uma função que encontre o maior número de uma determinada lista. Teste-a com as listas a baixo:
Código:
l1 = [1, 2, 3]
l2 = [2,7,5,3]
l3 = [7,3,9,5]
l4 = [0, 1, -1]
l5 = [-4, -2, -6]


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

16 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

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...


[Curso de Python] Introdução à Funções em Python

10 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Antes de prosseguir leia os artigos anteriores aqui.



Olá pessoal!

A alguns dias concluímos o aprendizado básico de controle de fluxo usando o if, elif, else, while e o for. Agora vamos aprender a trabalhar com funções, uma outra estrutura que serve para controle de fluxo de um programa.


OIntrodução às Funções em Python



Definição: Uma função é um bloco de código que recebe a designação de um nome. Ela também possui parâmetros e argumentos e retornam um valor.

Como essa primeira parte é apenas introdutória vamos ver o básico de funções, nada de argumentos/parâmetros e nada de retornar valores.

O Python possui diversas funções predefinidas, algumas já até vistas por nos. Essas funções são comumente classificadas como built-in functions. Em um post futuro irei abordar as funções built-in mais importantes, por enquanto vamos aprender a como criar nossas próprias funções.


Defininado uma função

As funções em Python são definidas usando a palavra-chave def. Após o def inserimos o nome da função e um par de parênteses e dois pontos (:). Os dois pontos são fundamentais para a definição de uma função.

Assim como o while, o for o if, elif e o else os dois pontos definem o início de um novo bloco de código que obrigatoriamente deve ser identado. Vamos ver um exemplo:

Código PHP:
def ola():
    print 
'Olá mundo!'

ola()
ola()
ola() 
Execução do programa:
Código:
Olá mundo!
Olá mundo!
Olá mundo!
As funções são muito úteis para "compactar" um código. O nome correto disso é reutilização de código, é algo fundamental para um programador. Vamos ver um exemplo de reutilização de código. Vamos supor que precisamos de um programa que conte quantas vezes a letra aparece nas palavras ('teste', 'reutilizacao', 'codigo'). Para tornar essa necessidade mais explícita não podemos usar nenhuma forma de loop.

Primeiramente vamos ver uma resolução desse problema sem a utilização de funções:
Código PHP:
palavra 'teste'
contador 0
for letra in palavra:
    if 
letra == 'a':
        
contador += 1

print 'Na palavra',palavra,'exitem',contador,'ocorrencias da letra a'


palavra 'reutilizacao'
contador 0
for letra in palavra:
    if 
letra == 'a':
        
contador += 1

print 'Na palavra',palavra,'exitem',contador,'ocorrencias da letra a'


palavra 'codigo'
contador 0
for letra in palavra:
    if 
letra == 'a':
        
contador += 1

print 'Na palavra',palavra,'exitem',contador,'ocorrencias da letra a' 
Execução do código:
Código:
Na palavra teste exitem 0 ocorrencias da letra a
Na palavra reutilizacao exitem 2 ocorrencias da letra a
Na palavra codigo exitem 0 ocorrencias da letra a
Agora vamos rever como refazer o código acima utilizando funções:
Código PHP:
def busca_letra():
    
contador 0
    
for letra in palavra:
        if 
letra == 'a':
            
contador += 1
    
print 'Na palavra',palavra,'exitem',contador,'ocorrencias da letra a'

palavra 'teste'
busca_letra()
palavra 'reutilizacao'
busca_letra()
palavra 'codigo'
busca_letra() 
Execução do código:
Código:
Na palavra teste exitem 0 ocorrencias da letra a
Na palavra reutilizacao exitem 2 ocorrencias da letra a
Na palavra codigo exitem 0 ocorrencias da letra a
Podemos ver que ambos possuem a mesma saída, mas (depois que se acostuma com as funções) o segundo exemplo é extremamente mais legivel.

Além de tornar um código mais legível, a reutilzação de código permite que o programa seja reformulado com mais facilidade. Por exemplo, se quisermos que ao invés de buscar a letra 'a' seja buscada a letra 'c', no primeiro exemplo teríamos que alterar 3 linhas de código, já no segundo exemplo, basta alterar uma linha.

Sei que isso pode parecer pouco, mas em um programa realmente complexo isso pode ser a diferença entre alterar 4 linhas ou 52 linhas distribuídas em 10 arquivos diferentes.

Como esta é apenas uma introdução às funções não vou deixar nenhum exercício, até mesmo porque usar uma função desta forma que mostrei não é a melhor das opções.
Até mais...


[Curso de Python] O for e Outras Palavras Mais

8 de Junho de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Antes de prosseguir leia os artigos anteriores aqui.



Olá pessoal!! Retomando os posts desse curso de Python, se é que alguém ainda lembra quem eu sou...



O For e Outras Palavras Mais



Assim como o while, o for também pode ser associado a algumas palavras que o tornam mais útil. Então aqui vamos ver como usar o for em conjunto com as instruções break e else. Como todos esses já foram explicados utilizando a estrutura while não vou aprofundar muito no funcionamento desses, vou apenas mostrar alguns exemplos de implementação e deixar alguns exercícios.


A instrução break

A instrução break, conforme visto anteriormente, é útil para interromper abruptamente um loop. Para exemplificar vamos fazer um loop que procura a primeira ocorrência de um mesmo número dentro de duas listas.

Código:
lista1 = [1,2,3]
lista2 = [7, 5, 3, 4, 1]

for item1 in lista1:
    print 'procurando por',item1,'...'
    for item2 in lista2:
        print '\t',item1,'==',item2,'??',
        if item1 == item2:
            print ' Sim!'
            break
        else:
            print ' Não'
Output gerado:
Código:
procurando por 1 ...
        1 == 7 ??  Não
        1 == 5 ??  Não
        1 == 3 ??  Não
        1 == 4 ??  Não
        1 == 1 ??  Sim!
procurando por 2 ...
        2 == 7 ??  Não
        2 == 5 ??  Não
        2 == 3 ??  Não
        2 == 4 ??  Não
        2 == 1 ??  Não
procurando por 3 ...
        3 == 7 ??  Não
        3 == 5 ??  Não
        3 == 3 ??  Sim!
Coloquei muitos print para mostrar que o break impede que a lista2 seja percorrida totalmente.



A instrução else

Podemos ver que eu gerei muito output pra tornar o fluxo compreensivo além de não ter percebido que o número 2 não foi encontrado na lsita2. Com a ajuda da instrução else, podemos simplificar esse output e também detectar que o numero 2 não foi encontrado.
Código:
lista1 = [1,2,3]
lista2 = [7, 5, 3, 4, 1]

for item1 in lista1:
    print 'procurando por',item1,':',
    for item2 in lista2:
        if item1 == item2:
            print 'Encontrado!'
            break
    else:    
        print 'Não encontrado...'
Output gerado:
Código:
procurando por 1 : Encontrado!
procurando por 2 : Não encontrado...
procurando por 3 : Encontrado!
Exercícios
A título de fixação deixo alguns exercícios:
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:
faltas = {'aluno1':2, 'aluno2':3, 'aluno3':7, 'aluno4':11, 'aluno5':0, 'aluno6':10}
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:
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]}


Tags deste artigo: python linux arch programação desenvolvimento vim