Antes 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]
[Curso de Python] Mais Sobre as Estruturas While
21 de Janeiro de 2010, 0:00 - sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 256 vezes
0sem comentários ainda