28. 40 Ejercicios propuestos

1. Escribir un programa que permita

- ingresar un número N (entero positivo, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error)

- ingresar un número X (real positivo que debe estar entre 0 y π , si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error)

- luego llamar a una función que permita calcular y mostrar la aproximación al Seno del ángulo X como Sen (X)  =  (𝑥 - 𝑥3 / 3 ! + x5 / 5 ! - x7 / 7 ! + …) X y N se pasan como argumentos a la función.

NOTA: N expresa la cantidad de términos a considerar en la serie de Taylor, utilizada para aproximar el Seno de X. Verificar que... a mayor N se obtiene una mejor aproximación.

 

2. Escribir un programa que permita

- ingresar un número N (entero positivo, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error y volver a ingresar) que representará la cantidad de alumnos de un curso.

- Cargar las notas de los N alumnos (valores reales entre 0 y 10) en una lista. Si cuando ingresa la nota no es un valor válido debe ingresar 99 a la lista.

- Al finalizar la carga deberá mostrar la lista, pero solamente los valores válidos cargados.

- Llamar a una función que permita calcular y mostrar cuántos alumnos aprobaron (nota >=7), cuántos reprobados y si hubo o no algún 99 cargado en la lista.

 

3. Escribir un programa que permita (hecho en clase)

-Crear y cargar un diccionario con los días de la semana y la temperatura máxima de ese día. Validar que las temperaturas sean valores reales entre (-50 y 50) Si no están en ese rango deberán reingresar hasta que sea un valor válido.

-Después de finalizar la carga mostrar el diccionario cargado, y mostrar un menú que diga:

1.- la temperatura promedio de la semana,

2.- el día que la temperatura fue más alta  y cuál fue esa temperatura.

Para cada opción del menú llamar a una función que calcule y muestre las respuestas.

  

4.- Escribir un programa que permita leer un número entero positivo desde teclado y luego llame a una función que imprima la suma de los dígitos que lo componen.

Si ingresa un cero o un valor negativo mostrar un mensaje con 2 opciones; "Volver a intentarlo" o "Salir".

 

Hecho en clase:

5. Escribir un programa que permita ingresar valores numéricos por teclado e ir guardándolos en una lista. El final del ingreso de números está dado por el ingreso de un número negativo.

 

Se pide luego:

a. llamar a una función que muestre los números pares de la lista (si no se ingresó ninguno, mostrar un cartel)

b. llamar a una función que busque y muestre el máximo valor de los números guardados en la lista.

 

6. Escribir un programa que pida al usuario un número entero positivo y luego llame a una función que muestre por pantalla todos los números impares desde 1 hasta ese número separados por comas.

 

7. Escribir un programa que permita cargar N datos en una lista. Luego se pide llamar a una función que calcule y muestre el promedio de todos los valores de la lista y la cantidad que superan ese valor promedio.

 

8. Escribir una función que lea 10 números enteros y luego retorne cuántos valores ingresados fueron múltiplos de 3 y cuántos de 5. Tener en cuenta que hay números que son múltiplos de 3 y de 5 a la vez.

 

9. Escribir una función que permita ingresar N valores en una lista y mostrar cual es el elemento menor de la misma y su posición.

 

 

10. Escribir un programa que solicite un número entero positivo, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error.

A partir del entero válido, llamar a una función que tenga como argumento ese entero válido y muestre por pantalla sus divisores.

NOTA: si el ingreso es erróneo más de 2 veces, se deberá dar una opción para finalizar el programa.

 

11. Escribir un programa que solicite un número entero mayor que 1, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error.

A partir del entero válido, llamar a una función que tenga como argumento ese entero válido y, retorne True o False si es o no primo (número natural mayor que 1 que tiene únicamente dos divisores distintos: él mismo y el 1).

NOTA: si el ingreso es erróneo más de 2 veces, se deberá dar una opción para finalizar el programa.

 

12. Escribir un programa que solicite un número entero positivo, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error.

A partir del entero válido, llamar a una función que tenga como argumento ese entero válido y, retorne el factorial, considerar el caso del 0 (cero).

NOTA: si el ingreso es erróneo se mostrará un mensaje con 2 opciones; "Volver a intentarlo" o "Salir".

 

13. Escribir un programa que solicite un número entero positivo, si se ingresa otra cosa (letras por ejemplo), no realizar la operación normal del programa.

Luego llamar a una función que tenga como argumento ese entero válido y muestre por pantalla la tabla de multiplicar del mismo, del 1 al 10 como en la escuela.

NOTA: si el ingreso es erróneo, decidir cómo proceder con el programa.

 

14. Escribir una función que permita validar/catalogar una frase ingresada como posible contraseña. De acuerdo al análisis, se devolverá el nivel de seguridad correspondiente.

La función recibe como argumento la contraseña y retorna el nivel de seguridad.

Se considerarán las siguientes pautas:

Longitud menor a 6: No válido como clave. Seguridad 0

Carácter en minúscula. Seguridad +1

Carácter en mayúscula. Seguridad +1

Carácter numérico. Seguridad +1

Carácter símbolo. Seguridad +1

Longitud mayor a 10. Seguridad +1

Mostrar al finalizar, la clave ingresada seguida del nivel de seguridad (Seguridad 5 es el máximo, se cumplen todos los requisitos).

 

15. Escribir un programa que solicite un número entero para analizarlo, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error.

A partir del entero válido, llamar a una función que tenga como argumento ese entero válido y, muestre lo siguiente:

ü  Si es par, impar

ü  Positivo, negativo (decidir el caso del 0)

ü  Su factorial, si es posible

ü  Si es primo

ü  Sus divisores, si no es primo

ü  Cantidad de dígitos

 

16. Realizar una función principal que permita determinar el cómputo y presupuesto de pintura para un edificio:

Se debe permitir que el usuario ingrese por teclado (de a una por vez) las superficies de paredes a pintar. Para el cálculo de consumo de pintura asumir que se utilizan 0.3 litros de pintura por metro cuadrado de pared (0.3 litros/m²). La pintura se adquiere en tachos de 20 litros, con un costo de $6300 cada tacho. La pinturería además ofrece un descuento del 10% al costo total a partir del quinto tacho (por ejemplo, 1 tacho $6300; 5 tachos = 5*$6300=$31500 - 10% = $28350).

En la función principal se debe mostrar un Menú con las siguientes opciones:

    1- Cargar paredes (se deben cargar todas las paredes de una vez)

    2- Mostrar resultados

    f- Finalizar programa

   

Cada punto del menú debe realizarse utilizando otras funciones que realicen lo siguiente:

Si el usuario elige 1 se debe llamar a una función que permita cargar el número de paredes a computar, para luego cargarlas de a una por vez. Se deberán verificar que el dato del número de paredes sea entero y que los datos ingresados de  superficies sean números reales.

 

Si el usuario elige 2 se deberá llamar a una función que permita mostrar por pantalla:

    * Superficie total

    * Cantidad de pintura a utilizar

    * Precio final (mostrar ambos precios, con y sin descuento)

 

Solamente finalizará la función principal al ingresar la letra f.

   

OBSERVACION: Para poder obtener el número de tachos a comprar se debe utilizar la función round(), para conocer cómo funciona: https://www.programiz.com/python-programming/methods/built-in/round

 

17. Un aserradero realiza pedidos de cortes de madera, para lo cual, necesita un programa para determinar la cantidad de árboles que se utilizaran.

Primeramente, cargar en un diccionario los 5 tipos de cortes que el aserradero ofrece, con la información de las medidas de los cortes.

Seguidamente, pedir al usuario que ingrese por teclado la cantidad de cada corte que se solicitan en el pedido.

Finalmente, llamar a una función que permita calcular el área total de los cortes solicitados y con esta determinar la cantidad de árboles a talar.

Deberá mostrar por pantalla:

    * Número total de cortes vendidos (todos los tipos)

    * Numero de Arboles a talar

 

Cortes:

OBSERVACIONES:

    * Asumir que todos los arboles poseen las mismas dimensiones, siendo 20 cm su radio (tomar PI=3,1415)

    * Las medidas de los cortes están en pulgadas, tomar 1 pulgada = 2,54cm

    * Para obtener el número "redondo" de árboles a talar, utilizar la función round(), para saber cómo funciona   https://www.programiz.com/python-programming/methods/built-in/round

 

18. Realizar un programa que permita hacer distintos cálculos básicos, de la misma manera que una calculadora.

Presentar un menú como el siguiente:

    1- Sumar dos números

    2- Restar dos números

    3- Multiplicar dos números

    4- Dividir dos números

    5- Salir

   

Tanto la opción elegida como el par de números a computar deben ser introducidos por teclado.

Luego para cada opción deberá llamar a una función que reciba como argumentos los dos números y retorne el cálculo elegido.

Observaciones: Tener en cuenta que no existe la división por cero (x/0 no existe), si el usuario llegara a ingresar cero para el divisor, se deberá mostrar por pantalla el mensaje "Error, denominador incorrecto" y se deberá pedir el reingreso de dicho valor.

 

19. Una empresa de transporte de paquetes realiza 10 entregas por día. Cada entrega tiene un costo basado en la distancia de la entrega y el peso del paquete (el costo del envío es el promedio del costo por peso y el costo por distancia).

Realizar un programa que permita almacenar en un diccionario los 10 pares de valores (peso, distancia) y con estos determinar el costo por paquete y el costo diario de la empresa, para esto, basarse en la tabla Nro 1.

La ganancia de la empresa también depende de los envíos, basándose en la tabla Nro 2 para determinar la ganancia diaria de la empresa (la ganancia del envío es la suma de la ganancia por peso y la ganancia por distancia)

Observaciones:

    * Los pesos se deben cargar en kilogramos y las distancias en kilómetros

 

20. Se necesitan cargar datos correspondientes a las ventas realizadas por los vendedores de una farmacia. Los datos necesarios son las ventas correspondientes a los meses del año de cada uno.

Necesitaremos registrar las ventas de esos meses para cada vendedor.

Ejemplo. Enero = 12430, febrero = 23500, marzo = 34550, ...

Las ventas corresponden a valores enteros.

Sugerencia: Utilizar de forma combinada listas, diccionarios y tuplas.

[{'Enero':12430,'Febrero':23500,'Febrero':34550,...},...]

 

Una vez cargados los datos de las ventas se necesita:

- Ingresar un mes (controlar que sea un valor de mes válido) y llamar a una función que calcule y muestre el promedio de venta para ese mes.

 

- llamar a una función que calcule y muestre cuantos vendedores lograron una venta promedio mayor a $15000.

 

- llamar a una función que calcule y muestre cuál fue el mes que más vendió cada vendedor.

 

- llamar a una función que calcule y muestre cuántos vendedores no registraron ventas en un mes determinado.

 

 

21. En cierta industria local de procesamiento de papel, se tienen 16 máquinas cortadoras que trabajan con diferentes materiales: material compuesto (papel con capas de film plástico) y papel común. Estas máquinas están divididas por marcas (fabricantes de estas) y cada de estas procesa un tipo de material. La distribución de los equipos es la siguiente:

-8 son de marca Profawa, que trabajan con material compuesto.

-3 son de marca Windmoeller, que usan material común.

-5 son de marca Novaprag y pueden trabajar con material compuesto y común.

Cada equipo procesa como máximo 3000 metros del material que le corresponde durante 8h (1 turno = 8h). La empresa trabaja 3 turnos diarios y por 6 días semanales

Escribir un programa que:

-Cree un diccionario donde se almacene el tipo de máquina y el material que es capaz de procesar.

-Luego llame a una función que permita el ingreso (por parte del supervisor del sector) de cuántos metros enteros logró procesar durante la semana cada máquina (DISCRIMINANDO TIPO DE MÁQUINA Y MATERIAL TRABAJADO). Validar que los datos sean enteros por medio del bloque Try/Except, en caso que el ingreso sea erróneo se deberá pedir reingreso hasta que se ingrese correctamente el campo.

 

Una vez cargados estos datos, la función deberá mostrar en pantalla:

-Cantidad de metros de material que se procesó durante la semana (sumando ambos materiales de todas las máquinas).

-Cantidad de metros procesados por cada máquina.

-Promedio de metros procesador por día en los equipos Windmoeller.

 

22. En una vecindad donde viven 11 estudiantes llegan las facturas de luz, agua e internet. La luz se halla distribuida con 2 medidores (ya que 5 estudiantes usan uno, y 6 el otro). El agua e internet, se distribuyen para todos por igual. Se quiere ver cómo fue evolucionando el monto que debió pagar cada inquilino por 12 meses. Dato: mes a mes (por 12 meses) debe ingresarse el monto de cada servicio y realizar la división de los mismos.

 

Escribir una función que permita:

-  el ingreso en 2 tuplas (de 5 y 6 elementos cada una) de los nombres de cada inquilino y muestre por pantalla cómo quedan divididos los grupos por pilar de luz.

- Una vez hecho esto, solicitar el ingreso de cada servicio por los 12 meses y realizar la distribución de los mismos por cabeza, por mes.

- Por último, presentar por pantalla cuánto abonó cada inquilino mensualmente en cada servicio usando un formato similar a este:

 

    Usuario        LUZ     AGUA      INTERNET

Antonio Stark     145       125            352

  Todd Falcon      210       125            352

Walter Blanco     210       125            352  

  Bill Smith         145       125            352

 

23. Se tiene que almacenar el Stock de repuestos de una empresa, los valores a almacenar serán: nombre del repuesto y valores máximo, mínimo y actual del Stock.

El valor máximo y mínimo son parámetros que permiten determinar cuándo debo comprar ese repuesto (si llegué o estoy por debajo del mínimo) y el máximo para saber que tengo stock suficiente.

Definir un diccionario con 3 nombres de claves, para todas las claves (repuestos) con los valores de cada ítem en cero (máx., min, stock)

Luego llamar a una función que permita realizar una carga inicial.

A continuación se presenta un menú permite:

1) Seleccionar y modificar el stock actual (no puede ser negativo)

2) Dar de baja un ítem

3) Dar de alta un ítem (no puede ser negativos los valores de stock)

4) Mostrar quien tiene stock crítico (por debajo del mínimo)

5) Listar los ítems

S o s) Salir.

Para cada ítem del menú llamar a una función que realice lo solicitado.

 

24. Se desea hacer un programa que permita registrar el pesaje de los camiones que ingresan a una planta de Té, para descargar el Té cosechado.

Se propone utilizar un Diccionario que tenga como claves las patentes de los camiones y para cada clave una lista con: Peso al ingresar, Peso al salir, y una variable booleana True/False que indique si el Camión se encuentra adentro del establecimiento o fuera del mismo.

Ver que el peso NO puede ser negativo.

Ver que el peso al Salir DEBE ser menor que al ingresar

Solo se puede cargar el peso al salir si la variable booleana está en el valor adecuado.(que indique que estaba adentro del Establecimiento)

Estas consideraciones mencionadas sirven de control.

Se deberá crear un menú como el siguiente.

 

1) Ingresar Patente y Peso del Camión al ingresar al Establecimiento

2) Ingresar Peso del Camión al egreso del Establecimiento

3) Lista el Total de Té ingresado.

4) Mostrar la cantidad de camiones.

5) Listar las patentes de los camiones

S o s) Salir.

Para cada ítem del menú llamar a una función que realice lo solicitado.

 

25. Ejercicio a resolver en clase: (Andrea)

Escribir un programa que permita la carga de datos de socios de un club en un diccionario. El diccionario contendrá como clave el número de socio y los demás datos (nombre, DNI, email) en una lista.

La carga se iniciará al correr el programa, cuando cargue los datos, mostrará el diccionario hasta el momento y le preguntará al usuario si desea seguir cargando datos (S/N). El programa finalizará cuando el usuario responda N.

Por cada socio el programa deberá pedir que el usuario ingrese N° de Socio, lo validará con una función y si es válido solicitará el resto de los datos: Apellido, DNI y email.

Utilizará una función para validar DNI y otra para validar email. Si los valores no son válidos pedirá el reingreso del dato incorrecto.

 

Función para validar N° de Socio: deberá retornar True si es positivo el número ingresado y no está cargado ya en el diccionario.

Sino retornará False.

Función para validar DNI deberá retornar True si es positivo de 7 u 8 dígitos el número ingresado. Sino retornará False.

Función para validar email deberá retornar True si es una cadena de caracteres que contiene el símbolo @. Sino retornará False.

 

26. Ejercicio a resolver en clase: (Daniel)

Un prestamista, quiere llevar un registro de los deudores y de las cuotas de cada uno. Realizar un programa que muestre el siguiente MENU:

1- Cargar Deudor (DNI y Plata prestada)
2- Pagar.
3-Mostrar el total de plata prestada
S o S para Finalizar o Salir del Programa

El programa deberá realizar distintas operaciones según la opción ingresada:

Si ingresa 1:

Deberá cargar en un diccionario el DNI del deudor (clave) asociado al valor de la deuda o préstamo (valor) y lo que va pagando
Tener en cuenta que el DNI puede ser un string y que la deuda es un valor Real positivo. Si el valor de la deuda no es válido , se debe mostrar un mensaje que diga "INGRESO INCORRECTO" y volver pedir ingreso del valor solamente.


Si ingresa 2:

Deberá ingresar un numero de DNI. Si el DNI NO ESTA CARGADO mostrar un mensaje por pantalla que diga "Persona no cargada en el sistema". Si la persona está cargada pedirá ingresar el monto a pagar que no debe ser negativo y no puede ser superior al monto prestado, se debe validar y pedir reingreso en caso de que no cumpla las condiciones. Si ya había efectuado algún pago.. debería acumular este nuevo monto que está pagando. Ejemplo.si ya había pagado 1000 y ahora cargo un pago de 500, debería guardarse en la lista 1500$.

Si ingresa 3:

Deberá mostrar el total de dinero prestado a todos las personas y restar los pagos que efectuaron las personas.

Si ingresa S ó s:

Finalizar el programa con el mensaje "Finalizando..."


Nota: Se recomienda usar un Diccionario que tenga como clave el DNI y como valores una lista con dos valores, el monto prestado y el dinero pagado. Ejemplo:

Clientes={123123:[1200,0], 465876:[1205,289]}

Se debe implementar cada punto del menú con una función y el menú también con una función.

27. Ejercicio a resolver en clase: (Mario)

Una empresa constructora necesita un programa capaz de generar el computo de las mamposterias a realizar en las distintas obras que posee.

Para ello se necesita confeccionar un programa con el siguiente menu:
    1- Cargar obra nueva
    2- Cargar rendimientos por m²
    3- Determinar computo
    F- Salir

Crear previamente una lista vacia llamada "obras", un diccionario vacio llamado "rendimientos" y un diccionario vacio llamado "computo"

Hecho esto, realizar lo siguiente:
Si el usuario ingresa 1: ir cargando en "obras" los metros cuadrados de mamposteria a realizar. La carga finaliza cuando el usuario carga un area=0.

Si el usuario ingresa 2: pedir el rendimiento por metro cuadrado de ARENA, CEMENTO y LADRILLOS. ALmacenar en "rendimientos" como claves los materiales y como valores los
    rendimientos ingresados por teclado.

Si el usuario ingresa 3: determinar la cantidad necesaria de cada material en funcion de los metros cuadrados cargados en "obras". ALmacenar en "computo" como claves los materiales y
    como valores, los obtenidos de cada material, necesarios segun lo calculado. Mostrar por pantalla los consumos de materiales

Si el usuario ingresa F: finalizar el programa

ACLARACIONES:

  • Es necesario ir cargando por pasos: Para poder realizar el paso 3, se debe haber realizado los pasos 1 y 2
  • Es necesario validar los ingresos... si ingresa un valor incorrecto pedir reingresos hasta que se ingrese un valor correcto
  • Considerar el ingreso de F o f para finalizar
  • Realizar el MENU y los puntos 1, 2 y 3 con FUNCIONES.
  • RENDIMIENTOS: 1 m² de mamposteria consume:

             - ARENA -> 0.115 m³ de arena para cada m² de mamposteria
             - CEMENTO -> 15.2 kg de cemento para cada m² de mamposteria
             - LADRILLOS -> 118 ladrillos por cada m² de mamposteria

28. Ejercicio a resolver en clase: (Axel)

En una fábrica se registran manualmente ciertos parámetros del entorno de trabajo.
Crear un programa que permita seleccionar desde un menú el parámetro a registrar. Cada parámetro tiene un determinado rango válido, por lo tanto no se deben almacenar ni procesar datos fuera de estos.

MENÚ
1. Ingreso de Temperatura
2. Ingreso de Humedad
3. Ingreso de Presión
4. Ingreso de Operarios (cantidad)
5. Medias
+. Salir


En 1 el rango es de 0 a 60 °C.
En 2 el rango es de 10 a 100%.
En 3 el rango es de 0.8 a 1.2 atm.
En 4 el rango es de 1 a 20.
En 5 se muestra el promedio de cada parámetro, siempre que sea posible.
Con + se sale, otra opción en el menú notifica un error.

Guardar cada dato ingresado en una lista referida a dicho parámetro.

29. Ejercicio a resolver en clase (Eduardo C)

En una planta potabilizadora de agua se necesita llevar un registro de las dosis de cloro suministradas por empleados en sus respectivos turnos.
Para ello se harán los registros pertinentes en un diccionario que llevará como clave el nombre del empleado.
Los valores del diccionario corresponderán a las distintas dosis de cloro suministradas al agua por cada empleado.
El empleado registrará la cantidad de cloro cada vez que agrege el producto al agua durante su turno (podrá tener varios registros en su turno).
Si no existe registro en el diccionario para un empleado, se creará. En caso de que exista registro para el empleado, se agregará a lo existente.
Los valores serán positivos o cero. Si el empleado no agregó cloro, deberá generar un registro en cero.
Cada empleado podrá tener diferentes cantidades de dosis suministradas.
Menú
1.Registrar dosis
2.Lista de empleados que poseen registros
3.Mostrar el número promedio de dosis suministradas por empleado (número de dosis)
4.Mostrar la cantidad promedio de cloro suministradas por empleado (cantidad de cloro)
9.Sale

Para cada una de las opciones del menú de deberá llamar a la función con el nombre indicado a continuación:
1.carga
2.empleados
3.dosis
4.cloro

El punto 1 deberá solicitar el nombre del empleado y luego registrar la cantidad de cloro dosificada.
El punto 2 mostrará la lista de nombres de empleados que hasta el momento registró dosis
El punto 3 mostrará la cantidad promedio de dosis suministradas por cada empleado
El punto 4 mostrará la cantidad promedio de cloro suministradas por cada empleado
Si no se ha ingresado ningún registro, no se podrá llamar a los puntos 2,3 y 4.

30. Ejercicio para resolver en clase (Alicia)

Se desea gestionar las cuentas de los clientes de un Banco.

Para ello se solicita un programa que deberá crear un diccionario con el número de cliente, (clave) y el Apellido y saldo del mismo.

El programa deberá presentar el siguiente menú:

  1. Cargar cliente
  2. Operación
  3. Registro de operaciones

S-s. Salir

Si elige el punto 1, deberá ingresar por teclado el número de cliente (validar) si existe, deberá mostrar los datos del  mismo. Si no existe se preguntará si se desea agregar. Si la repuesta es si, agregar al diccionario los datos con saldo 0.

Si elige el punto 2 deberá solicitar por teclado un numero de cliente (si existe) y un código de operación. Si es “D” (deposito) permitirá ingresar un valor que es el monto a depositar. Si el código “E” (extracción) permitirá descontar del saldo ese importe. Si se ingresa un nro de cliente no valido mostrar el cartel correspondiente.

Si elige el punto 3 deberá mostrar la cantidad de operaciones D y E que se hicieron y el monto total de las mismas.

El programa finaliza cuando elige s o S. 

Cada uno de los puntos 1,2 y 3 deberá hacerlo con funciones.

31. Ejercicio para resolver en clase (Eduardo D)

Generar un código que permita cargar y editar un diccionario con los nombres de los 11 residentes de una vecindad (las claves estarán precargadas).

Los inquilinos estarán precargados, pero podrá editarse uno o todos los nombres de estos. Una vez editado lo solicitado, se mostrará la lista de inquilinos y se consultará si
se quiere seguir editando o si se vuelve al menú
A cada clave le corresponderán 3 servicios: agua, luz e internet. Los 11 inquilinos se distribuyen equitativamente los costos de luz, agua e internet por persona.

Diseñar un código que presente el siguiente menu:

1-Editar lista de inquilinos
2-Ingresar servicios
3-Mostrar montos de cada inquilino
s-Salir

EJERCICIO PARA RESOLVER EN CLASE -  SEMANA DEL 8 DE JUNIO

32. Consigna propuesta por Daniel

Se buscar escribir un programa en Python que permita dar turnos en una empresa de atención al público que tiene dos box ó sectores: administración y ventas.

El programa debe permitir almacenar los nombres de las personas que atienden el box ó sector, el número que está atendiendo, y la cantidad de personas que atendió.

Cada día al iniciar la Jornada los números comienzan de cero en cada sector y se hace una carga inicial con los nombres de las personas que atienden el box donde son destinados.

Luego de eso se presenta un menú donde las personas que van a ser atendidas seleccionan el Sector y se le asigna el nro. de atención correspondiente, el cual será llamado de desde un box.

Al finalizar el día, se busca mostrar análisis sobre la atención brindada al público, informando que sector tuvo mas clientes, el nombre del empleado que atendió a mas clientes sin importar el Sector.
Implementar con funciones el programa.

 

33. Consigna propuesta por Andrea

Escribir un programa que permita al usuario ingresar una frase (string) y luego la muestre en pantalla centrada y en formato Título (en mayúsculas las primeras letras de cada palabra).

Para mostrar debe llamar a una función IMPRIME que reciba como parámetros el string y el ancho de la pantalla y muestre la cadena de caracteres centrados. Si el string recibido por IMPRIME no está en el formato correcto (formato Título) debe llamar a una función CONVIERTE que reciba el string y retorne el mismo string pero la primera letra de cada palabra en mayúscula y las demás letras en minúscula, dejando los demás caracteres cómo estaban.

En este programa se deben programar dos funciones IMPRIME y CONVIERTE. La función CONVIERTE será llamada desde dentro de la función IMPRIME solamente si es necesario.

 

34. Consigna propuesta por Mario

Una hormigonera necesita un programa con el cual pueda realizar el presupuesto de los distintos hormigones consumidos en una obra. La hormigonera vende 6 calidades distintas de Hormigon (H-20; H-25; H-30; H-35; H-40; H-50).
Realizar un algoritmo que muestre el siguiente menu:
    
    1 - Cargar precios
    2 - Cargar pedido
    3 - Presupuestar
    S o s - salir

Si se ingresa 1: Cargar en un diccionario ("precios"), los precios (valores) asociados a cada calidad de hormigon (claves) (mostrar la calidad por pantalla y pedir el precio). Los precios deben ser por metro cubico.
Si se ingresa 2: Cargar en un diccionario ("pedido"), los metros cubicos (valores)(real positivo) de cada calidad (claves) solicitada. Si no se solicito una calidad en particular, ingresar cero.
Si se ingresa 3: Mostrar por pantalla el costo parcial (para cada calidad) y el costo total. Ademas, si el costo total supera los $150.000 realizar un descuento del 5% y volver a mostrar por pantalla el costo total final. (Solamente podra realizar el punto 3 si se realizaron previamente los puntos 1 y 2). Una vez mostrados los precios por pantalla, vaciar el diccionario "pedido"

Consideraciones:
    * Si se ingresa un tipo de valor erroneo, o bien, si se ingresa un valor fuera de rango, mostrar un mensaje de error y pedir el correspondiente reingreso
    * Realizar el menu, y los puntos 1 y 2 con funciones

35. Consigna propuesta por Axel

Se necesita un programa para criptografía básica, debe presentar un menú sencillo:

MENÚ
1. Encriptar
2. Desencriptar
S. Salir

En 1 se pide el ingreso de la frase alfabética a encriptar y luego se muestra el resultado.
En 2 se pide el ingreso de la frase encriptada y luego se muestra la cadena desencriptada.
En S se finaliza el programa. No se deben aceptar otros caracteres en el menú.

Programar una función que recibe 2 argumentos: la cadena a procesar, y un booleano. Si el booleano es True, se encripta; si es False, se desencripta.
El proceso de encriptado consiste en los siguientes reemplazos:

O  ->  0
L  ->  1

Z  ->  2
E  ->  3
A  ->  4
S  ->  5
G  ->  6
T  ->  7
B  ->  8
P  ->  9

El desencriptado corresponde a la operación inversa.

Cómo estándar se encriptan sólo frases alfabéticas en mayúsculas, por lo tanto, si se ingresan letras en minúscula, antes del encriptado las mismas deberán convertirse a mayúsculas. Para ello, programar una función que recibe la cadena fuera del estándar y devuelve la conversión correspondiente.

36. Consigna propuesta por Eduardo C

En una planta se hacen relevamientos de fallas ocurridas durante cada semana de un mes.
Se registran las fallas para las distintos sectores en la planta, identificadas por su nombre. Para cada sector se registran las fallas que surgen durante cada semana del mes.
Para registrar se necesitará ingresar el nombre del sector, la semana a la que corresponda la falla y la cantidad de fallas ocurridas. Si se ingresa una falla para un sector/semana que ya posea registro, se agregará la última a lo existente.
Las fallas para cada semana se registrarán en una lista, y la misma estará asociada a un elemento del diccionario. El diccionario se llamará fallos.
La clave para el diccionario será el nombre del sector en la planta.

Datos de ejemplo:

fallos = { 'secado':[2,0,11,3],
              'plegado':[3,4,2,0],
              'seleccion':[1,0,6,5],
              'seccionado':[2,6,9,0]
            }

                       Menú
     1. Registrar una falla
     2. Sector de mayor cantidad de fallas en el mes
     3. Promedio de fallas para una semana solicitada
     4. Sector que presentó mayor número de fallas por cada semana
     5. Semana que presenta moyor número de fallas para cada sector
     9. Salir

Punto 1. Llamar a función registro que solicita el nombre del sector, el número de semana (1..4) y la cantidad de fallos (>=0). En caso de que existan valores anteriores, se acumularán.
Punto 2. Llamar a función sectorMayor que devolverá el nombre del sector que registró el mayor número de fallas en el mes.
Punto 3. Llama a función promedioSemana que toma el número de semana (1..4) y devuelve el promedio registrado para dicha semana.
Punto 4. Llama a función sectorMayorSemana que devuelve el nombre del sector que registró mayor número de fallas para cada una de las semanas. Ejemplo: ['plegado', 'seccionado', 'secado', 'seleccion']
Punto 5. Llama a función semanaMayorSector que devuelve un diccionario con el registro del mayor número de fallas para cada sector. Ejemplo: {'secado': 3, 'plegado': 3, 'seleccion': 4, 'seccionado': 2}

37. Consigna propuesta por Alicia

Escriba un programa que permita almacenar mediante el uso de un diccionario los datos de 100 clientes de una empresa de autos.

El programa permitirá ir almacenando a través de una funcion CARGA  los datos de los clientes, asignándole a cada uno un número según el orden en el que se van grabando. Los datos que se guardarán de cada cliente son además del numero, el nombre, apellido,  teléfono, e-mail y año de modelo de auto. Después de leer un cliente se dará la opción de terminar tecleando un 0.

Luego, el programa permitirá ingresar por teclado un teléfono que se comparará con el teléfono de los que ya están guardados y en caso de que se encuentre, mostrara el nombre, apellido del cliente y e-mail. Esta búsqueda se realizará a través de una función BUSQUEDA.

Al final, a través de una función MOSTRAR deberá mostrar todos aquellos clientes cuyo modelo de auto este entre 2000 y 2020 sin considerar los modelos de año impares. Al finalizar la función MOSTRAR deberá mostrar la cantidad de modelos no tenidos en cuenta.

 

38. Consigna propuesta por Eduardo D

En electrónica, se utilizan amplificadores operacionales para la amplificación de señales eléctricas. Esta amplificación se la conoce como
ganancia, que viene dada (para un tipo simple de amplificador) por el cociente de 2 resistores R1 y R2 (G=R2/R1). Los valores de estos resistores se hallan
estandarizados en una serie de 12 valores (conocida como serie E12=[1,1.2,1.5,1.8,2.2,2.7,3.3,3.9,4.8,5.6,6.8,8.2])

Encontrar la combinación de resistores adecuada para una cierta ganancia es una práctica habitual, pero tediosa. Por lo tanto, se deberá realizar
un programa que permita el ingreso de 2 resistores y poder así calcular la ganancia que les corresponde. Y, además, ingresar una ganancia y mostrar
la combinación de valores posibles de resistores.

Se creará un menú como el que sigue:

1-Ingresar R1 y R2
2-Ingresar ganancia
3-Mostrar tabla de ganancias y resistores
s o S-Salir

Opción 1:
Se ingresarán los resistores (se validará que se hallen dentro de la serie E12), se calculará y mostrará la ganancia exacta (con 2 decimales) y truncada.
Si la ganancia da como resultado un número mayor a 8,2 se pedirá reingreso de los valores de los resistores dando el siguiente mensaje:
"Ingrese resistores en su unidad, no en múltiplos de 10".

Opción 2:
Se ingresará una ganancia (Ga) y validará que sea menor o igual a 8,2. Luego se truncará su parte decimal (Ga_t).
Luego se buscarán los resistores para el rango de ganancia dado por (Ga_t-1,Ga_T+1)

Opción 3: Se mostrará la tabla de ganancias con sus respectivos resistores, de la siguiente manera: G - R2 / R1

NOTA 1: Primeramente se deberá tener confeccionado un diccionario donde se tengan las diferentes ganancias con su combinacion de resistores, quedando de
la siguiente manera:

ganancia={G:[R1,R2]}

NOTA2: Al armar la lista de valores de ganancia, eliminar los valores de G repetidos.