[Python] - while

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

0 Miembros y 1 Visitante están viendo este tema.

Meta

Gracias.

En este caso es posible sin utilizar ni un solo if.

He intentado hacerlo el menor código posible de esta manera.

Aún gracias por el código.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

#11
Al final lo hice de esta manera.

Código (python) [Seleccionar]

n = int(raw_input('Valor inicial: '))
m = int(raw_input('Incremento: '))


i = 0
while i < n * m:
    i += n
    print i


Da el mismo resultado que el tuyo.

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

Meta

#12
Este otro ejercicio que no entiendo lo que me quiere decir mucho.

CitarHaz una aplicación que muestre todos los números potencia de 2 entre 20 y 230, ambos inclusive.

Código (python) [Seleccionar]

i = 0
while i <= 230:
    i += 2**20
    print i


Este otro funciona con más sentido pero no significa que sea lo que me está pidiendo.

Código (python) [Seleccionar]

# Bucle.
i = 20
while i < 230:
    i += 1**2
    print i
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

criskapunk

#13
Buenas :)

Como dice el enunciado, este código lo que te pide es que muestres todas las potencias de dos cuyo resultado se encuentre entre 20 y 230 (Estos dos números inclusive).

Tu primer código:

Código (python) [Seleccionar]
i = 0
while i <= 230:
    i += 2**20
    print i


Inicializas la variable i en 0 y entrás en un bucle el cual se va a ejecutar mientras el valor de i sea menor o igual que 230. En la primer iteración i vale 0 y ejecuta lo que esta dentro del while. Al entrar asigna a i su valor mas 2**20 (0+1048576). Como el valor de i ahora es mayor que 230, no cumple la condición y no vuelve a entrar.

El otro code:

Código (python) [Seleccionar]
# Bucle.
i = 20
while i < 230:
   i += 1**2
   print i


Inicializas la variable i con valor 20. Como es menor que 230, entra en el bucle. Adentro asigna a i el valor de 1 elevado al cuadrado (Que viene a ser uno. Osea, es lo mismo que hacer i += 1 :P). Lo que hace es mostrar los valores del 21 al 230.

Lo que tenés que hacer es ir tomando valores, elevándolos al cuadrado e imprimirlos si el resultado se encuentra entre 20 y 230.

Podrías hacer algo asi:

Código (python) [Seleccionar]
i = 5    # Esto es porque 2**5 es el primer valor mayor o igual que 20
while 2 ** i <= 230:
   print 2 ** i
   i += 1


Un saludo ;)




[L]ord [R]NA

Bueno yo tengo una respuesta diferente, inicializando i=0... :xD me encontre un poquito de trampa inicializar i=5.

Código (python) [Seleccionar]
i = 0
while (2**i<=230):
    if((2**i)>=20):print 2**i
    i+=1

Meta

Llegué a pensar que sería así:

Código (python) [Seleccionar]
i = 21
while 20 <= 230:
   i += 1
   print 2 ** i


Tu código tiene varios 2 ** i.

Como resultado, tu código sale así:

64
128
256

Cuando en realidad el máximo es 230.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

[L]ord [R]NA

No, verifica si pegaste bien, el resultado en mi codigo es

32
64
128

Meta

El tuyo funciona bien, el de él se queda en 256.

Código (python) [Seleccionar]
i = 5
while 2 ** i <= 230:
    i += 1
    print 2 ** i


Resultado: 256.
Código (python) [Seleccionar]

i = 5   
while 2 ** i < 230:
    i += 1
    print 2 ** i


256.

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

[L]ord [R]NA

colocando i+=1 al final ya deberia de estar todo bien.

Código (python,4) [Seleccionar]
i=5
while 2**i<=230:
        print 2**i
        i+=1

Meta

JEjee, ahora si. Eso que tengo la manía de usar los print al final.

Gracias a tod@s.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/