sexta-feira, 7 de outubro de 2011

Problema 2.8

Retirar as vogais de uma cadeia de caracteres e substituir as vogais por um espaço em branco. Para resolver esta questão percebemos que vamos ter que repetir para todos os caracteres um teste para saber se é ou não uma vogal, substituindo no caso afirmativo por um espaço em branco. A solução vai assim ter que combinar um ciclo (for é a nossa opção e esperamos que perceba porquê), com um filtro implementado graças a uma instrução if de duas vias (alternativas).


def tira_vogais(cadeia):
"""Retira as vogais e substitui por um espaço em branco.
"""
vogais ='aeiou'
nova_cadeia =''
for conta in range(len(cadeia)):
if cadeia[conta] in vogais:
nova_cadeia = nova_cadeia + ' '
else:
nova_cadeia = nova_cadeia + cadeia[conta]
return nova_cadeia


Notar, na solução acima, como conseguimos evitar testes complexos com todos os caracteres, substituindo esses teste por uma única instrução de pertença.

Ainda se pode melhorar o programa introduzindo uma ideia nova: podemos percorrer a cadeia de caracteres pelos valores em vez de ser pelos índices! Durante o curso aprofundaremos esta ideia.


def tira_vogais_b(cadeia):
"""Retira as vogais e substitui por um espaço em branco.
"""
vogais ='aeiou'
nova_cadeia =''
for car in cadeia:
if car in vogais:
nova_cadeia = nova_cadeia + ' '
else:
nova_cadeia = nova_cadeia + car
return nova_cadeia

2 comentários:

  1. Devemos portanto assumir que o objectivo do exercício é usar a concatenação de strings, e não explorar as soluções que os métodos do python nos oferece?

    ResponderEliminar
  2. Certo. Também mostra que o facto de as cadeias serem objectos imutáveis, obriga-nos a fabricar a solução do modo indicado.

    ResponderEliminar