While -> se utiliza cuando desconozco la cantidad de datos
For -> se utiliza cuando conozco exactamente la cantidad de datos
EJERCICIOS
EJERCICIO 12
Solicitar el ingreso de numeros y leerlos con WHILE hasta que salga un cero. Mostrar la suma de los valores
#LEER NUMEROS HASTA QUE SE LEA UN 0
#MOSTRAR LA SUMA
def main():
##ANTES (PARA TODOS LOS DATOS)
suma = 0
numero = int(input('ing un numero '))
while numero != 0:
##DURANTE (PARA CADA DATO QUE SE PROCESA!!!)
suma += numero # Esto es igual a -> suma = suma + numero
numero = int(input('ing un numero '))
#DESPUES (TOTALES!!!!)
print("LA SUMA ES: ",suma)
main()
Resultado
>>> %Run majuma017.py
ing un numero 5345
ing un numero 665
ing un numero 5456
ing un numero 5
ing un numero 6
ing un numero 756
ing un numero 4
ing un numero 6
ing un numero 0
LA SUMA ES: 12243
>>>
Explicación:
#LEER NUMEROS HASTA QUE SE LEA UN 0
#MOSTRAR LA SUMA
def main():
##ANTES (PARA TODOS LOS DATOS)
suma = 0 # Inicializo la variable que va a almacenar los numeros que inrgeso
numero = int(input('ing un numero ')) # Solicito el ingreso de los valores
while numero != 0: # MIENTRAS el numero sea DISTINTO de cero, sigue el ciclo
##DURANTE (PARA CADA DATO QUE SE PROCESA!!!)
suma += numero # Y los suma e la variable que inicilizamos al principio
##suma = suma + numero
numero = int(input('ing un numero ')) # Continua pidiendo numeros ya que aun no ingresamos cero
# si ingresamos CERO, corta el ciclo y pasa a la siguiente linea
#DESPUES (TOTALES!!!!)
print("LA SUMA ES: ",suma) # E imprime por pantalla la suma de los valores hasta
# el numero ANTERIOR a cero inclusive
main()
¿Porque la linea de codigo numero = int(input(‘ing un numero ‘)) esta repetida?
¿Y que pasa si NO coloco la linea dentro del WHILE? Si ya la coloque ANTES del inicio del ciclo.
Simplemente entrara en una espera infinita, ya que sucedera como sigue:
- Solicito un numero
- Lo ingreso y NO es cero
- …..Python espera
- ……sigue esperando
- …..espera aun mas
- ….y asi hasta forzar el corte del programa.
¿Por que?, porque NO le decimos que hacer luego de ingresado el primer valor, compararlo y que NO sea cero…ya lo comparo, NO es cero…no hay mas instrucciones…solo esperar.
En cambio al agregar por segunda vez la linea DENTRO del ciclo, entonces SI sabe que hacer, ya que si el valor NO es cero, pido uno mas, comprueba, si NO es cero pido otro, y asi hasta que ingreso un cero. Alli sabe que debe detener el proceso y mostrar la suma de todos los valores anteriores que fue almacenando en suma
EJERCICIO 13
Generar 100 numeros aleatorios. Mostrar los numeros. usar FOR para iterar y sumarlos
#GENERAR 100 NUMEROS
#MOSTRA LA SUMA
import random as R
def main():
suma = 0
for c in range(100):
num = R.randint(1,100)
suma += num
print(num)
print("SUMA: ",suma)
main()
Resultado
RESUMIDO
.
50
8
59
41
25
80
50
12
53
78
77
SUMA: 5188
Explicación:
#GENERAR 100 NUMEROS
#MOSTRA LA SUMA
import random as R # Importa RANDOM, lo usaremos para generar numeros aleatorios
def main():
suma = 0 # Inicializo variable "suma"
for c in range(100):# Defino un rango, un limite, de 100 numeros -> 0 a 99
num = R.randint(1,100) # Genero 100 numeros aleatorios entre 1 y 100
suma += num # voy sumando los valores en la variable "suma"
print(num) # Muestro los valores a medida que se generan
print("SUMA: ",suma) # muestro la suma de todos los valores generados
main()
EJERCICIO 14
Generar 100 numeros aleatorios. Mostrar los numeros. usar FOR para iterar y sumarlos
#GENERAR NUMEROS HASTA QUE SE LEA UN 0
#MOSTRAR LA SUMA
import random as R
def main():
##ANTES (PARA TODOS LOS DATOS)
contador = 0
numero = R.randint(0,999)
while numero != 0:
##DURANTE (PARA CADA DATO QUE SE PROCESA!!!)
contador += 1
##contador = contador +1
numero = R.randint(0,999)
#DESPUES (TOTALES!!!!)
print("CANTIDAD: ",contador)
main ()
Resultado
>>> %Run majuma019.py
CANTIDAD: 2375
>>> %Run majuma019.py
CANTIDAD: 257
>>>
Explicación:
#GENERAR NUMEROS HASTA QUE SE LEA UN 0
#MOSTRAR LA SUMA
import random as R
def main():
##ANTES (PARA TODOS LOS DATOS)
contador = 0 # Inicializamos variable CONTADOR
numero = R.randint(0,999) # Generamos numeros aleatorios
while numero != 0: # Ejecutar ciclo MIENTRAS numero sea DISTINTO de cero
##DURANTE (PARA CADA DATO QUE SE PROCESA!!!)
contador += 1 # Incrementamos en uno el contador CADA vez que genera un numero que NO es cero
##contador = contador +1
numero = R.randint(0,999) # Volvemos a generar numero ya que si llego aca NO es cero
#DESPUES (TOTALES!!!!)
print("CANTIDAD: ",contador) # Mostramos la cantidad de numeros que genero ANTES
#de aparecer el CERO (acumulados en la variable "contador"
main ()
EJERCICIO 15
Generar 100 numeros aleatorios controlados con WHILE. Mostrar la suma
#GENERAR 100 NUMEROS (CONTROLAR CON WHILE!!!)
#MOSTRAR LA SUMA
import random as R
def main():
##ANTES (PARA TODOS LOS DATOS)
contador = 0
suma = 0
while contador < 100:
numero = R.randint(0,999)
suma += numero
##DURANTE (PARA CADA DATO QUE SE PROCESA!!!)
contador += 1
##contador = contador +1
#DESPUES (TOTALES!!!!)
print("SUMA: ",suma)
main()
Resultado
>>> %Run majuma020.py
SUMA: 51595
>>> %Run majuma020.py
SUMA: 50133
>>> %Run majuma020.py
SUMA: 49168
Explicación:
#GENERAR 100 NUMEROS (CONTROLAR CON WHILE!!!)
#MOSTRAR LA SUMA
import random as R
def main():
##ANTES (PARA TODOS LOS DATOS)
contador = 0 # Inicializo variable
suma = 0 # Inicializo variable
while contador < 100: # CONTROLO que no pase de 100 numeros
numero = R.randint(0,999) # Genero numeros aleatorios
suma += numero # Sumo los numros que se generan
##DURANTE (PARA CADA DATO QUE SE PROCESA!!!)
contador += 1 # Incremento el contador en uno por cada numero generado
#y cierro el ciclo hasta llegar a 100
##contador = contador +1
#DESPUES (TOTALES!!!!)
print("SUMA: ",suma)
main()
EJERCICIO 16
Generar 100 numeros aleatorios. Mostrar Mayor y Menor
#GENERAR 100 NUMEROS
#MOSTRAR EL MAYOR Y EL MENOR
import random as R
def main():
##ANTES (PARA TODOS LOS DATOS)
numero = 0
primeraVez = True
for i in range(1,100):
#PARA CADA DATO!!!!!!!
numero = R.randint(0,999)
if primeraVez:
primeraVez = False
maximo = numero
minimo=numero
else:
if numero > maximo:
maximo = numero
if numero < minimo:
minimo=numero
#DESPUES (TOTALES!!!!)
print("MAXIMO: ",maximo)
print("MMINIMO: ",minimo)
main()
Resultado
>>> %Run majuma021.py
MAXIMO: 993
MMINIMO: 3
>>> %Run majuma021.py
MAXIMO: 999
MMINIMO: 8
>>>
Explicación:
EJERCICIO 17
Generar 100 numeros aleatorios. Mostrar Mayor y cuantos repetidos tiene
#GENERAR 100 NUMEROS
#MOSTRAR EL MAYOR Y CUANTOS REPETIDOS TIENE
import random as R
def main():
##ANTES (PARA TODOS LOS DATOS)
numero = 0
primeraVez = True
mayor = 0
repetidos = 0
primero = 0
ultimo=0
for i in range(1,25):
#PARA CADA DATO!!!!!!!
numero = R.randint(0,9)
print(numero)
if primeraVez: #CASO BASE!!!!
primeraVez = False
maximo = numero
repetidos = 1
primero = i
ultimo = i
else:
if numero > maximo: #MAXIMO NUEVO
maximo = numero
repetidos = 1
primero = i
ultimo = i
else:
if numero == maximo:#OTRO MAXIMO IGUAL
repetidos += 1
ultimo = i
#DESPUES (TOTALES!!!!)
print("MAXIMO: ",maximo)
print("REPETIDOS: ",repetidos)
print("PRIMERO: ",primero)
print("ULTIMO: ",ultimo)
main()
Resultado
RESUMEN
8
6
4
6
4
0
8
1
0
8
0
MAXIMO: 8
REPETIDOS: 3
PRIMERO: 14
ULTIMO: 23
>>>
Explicación:
EJERCICIO 18
Generar numeros hasta que se lea CERO. Mostrar cuantos grupos de numeros iguales hay.
#GENERAR NUMEROS HASTA QUE SE LEA UN 0
#MOSTRAR CUANTOS GRUPOS DE NUMEROS IGUALES HAY
import random as R
def main():
contador = 0
canGrup = 0
primeraVez = True
maximo = 0
numero = R.randint(0,9)
while numero != 0:
anterior = numero
contador = 0
while numero != 0 and anterior == numero:
print(numero)
contador += 1
numero = R.randint(0,9)
if contador > 1: # ¿HAY UN GRUPO?
canGrup += 1
print("----------------------------------------")
print(anterior," ",contador)
print("----------------------------------------")
if primeraVez or contador > maximo:
primeraVez = False
maximo = contador
print("CANTIDAD DE GRUPOS: ",canGrup)
print("MAXIMO: ",maximo)
main ()
Resultado
RESUMEN
7
3
1
9
5
9
3
5
5
5
5
----------------------------------------
5 4
----------------------------------------
CANTIDAD DE GRUPOS: 1
MAXIMO: 4
Explicación:
EJERCICIO 19
Generar numeros Japoneses, Turcos o majuma y mostrarlos
#GENERAR TODOS LOS NUMEROS JAPONESES
def main():
##ANTES (PARA TODOS LOS DATOS)
numero = 0
cuantos = 0
cartel="majuma"
for numero in range(10000,99999):
#PARA CADA DATO!!!!!!!
cartel="majuma"
u = numero%10
d = (numero%100)//10
c= (numero%1000)//100
um = (numero%10000)//1000
dm = numero//10000
if u+d == um+dm:
#print(numero," ",dm,um,"?",d,u," japones")
cuantos +=1
cartel=cartel+"japones"
if u == um+dm:
#print(numero," ",dm,um,"?",d,u," japones")
cuantos +=1
cartel=cartel+"turco"
if cartel!="majuma":
print(numero,cartel)
#DESPUES (TOTALES!!!!)
print("CANTIDAD: ",cuantos)
main()
Resultado
RESUMEN
35280 majumajapones
35288 majumaturco
35298 majumaturco
35308 majumajaponesturco
35317 majumajapones
35318 majumaturco
35326 majumajapones
35328 majumaturco
35335 majumajapones
35338 majumaturco
35344 majumajapones
35348 majumaturco
35353 majumajapones
35358 majumaturco
35362 majumajapones
35368 majumaturco
35371 majumajapones
35378 majumaturco
35380 majumajapones
35388 majumaturco
35398 majumaturco
35408 majumajaponesturco
35417 majumajapones
Explicación: