sexta-feira, 9 de outubro de 2009

Problema 2.13

Pretende-se um programa que dada uma cadeia de caracteres substitua todas as ocorrências de vogais por espaços em branco.


import string
def retira_vogais(cad):
"""
Retira as vogais numa cadeia, substituindo-as por espaços em branco.
"""
vogais = 'aeiou'
for ch in vogais:
cad = string.replace(cad,ch,' ')
return cad

Programa que usa o método definido para cadeias replace. A estratégia é simples: um ciclo em que ch vai sendo sucessivamente associado a uma vogal. Em cada passagem pelo ciclo for são retiradas as ocorrências da vogal (linha 8).

5 comentários:

  1. Só dois reparos:

    1º - Apenas por uma questão de segurança, a cadeia vogais deveria ter letras maiúsculas (vogais = 'aeiouAEIOU').

    2º - Não será necessário importar o módulo string se em vez de utilizarmos cad = string.replace(cad,ch,' '), utilizarmos cad = cad.replace(ch,' ')

    ResponderEliminar
  2. Milton:

    1- é verdade. alternativa. Antes de vogais = ... colocar cad.lower().

    2- São duas formas equivalentes de fazer. Ambas possíveis. No seu caso usa métodos enquanto eu me fico por funções.

    ResponderEliminar
  3. 3- há sempre a solução complicada mas pode ser que sirva para tirar ideias a alguém:

    def d213(a):
    . i=0
    . newa = ""
    . for i in range(len(a),):
    .. if "AEIOU".find(a[i].upper()) >=0:
    ... newa = newa + " "
    .. else:
    ... newa = newa + a[i]
    . return newa

    ResponderEliminar
  4. Professor, porderíamos fazer deste modo?

    def substituir(palavra):
    vogais = [ 'a' , 'e' , 'i' , 'o' , 'u' ]
    for i in range(len(palavra)):
    if palavra[i] in vogais:
    palavra = palavra.replace(palavra[i],' ')
    return palavra

    ResponderEliminar
  5. Mafalda: podia sim senhor. Atenção no entanto ao caso de ter maiúsculas e minúsculas. Deve passar a palavra a minúsculas (no seu caso).

    ResponderEliminar