Google+ Seguidores

lunes, 11 de abril de 2016

Decide por mí II… (Iteraciones: while)

    0


Imagen:diwo.bq.com
Que tal aventureros, en la entrada anterior vimos if/else que permite tomar decisiones, Pues hoy te traigo otra herramienta:
Iteraciones:Lazos

Iterar (Repetición de un conjunto de sentencias). Existen dos sentencias para implementar iteraciones, las cuales son: while y for.

  • La sentencia while se repetirá siempre y cuando la condición sea verdadera.
  • La sentencia for, por otra parte repetirá instrucciones un número específico de veces.

Lazo while 

El lazo se ejecuta mientras que una condición se cumple, es de recalcar que dentro de este lazo debemos de colocar una sentencia para que este lazo termine, de lo contrario será infinito.
Te lo explicaré de esta forma:
¿Qué tal si nos piden un programa que permite ingresar al usuario los números que este decida?

Bueno, en este caso se me ocurriría un mensaje tipo “Digite la cantidad de números a ingresar”. Pero si  el usuario no sabe de antemano cuantos números va a ingresar… La posible solución con if no es “amigable” con el usuario, siempre hay que mejorar el programa, para esto tenemos a while.

El ciclo indefinido es de la forma:
while <condición>:
<hacer algo>

Análisis.-

Sabemos que while es infinito y por ende debemos de colocar una sentencia para detenerlo. De esta manera pediremos al usuario ingresar algún valor para que salga de la infinidad.
num=int(input("Ingrese número: "))
print("El número ingresado es: ",num)
resp=input("Desea ingresar más números digite si o no: ")
while resp=="si":
  num=int(input("Ingrese número:"))
  print("El número ingresado es: ",num)
  resp=input("Desea ingresar más números digite si o no: ")
print("Gracias por usar el programa :)")


Esta sentencia, para establecer la condición  he pedido al usuario que ingrese “si” como afirmación, si responde “si” entonces pedirá un nuevo número, lo mostrará por pantalla y volverá a pedirlo mientras se cumpla esta condición, el script se ejecuta pero nos encontramos con algunas líneas repetidas.


while True

while True (mientas sea verdadero), y en este sentido nos ahorramos mucho además de ser eficiente, de igual manera no debemos olvidar como detenerlo.
Navegando en internet hay dos formas  de detener el while y por ende el while True, una sería mediante una variable contadora que la explicaré más adelante, y la otra es mediante un break, sentencia para detenerlo.

Python va leyendo: Pide un número que lo almacena en una variable, lo presenta y pregunta al usuario si desea seguir ingresando. Luego analiza si la respuesta de dicha pregunta es igual a 0, entonces presenta un mensaje de agradecimiento y de no haber un break, seguiría ejecutándose el código. Haz tu mismo la prueba sin break. No te olvides de las identaciones, el break se ejecuta cuando la condición del if se efectúa, de no ser cierto vuelve a repetirse desde la primera línea, es decir volvería a pedir un número.
*
Generalmente nos explican que en  iteraciones hemos de utilizar una variable contadora, acumuladora. Sin embargo solemos confundirnos en el momento de usarla.

1.- Mostrar por pantalla números del 1 al 10.
Ya con eso sabemos que la condición será variable<=10. De esa forma se presentará los números hasta el 10, pero Python debe contar tal y como nosotros lo haríamos.
  • Nombraremos a la variable contadora count
  • Dicha variable debe de cambiar (aumentar, en este caso) para que muestre cada número.
En la entrada de Operadores definimos los de Incremento, bueno aquí lo utilizaremos:
count=1
while count<=10:
    print(count)
    count+=1


¿Por qué utilizar la sentencia count+=1?
Esta permite que en cada vuelta que lea Python incremente el valor inicial de la variable, de lo contrario tendríamos un bucle infinito.
IDE PyCharm
2.- Pedir al usuario que ingrese varios valores y cuando ingrese -1 presente el promedio de los mismos.
  • Posibles condiciones: En algunos casos no tendrás tan claro la condición, te recomiendo que comiences haciendo las operaciones,
  • La fórmula del promedio es (n1+n2+…n)/total de números.

Desarrollo


Deduciendo que necesitamos contar los números ingresados, y acumular en otra variable la suma de los mismos.
Esta vez voy a comenzaré con las operaciones.
  •  variable acumuladora suma, variable contadora cont  y ambas la inicializo con cero, en otro lenguaje: suma=0;cont=0
  • Presentar el promedio prom=0
  • Suma deberá de acumular la suma de los números: suma+=num
  • Contar los números: cont+=1

La clave del ejercicio está en el enunciado  y cuando ingrese -1 presente el promedio de los mismos.
Es decir que una vez que ingreso -1, automáticamente las variables se paralizan y la operación del promedio se calcula fuera del while; por último imprimimos el resultado.

So….¿Cuál debería de ser la condición? num!=-1 o num==1, la primera obviamente porque mientras se cumpla esta expresión el programa seguirá operando…  

print("## Calcule su promedio##")
suma=0;cont=0;prom=0
num=int(input("Ingrese número: "))
while num!=-1:
    suma+=num
    cont+=1
    num=int(input("Ingrese número : "))
prom=suma/cont
print("\nEl promedio de ", cont,"números es: ", prom


DEBUGGEAR
En PyCharm podemos “debuggear” dando click en la opción run de la barra superior, seleccionamos el archivo y agregamos breakpoints, más información


PytonTutor es una página donde podemos programar muchos lenguajes incluido Python y también depura. Eficaz en mostrar el funcionamiento de estos ciclos, aquí te dejo el link del ejercicio.

Lo que no se practica se olvida



3.- Escribir un programa en Python que valide el ingreso de un número positivo.
4.-  Escribir un programa en Python que muestre la suma de los dígitos de un número.
Ejemplo:
Ingrese número: 123
La suma de los dígitos es: 6
5.- Pedir al usuario números, si este es par elevarlos al cuadrado, si es impar mostrar su cubo
Ejemplo:
 Numero ingresado: 3
El número ingresado es 3 y su cuadrado 9
Numero ingresado: 2
El número ingresado es 2 y su cubo es 8

Volver al índice: Tutorial Python 3.5

No hay comentarios:
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.