Autor
|
Tema: No entiendo la secuencia de un bucle (Leído 6,806 veces)
|
Linton
Desconectado
Mensajes: 239
|
Veamos, es lo siguiente: 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.
|
|
|
En línea
|
|
|
|
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...
|
|
|
En línea
|
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
Desconectado
Mensajes: 239
|
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
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 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/Whiley http://en.wikipedia.org/wiki/While
|
|
« Última modificación: 19 Febrero 2013, 20:07 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Linton
Desconectado
Mensajes: 239
|
...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. Sería una mala costumbre no otorgarle un valor inicial a una variable ¿Por qué? Si ya se van a extraer diferentes valores del input Eso no tiene lógica. Gracias por la ayuda, un saludo.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
¿Por qué? Si ya se van a extraer diferentes valores del input 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!
|
|
|
En línea
|
|
|
|
Linton
Desconectado
Mensajes: 239
|
¿Y por qué no se hace así? edad = int(input("Escribe tu edad: ")) while edad < 18 #lo que sea
Es la secuencia lógica.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
¿Y por qué no se hace así? 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
|
|
« Última modificación: 19 Febrero 2013, 21:46 pm por EleKtro H@cker »
|
En línea
|
|
|
|
engel lex
|
¿Y por qué no se hace así? 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: "))
|
|
|
En línea
|
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
Desconectado
Mensajes: 1.674
|
si 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.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
|
|