Jump to content
crislanio_macedo

palíndrome em python funcional

Recommended Posts

crislanio_macedo

Olá pessoal, quando testo essa função nunca retorna False:

Ex: L= "cadeira" True L= "arara" True L="osso"

def palindrome(L)
if not L or (len (L) == 1)
	return True
elseif ((L[0] == L[ (len(L)-1) ]) and palindrome (L[1:(len(L)-1)] ):
	return True
else:
	return False

me ajudem, não estou a entender, uma vez que o python era pra fazer avaliação curto-circuito.

Att

Share this post


Link to post
Share on other sites
pwseo

crislanio_macedo,

Esse código não compila, sequer:

  • Falta-te : após def palindrome(L)
  • Falta-te : após if not L or (len (L) == 1)
  • Não existe elseif mas sim elif
  • Tens uma abertura de parênteses a mais logo a seguir ao «elseif»

Corrigindo estes erros, obtemos:

def palindrome(L):
   if not L or (len (L) == 1):
       return True
   elif (L[0] == L[ (len(L)-1) ]) and palindrome (L[1:(len(L)-1)] ):
       return True
   else:
       return False

Podemos agora (finalmente) testar o teu código:

~ $ python3 -i crislanio.py
>>> palindrome('cadeira')
False
>>> palindrome('arara')
True
>>> palindrome('osso')
True

Nota: não estive a analisar o teu código para tentar descobrir erros de lógica ou outros bugs, apenas corrigi a tua sintaxe.

Uma possível solução que me parece mais «pythónica». Sei que não é «funcional» (ou seja, não é uma solução recursiva), mas parece-me ser uma tradução bastante mais directa do algoritmo propriamente dito:

def palindrome(p):
   for a, b in zip(p, reversed(p)):
       if not a == b:
           return False
   return True

Edited by pwseo
adicionada solução alternativa

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.