[Python] - while

Iniciado por Meta, 13 Octubre 2010, 05:38 AM

0 Miembros y 4 Visitantes están viendo este tema.

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...

CitarHacer 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í:

Código (python) [Seleccionar]
i = 1
while i <= 150:
    i *= 6
    print i


Citar6
36
216

Esto suena a raro, no creo que sea así lo que me está pidiendo.

Código (python) [Seleccionar]

i = 1
while i <= 150:
    i += 6
    print i


Citar7
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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

Creo que debería ser así,
Código (python) [Seleccionar]
i = 0
while(i <= 150):
   i += 6
   print i

ó
Código (python) [Seleccionar]
i = 6
while(i <= 150):
    print i
    i += 6


Resultado,
Código (PoC) [Seleccionar]
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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

.:WindHack:.

Ibas por buen camino, simplemente estabas inicializando mal la variable.  :D

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

#3
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:
Código (python) [Seleccionar]
i=0
while(i<=150):
    i+=1
    if i%6==0: print i


@ShellRoot: el limite era 150, tu codigo se excede.

Shell Root

Cita de: Lord R.N.A. en 13 Octubre 2010, 06:28 AM@ShellRoot: el limite era 150, tu codigo se excede.
Seh, es por el,
Código (python,3) [Seleccionar]
i = 0
while(i <= 150):
   i += 6
   print i
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

Cita de: Shell Root en 13 Octubre 2010, 06:35 AM
Cita de: Lord R.N.A. en 13 Octubre 2010, 06:28 AM@ShellRoot: el limite era 150, tu codigo se excede.
Seh, es por el,
Código (python,3) [Seleccionar]
i = 0
while(i <= 150):
    i += 6
    print i


No, el problema esta en el while,
Código (python,2) [Seleccionar]
i = 0
while(i < 150):
    i += 6
    print i


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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Anco

Cita de: Lord R.N.A. en 13 Octubre 2010, 06:48 AM
No, el problema esta en el while,
Código (python,2) [Seleccionar]
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.

Código (python,3) [Seleccionar]
i = 0
while(i <= 150):
   print i
   i += 6

???

Meta

#8
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í:
CitarHaz 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.
Código (python) [Seleccionar]
# Introducir variables.
i = int(raw_input('Valor inicial: '))
inc = int(raw_input('Incremento; '))

# Bucle.
i = 0
while i < 150:
    i += inc
    print i


CitarValor 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 :

Código (python) [Seleccionar]
# Introducir variables.
n = int(raw_input('Valor inicial: '))
m = int(raw_input('Incremento: '))

# Bucle.
n = 0
while n < 150:
    n += m
    print n


Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

criskapunk

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:

Código (python) [Seleccionar]
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 ;)