Anda di halaman 1dari 8

Inicio Libros Tutoriales Eventos Foro Buscar

Libros / Algoritmos de Programacin con Python / Captulo 5. Ms sobre ciclos / 5.2. Ciclo interactivo

5.2. Ciclo interactivo


Cul es la condicin y cul es el cuerpo del ciclo en nuestro problema? Claramente, el
cuerpo del ciclo es el ingreso de datos y la verificacin de si es positivo, negativo o cero.
En cuanto a la condicin, es que haya ms datos para seguir calculando.

Definimos una variable hayMasDatos , que valdr Si mientras haya datos. Se le debe
preguntar al usuario, despus de cada clculo, si hay o no ms datos. Cuando el usuario
deje de responder Si , dejaremos de ejecutar el cuerpo del ciclo.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Una primera aproximacin al cdigo necesario para resolver este problema podra ser:

def pcn_loop():
while hayMasDatos == "Si":
x = input("Ingrese un numero: ")
if x > 0:
print "Numero positivo"
elif x == 0:
print "Igual a 0"
else:
print "Numero negativo"

hayMasDatos = raw_input("Quiere seguir? <Si-No>: ")

Veamos qu pasa si ejecutamos la funcin tal como fue presentada:

>>> pcn_loop()

Traceback (most recent call last):


File "<pyshell#25>", line 1, in <module>
pcn_loop()
File "<pyshell#24>", line 2, in pcn_loop
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
while hayMasDatos == "Si":
UnboundLocalError: local variable 'hayMasDatos'
referenced before assignment
>>>

El problema que se present en este caso, es que hayMasDatos no tiene un valor


asignado en el momento de evaluar la condicin del ciclo por primera vez.

NOTA
Es importante prestar atencin a cules son las variables que hay que inicializar
antes de ejecutar un ciclo: al menos tiene que tener algn valor la expresin
booleana que lo controla.

Una posibilidad es preguntarle al usario, antes de evaluar la condicin, si tiene datos;


otra posibilidad es suponer que si llam a este programa es porque tena algn dato
para calcular, y darle el valor inicial Si a hayMasDatos .

Ac encararemos la segunda posibilidad:

def pcn_loop():
hayMasDatos = "Si"
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
while hayMasDatos == "Si":
x = input("Ingrese un numero: ")
if x > 0:
print "Numero positivo"
elif x == 0:
print "Igual a 0"
else:
print "Numero negativo"

hayMasDatos = raw_input("Quiere seguir? <Si-No>: ")

El esquema del ciclo interactivo es el siguiente:

hayMasDatos hace referencia a Si .

Mientras hayMasDatos haga referencia a Si :


Pedir datos.

Realizar clculos.

Preguntar al usuario si hay ms datos ( Si cuando los hay). hayMasDatos hace


referencia al valor ingresado.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
sta es una ejecucin:

>>> pcn_loop()
Ingrese un numero: 25
Numero positivo
Quiere seguir? <Si-No>: "Si"
Ingrese un numero: 0
Igual a 0
Quiere seguir? <Si-No>: "Si"
Ingrese un numero: -5
Numero negativo
Quiere seguir? <Si-No>: "No"
>>>

Anterior Siguiente
5.1. Ciclos indefinidos 5.3. Ciclo con centinela

Copyright (c) 2011-2014 Rosita Wachenchauzer, Margarita Manterola, Maximiliano Curia, Marcos Medrano,
Nicols Paez. La copia y redistribucin de esta pgina se permite bajo los trminos de la licencia Creative
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Nicols Paez. La copia y redistribucin de esta pgina se permite bajo los trminos de la licencia Creative
Commons Atribucin - Compartir Obras Derivadas Igual 3.0 siempre que se conserve esta nota de copyright.

INDICE DE CONTENIDOS

1. Algunos conceptos bsicos

2. Programas sencillos

3. Funciones

4. Decisiones

Captulo 5. Ms sobre ciclos

5.1. Ciclos indefinidos

5.2. Ciclo interactivo

5.3. Ciclo con centinela

5.4. Cmo romper un ciclo

5.5. Ejercicios

5.6. Resumen

5.7. Ejercicios

6. Cadenas de caracteres

7. Tuplas y listas

8. Algoritmos de bsqueda

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
9. Diccionarios

10. Contratos y Mutabilidad

11. Manejo de archivos

12. Manejo de errores y excepciones

13. Procesamiento de archivos

14. Objetos

15. Polimorfismo, Herencia y Delegacin

16. Listas enlazadas

17. Pilas y colas

18. Modelo de ejecucin de funciones y recursividad

19. Ordenar listas

20. Algunos ordenamientos recursivos

3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad

das online

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com

Anda mungkin juga menyukai