Permiten realizar un conjunto instrucciones reiterativamente. Esta reiteración puede:
OJO: Notése que una cantidad finita de veces puede ser representada como condición.
El ciclo while
ejecuta una secuencia de instrucciones mientras una condición sea verdadera.
Sintaxis:
while cond:
sentencias mientras la cond sea verdadera
La Indentación después de la instrucción while
indica que cosas se realizarán reiterativamente si se cumple la condición.
La instrucción while
equivalente al bloque repeat-while
de trinket.
La indentación es equivalente a utilizar el espacio de rompecabezas interno en bloque repeat-while
de Trinket (después de do
).
from IPython.display import IFrame
IFrame('https://trinket.io/embed/blocks/773558e03a?hideGeneratedCode=true', width="75%", height=250)
while
?¶m = int(input("m: "))
n = int(input("n: "))
k = 0
while m > 0:
m = m - 1
k = k + n
print("El producto de m y n es:",k)
¿Necesito usar un ciclo?
Evaluar si en la siguiente situación deberíamos usar un ciclo.
1. Escriba un programa que calcule el promedio de sus notas de certamenes de programación (IWI131).
n1 = int(input('Ingrese nota C1: '))
n2 = int(input('Ingrese nota C2: '))
n3 = int(input('Ingrese nota C3: '))
print("Su promedio es:", int(round((n1+n2+n3)/3)))
1b. Escriba un programa que calcule el promedio las notas del certamen 1 de un paralelo de IWI131. (Nótese que generalmente los paralelos no tienen la misma cantidad de alumnos)
cant = int(input("Ingrese la cantidad de alumnos: "))
cont = 0 #contador de alumnos/notas ingresadas
suma = 0 #notas acumuladas
while cont < cant:
nota = int(input("Ingrese nota: "))
suma = suma + nota
cont = cont + 1
print("El promedio del paralelo es:", int(round(suma/cont)))
1c. Escriba un programa que calcule el promedio las notas de varios alumnos. Se ingresarán notas hasta que se ingrese el valor -1.
cont=0 #contador de cantidad notas ingresadas
suma=0 #notas acumuladas
nota = int(input("Ingrese nota: "))
while nota != -1:
suma = suma + nota
cont += 1 #cont = cont + 1
nota = int(input("Ingrese nota: "))
print("El promedio es:", int(round(suma/cont)))
1c. Escriba un programa que calcule el promedio las notas de varios alumnos. Se ingresarán notas hasta que se ingrese el valor -1.
flag = True # bandera que indica si condicion se cumple
cont=0 #contador de cantidad notas ingresadas
suma=0 #notas acumuladas
while flag: #flag==True
nota = int(input("Ingrese nota: "))
if nota==-1:
flag=False
else:
suma += nota #suma = suma + nota
cont += 1 #cont = cont + 1
print("El promedio es:", int(round(suma/cont)))
Patrón: Solución aplicable a un prolema que ocurre a menudo.
Escriba un programa que reciba como entrada un número entero. El programa debe mostrar el resultado de la suma de los números al cuadrado desde el 1 hasta el valor ingresado. $$ 1^2+2^2+\ldots+(n-1)^2+n^2 $$
n = int(input("Ingrese n: "))
suma = 0
cont = 1
while cont <= n:
d = cont**2
#print("d", d)
suma = suma + d
#print("suma", suma)
cont += 1
print("La suma de los numeros al cuadrado es:", suma)
Sintaxis sumar cosas:
suma = 0
ciclo:
n = calcular()
suma = suma + n
¿Cuáles son los elementos de este patrón?
Escriba una programa que calcule el factorial de un número $n$ ingresada como entrada: $3! = 1\cdot 2 \cdot 3$
n = int(input("Ingrese n: "))
if n < 0:
print("El factorial está definido sólo para números naturales mayores o igual que 0.")
else:
prod = 1
cont = 1
while cont <= n:
prod = prod * cont #prod *= cont
cont += 1 #cont = cont + 1
print("El factorial de", n, "es:", prod)
Sintaxis multiplicar cosas:
producto = 1
ciclo:
n = calcular()
producto = producto * n
¿Cuáles son los elementos de este patrón?
Escriba un programa que solicite el ingreso de $n$ números, luego entregue la cantidad de números pares ingresados.
n = int(input("Ingrese n: "))
pares = 0 #contador de pares
cont = 0 #contador de numeros
while cont < n:
num = int(input("Ingrese numero: "))
if num % 2 == 0: #si es divisible por 2
pares += 1 #pares = pares + 1
print("pares =", pares)
cont += 1 #cont = cont + 1
print("La cantidad de pares ingresados es:", pares)
Sintaxis contar cosas:
cuenta = 0
ciclo:
if condicion:
cuenta = cuenta + 1
¿Cuáles son los elementos de este patrón?
Escribir un programa que solicite n números y luego muestre el número mayor que haya sido ingresado.
Opción 1: usando un número muy pequeño para comparar.
n = int(input("Ingrese n: "))
i = 1
mayor = float("-inf")
while i <= n:
mensaje = "Ingrese numero: "
numero = float(input(mensaje))
if mayor < numero:
mayor = numero
print("mayor temp =", mayor)
i += 1
print("El numero mayor es:", mayor)
Opción 2: sin usar número muy pequeño para comparar.
n = int(input("Ingrese n: "))
i = 1
while i <= n:
mensaje = "Ingrese numero: "
numero = float(input(mensaje))
if i == 1:
mayor = numero
elif mayor < numero:
mayor = numero
i += 1
print("El numero mayor es", mayor)
mayor = numero_muy_chico
ciclo:
n = calcular()
if n > mayor:
mayor = n
¿Cuáles son los elementos de este patrón?
¿Cómo cambia el patrón anterior si ahora se quiere encontrar el mínimo?
n = int(input("Ingrese n: "))
i = 1
menor = float("inf")
while i <= n:
mensaje = "Ingrese numero: "
numero = float(input(mensaje))
if menor > numero:
menor = numero
i += 1
print("El numero menor es:", menor)
Sintaxis encontrar el mínimo:
menor = numero_muy_grande
ciclo:
n = calcular()
if n < menor:
menor = n
Escribir un programa que muestre todas las combinaciones posibles al lanzar 2 dados.
n = 6
m = 6
i = 0
contador = 0
while i < n:
j = 0
i += 1
while j < m:
j += 1
contador +=1
print(i,j)
A partir de un número cualquiera (entrada) es posible hacer una sucesión de números que termina en 1.
Con esto se obtiene el siguiente número de la sucesión, al cual se le deben aplicar las mismas operaciones. La sucesión de números termina cuando el número obtenido por medio de las operaciones es 1.
from IPython.display import IFrame
IFrame("https://trinket.io/embed/blocks/06947cd48d?hideGeneratedCode=true", width="100%", height=500)
t= int(input('Inicio: '))
while t != 1:
print(int(t))
if t % 2 == 0:
t = t/2
else:
t = (3*t) + 1
print(int(t))
Escriba un programa que determine si un número es primo o compuesto.
from IPython.display import IFrame
IFrame('https://trinket.io/embed/blocks/f1d62613e6?hideGeneratedCode=true', width="100%", height=500)
n=int(input("n: "))
es_primo = True
d = 2
while d<n and es_primo:
if n%d == 0:
es_primo = False
d = d+1
if es_primo:
print("Es primo")
else:
print("Es compuesto")
Utilizando el programa diseñado anteriormente para determinar si un número es primo o compuesto. Realice el ruteo para los siguientes valores: