No entiendo la secuencia de un bucle

Iniciado por Linton, 19 Febrero 2013, 18:58 PM

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

Linton

Veamos, es lo siguiente:

Código (python) [Seleccionar]
num = 54
intento = 0
while intento != num:
    intento = int(input("Adivina la cifra: "))
    if intento > num:
        print("Alto")
    elif intento < num:
        print ("Bajo")
print ("Acertaste")


Línea 3: Mientras que el intento sea diferente al num, entonces ocurrirá...
Y entonces la línea 4 define el intento. ¿¿Pero cómo va a definir después qué es el intento?? ¿No tendría que hacerlo antes?  >:(

:-\ Esto de los bucles carece de la menor lógica para mí, si alguien me echa una mano se lo agradeceré infinito. Gracias, un saludo.


engel lex

el while es un ciclo...

el siempre volverá a evaluar la linea 3 si su intento era erroneo... entonces pasará a la 4 para pedir el nuevo valor... si es correcto, ignorará el if y cuando salte a la linea 3 saldrá del ciclo...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Linton

No entiendo muy bien esa construcción, la verdad  :-\

Tampoco entiendo por qué establece al principio que intento = 0  :huh: :huh: :huh: :huh:

Gracias por tu ayuda, un saludo.

Eleкtro

#3
Sería muy fácil de explicar en una pizarra... dibuja una línea imaginária desde la línea 3 hasta la 8, o imagina una pelota de ping pong que va desde la línea 3 hasta la 8 y la pelota rebota sin parar de arriba a abajo entre ese bloque de código hasta que intento séa el número correcto, aunque no es del todo así, pero si no lo entiendes de esa manera... xD

Cita de: Linton en 19 Febrero 2013, 19:37 PMTampoco entiendo por qué establece al principio que intento = 0  :huh: :huh: :huh: :huh:
Sería una mala costumbre no otorgarle un valor inicial a una variable, aunque el valor fuese "nulo", o aunque el valor no se vaya a procesar.

saludos

EDITO: mira que explicación más buena:
http://es.wikipedia.org/wiki/While

y http://en.wikipedia.org/wiki/While








Linton

Cita de: EleKtro H@cker en 19 Febrero 2013, 19:55 PM...imagina una pelota de ping pong que va desde la línea 3 hasta la 8 y la pelota rebota sin parar de arriba a abajo entre ese bloque de código hasta que intento séa el número correcto...
Si ya sé que es un proceso cíclico  :) Lo que no entiendo es el orden de la construcción.


Cita de: EleKtro H@cker en 19 Febrero 2013, 19:55 PMSería una mala costumbre no otorgarle un valor inicial a una variable
¿Por qué? Si ya se van a extraer diferentes valores del input  :huh: Eso no tiene lógica.

Gracias por la ayuda, un saludo.

Eleкtro

Cita de: Linton en 19 Febrero 2013, 20:36 PM¿Por qué? Si ya se van a extraer diferentes valores del input  :huh: Eso no tiene lógica.
  • para hacer más entendible la lectura de un código, por ejemplo.
  • para que una una variable no de error por no tener un valor definido (algo que se ve mucho en Batch por ejemplo)

    No se me ocurre más ahora mismo

    saludos!








Linton

¿Y por qué no se hace así?

Código (python) [Seleccionar]
edad = int(input("Escribe tu edad: "))
while edad < 18 #lo que sea


Es la secuencia lógica.

Eleкtro

#7
Cita de: Linton en 19 Febrero 2013, 20:54 PM
¿Y por qué no se hace así?

Código (python) [Seleccionar]
edad = int(input("Escribe tu edad: "))
while edad < 18 #lo que sea


Es la secuencia lógica.


EDITO: ups perdón, había leido while not xD

Pero es que en el ejemplo que das no es necesario un búcle, puedes usar una comparación (IF).




La caracteristica principal de un búcle es poder repetir indefinidamente un bloque de código, y en tu ejemplo la variable "edad" está fuera del búcle, lo que quiere decir que con "input" le das un valor UNA SOLA VEZ, y si el valor es menor que "18" entonces el while se quedaría loopeando etérnamente si dentro del bloque del búcle no modificas la variable "edad" a un valor mayor de "18" para que se cumpla la condición, porque solo tiene un valor para comparar (el valor que le des anteriormente con el userinput).

¿Es eso lo que no entiendes?

saludos








engel lex

Cita de: Linton en 19 Febrero 2013, 20:54 PM
¿Y por qué no se hace así?

Código (python) [Seleccionar]
edad = int(input("Escribe tu edad: "))
while edad < 18 #lo que sea


Es la secuencia lógica.


si lo haces así tomas el valor antes del while... si la condicion no se cumple, caerás en un ciclo infinito ya que no vuelves a hacer el

edad = int(input("Escribe tu edad: "))
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

HdM

Citarsi la condicion no se cumple, caerás en un ciclo infinito

Al contrario, no entrará en el bucle.

@ Linton:

Por eso se inicializa a 0 la 1ª vez, para asegurar la entrada al bucle y muestre el mensaje que corresponda (ya en función de la entrada que dé el usuario en el input), por lo menos una vez.

No sé si habrás visto Do-While, quizá ver 1º esta forma te ayude a entender mejor el funcionamiento de los bucles.

Un saludo.


- Nice to see you again -