Python - Algoritmo correcto? Capicua o no.

 
Vista:

Algoritmo correcto? Capicua o no.

Publicado por Algoritmo correcto? Capicua o no. (1 intervención) el 08/03/2012 05:27:14
Hola, me gustaría saber si este algoritmo es correcto, el objetivo es : "Inicializar una variable con un valor aleatorio comprendido entre 1 y 1000000, verificar si es capicúa, es decir si se lee igual de izquierda a derecha como de derecha a izquierda."

El código correcto seria:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import random
 
valor=random.randint(1,1000000)
print valor
print '<br>'
cadena=str(valor)
indice=-1
iguales=0
for x in range(0,len(cadena)/2):
    if cadena[x]==cadena[indice]:
        iguales=iguales+1
    indice=indice-1
if iguales==(len(cadena)/2):
    print 'Es capicua'
else:
    print 'No es capicua'


Pero yo, sin mirar esto, codifiqué de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import random
 
x=random.randint(1,1000000)
print x
print "<br>"
cadena=str(x)
algo=0
otro=-1
another=0
for x in range(0,len(cadena)/2):
    if cadena[algo]==cadena[otro]:
        algo=algo+1
        otro=otro-1
        print "Es capicua"
    else:
        print "No es capicua"


El programa funciona. Si cambian el valor de x a un numero capicua en vez de uno aleatorio van a confirmarlo. Pero me gustaría saber si de esta segunda forma es correcta.

También me gustaría comprender lo que se hace en el primer algoritmo, lo que ocurre después de la condicion "if cadena[x]==cadena[indice]:" todavía no está dentro de lo que yo se del lenguaje y me gustaría comprenderlo.

Saludos y gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder