Autor
|
Tema: [Python] - while (Leído 21,733 veces)
|
Meta
|
Hola: Por fin estoy con los while, ya va siendo hora. Este PDF de Python enseña muy bien, aún así hay ejercicios que uno se queda pescando... Hacer un programa que muestre todos los múltiplos de 6 entre 6 y 150, ambos inclusive. Muchas veces no me deja claro que es lo que ha que hacer. Por lo que entiendo arriba, hay que hacer un bucle while. Haber como hay que hacer el múltiplo que piden. Por ahora empecé así: i = 1 while i <= 150: i *= 6 print i
6 36 216 Esto suena a raro, no creo que sea así lo que me está pidiendo. i = 1 while i <= 150: i += 6 print i
7 13 19 25 31 37 43 49 55 61 67 73 79 85 91 97 103 109 115 121 127 133 139 145 151 Saludo.
|
|
|
En línea
|
|
|
|
Shell Root
|
Creo que debería ser así, i = 0 while(i <= 150): i += 6 print i
ó i = 6 while(i <= 150): print i i += 6
Resultado, shellroot@alex-laptop:~/Escritorio$ python PoC.py 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 126 132 138 144 150 156
|
|
|
En línea
|
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
|
|
|
.:WindHack:.
Desconectado
Mensajes: 167
Prisionero de mi propia mente...
|
Ibas por buen camino, simplemente estabas inicializando mal la variable.
|
|
|
En línea
|
Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com"The only thing they can't take from us are our minds."
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Meta te recomiendo que detengas un poco el aprendizaje de Python y tomes un pequeño libro de fundamentos de programacion o incluso te pongas a solucionar problemas de forma sistematica, la mayoria de los problemas que tienes no radican en que desconozcas el lenguaje, sino en que interpretas mal el ejercicio como te sucedio en el primer codigo, El segundo fue un concepto mas de logica, si todos los valores te dan un multiplo de 6 mas 1, podias tambien restar uno en el print o inicializar la variable con un valor menor. Aqui va otra forma de hacerlo: i=0 while(i<=150): i+=1 if i%6==0: print i
@ShellRoot: el limite era 150, tu codigo se excede.
|
|
« Última modificación: 13 Octubre 2010, 06:29 am por Lord R.N.A. »
|
En línea
|
|
|
|
Shell Root
|
@ShellRoot: el limite era 150, tu codigo se excede. Seh, es por el, i = 0 while(i <= 150): i += 6 print i
|
|
|
En línea
|
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
@ShellRoot: el limite era 150, tu codigo se excede. Seh, es por el, i = 0 while(i <= 150): i += 6 print i
No, el problema esta en el while, i = 0 while(i < 150): i += 6 print i
|
|
|
En línea
|
|
|
|
Meta
|
Gracias a todos. Al final lo averigué antes de leerles a ustedes y me funcionó, pero es bueno saber de qué me está hablando el ejercicio.
|
|
|
En línea
|
|
|
|
Anco
Desconectado
Mensajes: 28
|
No, el problema esta en el while, i = 0 while(i < 150): i += 6 print i
Desconozco totalmente python, pero a pesar de que esa es una manera de solucionar ese problema, shell root tambien tenia razon cuando dijo que su problema era lugar donde estaba el i+= 6, si lo hubiese puesto despues del print, creo que daria el resultado esperado. Esto lo digo para conocimiento de Meta y aquellos que seamos novatos en el tema. i = 0 while(i <= 150): print i i += 6
|
|
|
En línea
|
???
|
|
|
Meta
|
Mejor poner el print al final, que se actulice primero la variable, después visualiza los datos con print. En caso de este otro que no se si es el indicado dice así: Haz un programa que muestre todos los múltiplos de n entre n y m·n, ambos inclusive, donde n y m son números introducidos por el alguien. ¿La parte m·n hay que multiplicar? Por ahora lo hice normal de esta manera. # Introducir variables. i = int(raw_input('Valor inicial: ')) inc = int(raw_input('Incremento; ')) # Bucle. i = 0 while i < 150: i += inc print i
Valor inicial: 150 Incremento; 6 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 126 132 138 144 150 Edito : # Introducir variables. n = int(raw_input('Valor inicial: ')) m = int(raw_input('Incremento: ')) # Bucle. n = 0 while n < 150: n += m print n
|
|
« Última modificación: 13 Octubre 2010, 11:57 am por Meta »
|
En línea
|
|
|
|
criskapunk
Desconectado
Mensajes: 277
|
Tu código está bien, pero no hace exactamente lo que pide el enunciado. El mismo dice que dados dos valores n y m, obtener todos los múltiplos de n en el intervalo [n ; n*m], incluyendo los extremos. Entonces, el contador del bucle no tendría que comenzar en cero, sino en n. Otra manera de hacerlo: n = int(raw_input("Ingrese el valor de n: ")) m = int(raw_input("Ingrese el valor de m: ")) i = n # Funcionara como divisor k = n * m # Funcionara como valor limite del bucle print "Los multiplos de ", n, " entre [", n,";", n * m,"] son: " while n <= k: if n % i == 0: print n n += 1
Un saludo
|
|
|
En línea
|
|
|
|
|
|