Clase Numero 03 – Ciclos de Control

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:




Leave a Reply

Your email address will not be published. Required fields are marked *