Python - Gerard

 
Vista:

Gerard

Publicado por Gerard (2 intervenciones) el 18/06/2007 23:05:39
Hola, yo quería hacer un programa que calculase todas las convinaciones en que 3 números multiplicados son 36. así que escriví esto:

a=0
b=0
c=0

while a < 37:
a=a+1
while b < 37:
b=b+1
while c < 37:
c=c+1
if a*b*c==36:
print a,b,c

El problema és que cuado entra en un blucle, me corta el anterior. Es decir yo pretendia que hiciera a=a+1, despues que hiciera los otros bucles, despues a=a+1 hacer los otros bucles... etc. pero solo me hace el último bucle completo, és decir que cuando acava el último bucle acaba el programa, cuando yo quiero que se acabe el programa cuando acabe el primer bucle.
Que hago mal?
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

RE:Gerard

Publicado por Gerard (2 intervenciones) el 19/06/2007 11:46:07
Veo que al publicar han desaparecido los tabuladores, solo decir que el bucle b<37 esta dentro del bucle a y el bucle c dentro del b, y el if a*b*c=36 esta dentro del bucle c.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gerard

Publicado por Cyrus (54 intervenciones) el 20/06/2007 12:29:36
Buenas Gerard, es un problema de algoritmo el que tienes aqui, te explico:
Cuando hace la primera pasada, a pasa a valer uno, b pasa a valer uno, y entonces prueba todas las opciones de C, por eso muestra el resultado:
1,1,36, y luego ya no muestra nada más, ¿por que?

Muy fácil, cuando hace la segunda pasada, a pasa a ser 2, b pasa a ser 2, pero c vale 36, porque el c=0 esta fuera del bucle, por eso no se muestra ningun resultado, porque C siempre vale 36. una manera un poco chapucera de arreglarlo sería:

a=0
b=0
c=0

while a < 37:
a=a+1
b=0
c=0
while b < 37:
b=b+1
c=0
while c < 37:
c=c+1
if a*b*c==36:
print a,b,c
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar