Decide por mí II… (Iteraciones: while)

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
  1. claudio dice:

    soy un octogenario que se ha entusiasmado con esta cosa de la programación.Muy interesante los ejemplos presentados.Talvez seria interesante incluir tambien más ejemplos resueltos,que presenten además más soluciones alternativas.

    1. Victor Tutorus dice:

      Hola Claudio, espero que te encuentres muy bien. Te saludo desde California, USA. Tengo 65 y pense que era el de mas edad por aca. Felicitaciones y sigamos adelante. Todavia hay mucho por hacer.

  2. Nombre mostradp dice:

    si

  3. Anónimo dice:

    los ejercicios introducidos están resueltos en algún lado?

    1. jechm dice:

      Aqui les comparto los archivos de como los resolvi por si alguien les quiere echar un vistazo
      https://drive.google.com/open?id=1ohFAfZBtmQypSvpcyv-pkJaCUkphzESe

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey