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

01.def tira_vogais(cadeia):
02.    """Retira as vogais e substitui por um espaço em branco.
03.    """
04.    vogais ='aeiou'
05.    nova_cadeia =''
06.    for conta in range(len(cadeia)):
07.        if cadeia[conta] in vogais:
08.            nova_cadeia = nova_cadeia + ' '
09.        else:   
10.            nova_cadeia = nova_cadeia + cadeia[conta]
11.    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.

01.def tira_vogais_b(cadeia):
02.    """Retira as vogais e substitui por um espaço em branco.
03.    """
04.    vogais ='aeiou'
05.    nova_cadeia =''
06.    for car in cadeia:
07.        if car in vogais:
08.            nova_cadeia = nova_cadeia + ' '
09.        else:   
10.            nova_cadeia = nova_cadeia + car
11.    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