msmsms Posted October 7, 2012 at 09:47 PM Report #478197 Posted October 7, 2012 at 09:47 PM (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 October 7, 2012 at 09:48 PM by thoga31
thoga31 Posted October 7, 2012 at 09:52 PM Report #478199 Posted October 7, 2012 at 09:52 PM 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!
motherFFH Posted October 7, 2012 at 11:19 PM Report #478206 Posted October 7, 2012 at 11:19 PM 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]
msmsms Posted October 8, 2012 at 08:47 PM Author Report #478321 Posted October 8, 2012 at 08:47 PM (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 October 9, 2012 at 10:00 AM by thoga31 GeSHi
pedrosorio Posted October 8, 2012 at 08:58 PM Report #478324 Posted October 8, 2012 at 08:58 PM (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 October 8, 2012 at 09:05 PM by pedrosorio Não respondo a dúvidas por mensagem.
msmsms Posted October 8, 2012 at 09:19 PM Author Report #478329 Posted October 8, 2012 at 09:19 PM 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!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now