[Curso de Python] Conhecendo o for... in...
27 de Janeiro de 2010, 0:00 - sem comentários aindaAntes de prosseguir leia os artigos anteriores aqui.
Olá pessoal! Hoje vamos ver mais uma modalidade de laço de repetição: for.
Esse laço é o mais utilizado em Python. O laço while na verdade é utilizado somente em alguns casos especiais, que o for não conseguiria resolver. Vamos deixar de papo e ir logo ao assunto!
Conhecendo o for... in...
O laço for, diferente do laço while, não utiliza uma condição. Ele precisa somente de um argumento iterável e de uma variável para repassar o item de cada iteração. O for sempre trabalha em conjunto com a instrução in. A sua estrutura básica é a seguinte:
Vamos a um exemplo no modo interativo do Python:Código:for VARIAVEL in ITEM_ITERAVEL: FAZ_ALGO
O laço for, para quem está acostumado com o for de C/C++, chega a ser um absurdo, algo irreal. Eu também tive essa sensação! Sugiro a todos fazer como eu fiz, aceitar que o for magicamente sabe onde a variável iteravel começa e termina. Dessa mesma forma sobre natural, a cada iteração o for pega um ítem da lista e joga dentro da variável item.Código:>>> lista = ['este', 'e', 'um', 'teste'] >>> for item in lista: ... print item ... este e um teste >>>
Pronto, é assim que o for funciona. Ele reduz espantosamente o esforço do programador, identificando o inicio e o fim do objeto iterável e repassando cada item desse objeto em uma variável previamente prevista. Com o for você praticamente esquece que a função len() existe.
O for serve também para fazer iteração em strings. Conforme abaixo:
Como podem ver podemos alterar livremente a variável para um nome que seja compatível a um item que estamos iterando. Por exemplo, se vamos iterar sobre uma lista de palavras, identificamos a variável como palavra. Se vamos iterar sobre uma lista que contêm todos os meses do ano, vamos utilizar uma variável com o nome mês, e assim sucessivamente.Código:>>> texto = \\"este e um teste!\\" >>> for letra in texto: ... print '->',letra ... -> e -> s -> t -> e -> -> e -> -> u -> m -> -> t -> e -> s -> t -> e -> ! >>>
É isso ai pessoal. Por hoje é só! Vamos conhecer o for aos poucos.
[Curso de Python] Mais Sobre as Estruturas While
21 de Janeiro de 2010, 0:00 - sem comentários aindaAntes de prosseguir leia os artigos anteriores aqui
Bom dia a todos! Finalmente, estamos quase completando os estudos com a estrutura while. Já vimos praticamente todas as instruções que se aliam a ela: continue, break e o else.
Vou mostrar hoje alguns exemplos da estrutura while de forma mais complexa e depois vou deixar alguns exercícios. Postem os resultados, ok?!
Mais Sobre as Estruturas While
Agora que já conhecemos diversas instruções que alteram o comportamento da estrutura while vale a pena comparar sua utilidade. Vamos começar com um exemplo simples:1. Buscar a primeira ocorrência de uma letra dentro de uma string passada pelo usuário. Deve ser informada a posição dessa ocorrência ou, caso não exista uma ocorrência, deve ser impresso um texto informando que a letra buscada não foi encontrada.Vou resolver esse exercício de duas formas, uma será usando apenas o while, a outra será usando as instruções continue, break e else. No final iremos comparar os dois códigos.
Resolução 1
Nesse exemplo, logo no início, eu fiz uma verificação para confirmar que o usuário tinha passado uma letra. Caso o tamanho de 'letra' fosse maior que zero teríamos o problema de comparar uma palavra com uma letra.Código:# Recebe a string texto = raw_input('Favor informar uma string: ') # Recebe a letra que será buscada na string letra = raw_input('Favor informar uma letra para buscarmos: ') # Vamos verificar se por acaso o usuário não passou mais de uma # letra. Para isso verificamos o comprimento com a função len. if len(letra) > 1: print 'Foi informado a palavra',letra,'.' # Pega somente a primeira letra da palavra letra = letra[0] print 'Sera considerado apenas a primeira letra:', letra n = 0 encontrada = False while n < len(texto): # Pega a letra na posição n letra_texto = texto[n] # incrementa n para a próxima iteração do loop n = n + 1 if letra_texto == letra: print 'encontrada a letra',letra,'na posicao',(n-1) # Prepara para parar o loop encontrada = True if encontrada: # Como o while testa se n é menor que o comprimento do texto, # para parar o while basta alterar n para o comprimento do text # dessa fora, essa será a última iteração do loop. n = len(texto) if encontrada == False: # Se 'encontrada' é falso, quer dizer que não foi encontrada print 'Nao foi possivel encontrar a letra',letra print '\n'
A execução mostra o seguinte comportamento:
Resolução 2Código:$ ./busca_letra Favor informar uma string: este e um teste Favor informar uma letra para buscarmos: u encontrada a letra u na posicao 7 $ ./busca_letra Favor informar uma string: este e um teste Favor informar uma letra para buscarmos: uma Foi informado a palavra uma . Sera considerado apenas a primeira letra: u encontrada a letra u na posicao 7 $ ./busca_letra Favor informar uma string: este e um teste Favor informar uma letra para buscarmos: z Nao foi possivel encontrar a letra z
Agora vamos ver como re-escrever o código acima utilizando as instruções que aprendemos:
Podemos verificar, rapidamente, que o codigo reduziu de tamanho. Outra coisa é que utilizamos uma variável a menos, a variável 'encontrada'. Isso implica em menos memória e menos processamento para alocar e desalocar essa variável.Código:# Recebe a string texto = raw_input('Favor informar uma string: ') # Recebe a letra que será buscada na string letra = raw_input('Favor informar uma letra para buscarmos: ') # Vamos verificar se por acaso o usuário não passou mais de uma # letra. Para isso verificamos o comprimento com a função len. if len(letra) > 1: print 'Foi informado a palavra',letra,'.' # Pega somente a primeira letra da palavra letra = letra[0] print 'Sera considerado apenas a primeira letra:', letra n = 0 while n < len(texto): # Pega a letra na posição n letra_texto = texto[n] # incrementa n para a próxima iteração do loop n = n + 1 if letra_texto == letra: print 'encontrada a letra',letra,'na posicao',(n-1) # Vamos quebrar o while. break else: # Só atingiremos caso o while tenha chegado ao fim print 'Nao foi possivel encontrar a letra',letra
Agora, analisando o código, pode surgir uma dúvida quanto ao break e o else. O else só é executado se o loop terminar todas as iterações. Como o break 'quebra' o loop quando a letra é encontrada, o else não é executado. Com isso fica fácil estruturar o programa para indicar que a letra não foi encontrada.
Exercícios
Agora uns exercícios para vocês. Tentem usar as instruções continue, break e else em todos os exemplos.1: Fazer um programa que busca em um texto, passado pelo usuário, todas as ocorrências de uma letra. Caso não seja encontrado, informar que não foi encontrado a letra buscada.
2: Fazer um programa que recebe palavras do usuário e informe o comprimento da palavra. O programa só deve para quando o usuário digitar a palavra 'pare'.
Desafio: Criar um código que organize a seguinte lista: [3, 4, 2, 1, 5]
França e Alemanha Recomendam a Suspensão do Uso do IE
19 de Janeiro de 2010, 0:00 - sem comentários aindaComo consequência da declaração de que uma falha no IE foi utilizada para atacar as contas de e-mail do Google, os governos Francês e Alemão estão recomendando aos seus cidadãos que deixem de usar o IE 5, 6 e 7 nos sistemas operacionais WindowsXP, Vista e 7.
Na última sexta-feira, dia 15/01, a Secretaria Federal para Segurança na Tecnologia da Informação (BSI) alemã alertou os seus cidadão e desencorajou o uso do IE 6, 7 e 8 pois estes, mesmo navegando no "modo seguro" ou desabilitando scripts, possibilita a realização de ataques [1].
O Centro de Avaliação Governamental de Resposta e Tratamento de Ataques de Informática (CERTA) se juntou ao governo alemão nessa segunda-feira, dia 18/01, ao orientar os cidadãos franceses a buscarem outras alternativas ao IE [2].
Cliff Evans, chefe de segurança e privacidade do IE, em uma entrevista à BBC [2] declarou que todos devem migrar para o IE8 pois este é o "navegador mais seguro do mercado" e que até o momento só existem códigos maliciosos para o IE6. Cliff Evans afirmou também que "o risco é mínimo" pois para ser atacado o usuário deve visitar uma página maliciosa e "existem poucas dessas páginas pela internet"
Depois de anos de campanha para que o IE fosse abandonado por diversos motivos e foi necessário algo maior para fazer com que as pessoas abram os olhos e vejam que não era apenas bobeira de nerds e geeks. Será que dessa vez o IE morre de vez?
Saiba Mais:
[1] Warning over using Internet Explorer from German Government as exploit goes public - The H Security: News and Features
[2] BBC News - France joins Germany warning against Internet Explorer
Notícias Relacionadas:
- IE Foi Vetor Para Ataque ao Google