Mundo 2, exercício 53 – detector de palíndromo.

Home Fóruns Python Mundo 2, exercício 53 – detector de palíndromo.

Visualizando 2 respostas da discussão
  • Autor
    Posts
    • #85731
      Gabriel Borba
      Participante

      Boa noite a todxs!!!

      Por gentiliza, uma dúvida sobre duas linhas de programação no exercício 53, sobre detecção de palíndromos:
      Gostaria que reforçassem as finalidades das:
      linha 4: inverso = ”
      linha 6: inverso = inverso + junto[letra]

      Fiquei confuso com estas duas linhas, sobretudo com a parte “junto[letra]”

      PROGRAMA:

      1- frase = str(input(‘Digite uma frase: ‘)).strip().upper()
      2- palavras = frase.split()
      3- junto = ”.join(palavras)
      4- inverso = ”
      5- for letra in range(len(junto)-1, -1, -1):
      6- inverso = inverso + junto[letra]
      7- print(‘O inverso de {} é {}.’.format(junto, inverso))
      8- if junto == inverso:
      9- print(‘Neste caso, TEMOS um palíndromo!’.format(frase))
      10- else:
      print(‘Neste caso, NÃO é um palíndromo!’.format(frase))

      Obrigado!
      Att,
      Gabriel.

    • #85756
      IcaroFilho
      Moderador

      Bom dia Gabriel,
      Para entender estas linhas, deve-se entender as anteriores.

      1- Obtenção da string
      2- Torna a string em uma lista de strings ( com cada palavra em um índice )
      3- Junta as palavras dentro da lista em uma única string
      4- Cria uma variável vazia inverso = ""
      5- laço invertido
      6- a variável vazia vai receber ela mesmo mais a adição da letra vinda da string criada ( juntando todos os elementos da lista )
      <small>Ou seja, vai montar uma string invertida. OBS: Existem outras maneiras até mais simples, mas estes métodos possuem esta por de baixo dos panos</small>

      Caso não tenha ficado claro, diga qual a duvida que persiste que tentarei ser mais claro.

    • #86006
      Gabriel Borba
      Participante

      Olá! Obrigado pela explicação!

      Talvez tenha clareado. Vamos ver:
      Então, inverso =’ ‘, é um contador? Que vai recebendo literalmente letra por letra da string invertida que foi criada na linha 5?

      4- inverso = ‘ ‘
      5- for letra in range(len(junto)-1, -1, -1):
      6- inverso = inverso + junto[letra]

      • #86120
        IcaroFilho
        Moderador

        não e sim
        O inverso não é uma varável contadora, é uma variável acumuladora. seu papel é acumular os dados vindos de outro lugar.
        Quanto a sua segunda parte, também esta parcialmente certa

        Na verdade [letra] não é uma letra e sim uma posição (índice).
        A variável junto é na verdade a lista de letras.
        quando passamos junto[letra] , estamos passando a ideia de lista[indice], que no final das contas irá retornar a letra.
        e a cada laço o acumulador vai pegando e mantendo cada letra vinda do laço.

        caso ainda não tenha ficado claro, por favor pergunte.
        não fique com duvida.
        Bons estudos

Visualizando 2 respostas da discussão
  • Você deve fazer login para responder a este tópico.