Jump to content

Recommended Posts

Posted (edited)

uma capicua é uma palavra que se pode ler de igual maneira da esquerda para a direita ou vise versa

tentei resolver isto mas a minha resolução dá erros, alguém pode ajudar?

def capicua():

   cadeia = input('cadeia:')

   if (cadeia[0:] == cadeia[:-1]):
       print 'capicua'
   else:
       print 'nao capicua'

if __name__=='__main__':
   capicua()
Edited by thoga31
Posted

   if (cadeia[0:] == cadeia[:-1]):

Isto não analisa se é capicua ou não. Investiga melhor sobre slice notation.

Imagina que cadeia é "23456". cadeia[0:] é "23456" e cadeita[:-1] é "2345".

Knowledge is free!

Posted

A forma óbvia é validar o primeiro caracter com o último, depois o segundo com o penúltimo, por aí fora.

Uma implementação disso, só pelo gozo:

def f1(s):
def check(i,j): return s[i] == s[j] and check(i+1, j-1) if i < j else True
return check(0, len(s)-1)

Mas nos dias que correm, de processadores rápidos e builtins especializados, para quê complicar? Basta comparar com o reverso:

def f2(s): return s == s[::-1]
Posted (edited)

A forma óbvia é validar o primeiro caracter com o último, depois o segundo com o penúltimo, por aí fora.

Uma implementação disso, só pelo gozo:

def f1(s):
   def check(i,j): return s[i] == s[j] and check(i+1, j-1) if i < j else True
   return check(0, len(s)-1)

Mas nos dias que correm, de processadores rápidos e builtins especializados, para quê complicar? Basta comparar com o reverso:

def f2(s): return s == s[::-1]

isso não deu certo, vê só:

def capicua():

   cadeia = input('cadeia:')

   if cadeia == cadeia[::-1]:
       print 'capicua'
   else:
       print 'nao capicua'

if __name__=='__main__':
   capicua()


dá erro!

Edited by thoga31
GeSHi
Posted (edited)

Deves usar raw_input() e não input(). A função input() executa o que lê.

P.S.: Quando criares um tópico deste estilo deves sempre indicar para que inputs é que estás a ter problemas e que problemas são esses. Dizer "dá erro" não ajuda ninguém a ajudar-te.

Edited by pedrosorio

Não respondo a dúvidas por mensagem.

Posted

Deves usar raw_input() e não input(). A função input() executa o que lê.

P.S.: Quando criares um tópico deste estilo deves sempre indicar para que inputs é que estás a ter problemas e que problemas são esses. Dizer "dá erro" não ajuda ninguém a ajudar-te.

era disso esquecime que tenho de usar raw_input para as strings, obg!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.