Neste problema é-nos pedido para apresentar todos os prefixos de uma cadeia de caracteres, um por linha. Podemos apresentar o de comprimento 1 primeiro, o de comprimento 2 a seguir, e assim sucessivamente. Temos pois uma acção repetitiva, o que indica que necessitamos de recorrer a um ciclo. Em cada etapa do ciclo é preciso saber onde
termina o prefixo, visto sabermos que o início é sempre na primeira posição. Existem duas questões então a resolver: a contagem do número de vezes que vamos andar a repetir e, outra questão, controlar a cada momento o fim do prefixo. Acontece que estas duas questões se podem resolver de modo articulado. Olhemos então para uma solução possível.
def prefixos(cadeia):
"""Determina todos os prefixos de uma cadeia de caracteres.
"""
conta = 0
while conta < len(cadeia):
print cadeia[:conta+1]
conta = conta + 1
Este padrão de contagem é tão comum que pode ser substituído de modo muito simples recorrendo à instrução de controlo
for.
def pref(cadeia):
for conta in range(len(cadeia)):
print cadeia[:len(cadeia) - conta]
Mas também podemos apresentar os prefixos por ordem decrescente do seu tamanho.
Podemos, finalmente, mudar o problema, porv forma a que o resultado sejam os
sufixos
def sufixos(cadeia):
for conta in range(len(cadeia)):
print cadeia[- (conta + 1):]
Sem comentários:
Enviar um comentário