domingo, 1 de novembro de 2009

Problema 5.8

Este exercício obriga a conhecer o que nos permite o módulo random. Já sabemos: para o fazer temos que consultar a documentação ou usar o próprio sistema (comandos dir e help). Admitindo que sabemos que existe o método shuffle e o que faz, a solução é trivial. Também necessitamos saber como se pode fazer conversão de tipos entre listas (de caracteres) e cadeiras de caracteres.


import random

def baralha_palavra(palavra):
baralhada=list(palavra[1:-1])
random.shuffle(baralhada)
return palavra[0]+"".join(baralhada)+palavra[-1:]


Na linha 4 retiramos o primeiro e último elemento da palavra. Depois transformamos o resultado numa lista. Agora já podemos baralhar os caracteres. Notar que o método shuffle opera sobre listas, baralha tudo sem usar cópia (in situ) e devolve como resultado o objecto None. É por isso que não vemos nenhuma atribuição! Finalmente, devolvemos a cadeia reconstruída: o primeiro caracter, seguido da parte que foi baralhada depois de convertida para cadeia de caracteres e seguida do último caracter. Atente-se no modo como o método join é usado: primeiro o separador (neste caso a cadeia vazia) seguido do ponto, seguido de join, seguido da lista de caracteres a unir, colocada entre parênteses.

3 comentários:

  1. Professor julgo que esta é a resolução do exercício 5.8 e não do 5.7
    Caso pudesse postar tb a do problema 5.7 agradecia..
    Obrigado

    ResponderEliminar
  2. Professor, ja não é necessário postar as resolução da questão 5.7, pelo menos por minha causa, ja descobri o que me estava a faltar...

    ResponderEliminar
  3. Pois foi. enganei-me nos números.
    De qualquer modo aqui deixo a solução para o 5.7:

    def soma_3(lista):
    ... return sum(lista[1::3])

    ResponderEliminar