Ejercicios Integradores Propuestos

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Informática ET241/EM241/IC241/IN241/IM204
Libro: Ejercicios Integradores Propuestos
Imprimido por: Invitado
Día: miércoles, 3 de julio de 2024, 04:48

Descripción

Ejercicios Integradores propuestos para que resuelvan los alumnos.

Sr. Docente. Si Propone un ejercicio distinto a los existentes, por favor escriba en este lugar la consigna. 

1. Ejercicio 1

Escribir una función que reciba como parámetro una cadena de palabras separadas por espacios y devuelva, como resultado, cuántas palabras de más de cinco letras tiene la cadena dada.

2. Ejercicio 2

Procesamiento de telegramas. Un oficial de correos decide optimizar el trabajo de su oficina cortando todas las palabras de más de cinco letras a sólo cinco letras (e indicando que una palabra fue cortada con el agregado de una arroba). Además elimina todos los espacios en blanco de más.

Por ejemplo, al texto " Llego mañana alrededor del mediodía " se transcribe como "Llego mañan@ alred@ del medio@".

Por otro lado cobra un valor para las palabras cortas y otro valor para las palabras largas (que deben ser cortadas).

  1. Escribir una función que reciba un texto, la longitud máxima de las palabras, el costo de cada palabra corta, el costo de cada palabra larga, y devuelva como resultado el texto del telegrama y el costo del mismo.
  2. Los puntos se reemplazan por la palabra especial "STOP", y el punto final (que puede faltar en el texto original) se indica como "STOPSTOP".

Al texto:

" Llego mañana alrededor del mediodía. Voy a almorzar "

Se lo transcribe como:

"Llego mañan@ alred@ del medio@ STOP Voy a almor@ STOPSTOP".

Extender la función anterior para agregar el tratamiento de los puntos.

3. Ejercicio 3

Escribir una función que reciba una lista de elementos e indique si se encuentran ordenados de menor a mayor o no.

4. Ejercicio 5

Vectores

  1. Escribir una función que reciba dos vectores y devuelva su producto escalar.
  2. Escribir una función que reciba dos vectores y devuelva si son o no ortogonales.
  3. Escribir una función que reciba dos vectores y devuelva si son paralelos o no.
  4. Escribir una función que reciba un vector y devuelva su norma.

5. Ejercicio 6

Dada una lista de números enteros, escribir una función que:

  1. Devuelva una lista con todos los que sean primos.
  2. Devuelva la sumatoria y el promedio de los valores.
  3. Devuelva una lista con el factorial de cada uno de esos números.
La función invocada en el punto 1, determina si es primo o no el nro. invocando a otra función llamada es_primo , que regresa True o False, para cada nro que  reciba.-

6. Ejercicio 7

. Dada una lista de números enteros y un entero k, escribir una función que:

  1. Devuelva tres listas, una con los menores, otra con los mayores y otra con los iguales a k.
  2. Devuelva una lista con aquellos que son múltiplos de k.

7. Ejercicio 8

Inversión de listas

  1. Realizar una función que, dada una lista, devuelva una nueva lista cuyo contenido sea igual a la original pero invertida. Así, dada la lista ['Di', 'buen', 'día', 'a', 'papa'], deberá devolver ['papa', 'a', 'día', 'buen', 'Di'].
  2. Realizar otra función que invierta la lista, pero en lugar de devolver una nueva, modifique la lista dada para invertirla, sin/con usar listas auxiliares.

8. Ejercicio 10

Matrices.

  1. Escribir una función que reciba dos matrices y devuelva la suma.
  2. Escribir una función que reciba dos matrices y devuelva el producto.
  3. Escribir una función que opere sobre una matriz y mediante eliminación gaussiana devuelva una matriz triangular superior.
  4. Escribir una función que indique si un grupo de vectores, recibidos mediante una lista, son linealmente independientes o no.

9. Ejercicio 11

Plegado de un texto. Escribir una función que reciba un texto y una longitud y devuelva una lista de cadenas de texto de como máximo esa longitud. Las líneas deben ser cortadas correctamente en los espacios (sin cortar las palabras).

 

10. Ejercicio 12

  • Crear una lista con los siguientes nombres:'Alvaro', 'David', 'Jacinto', 'Jose', 'Jose', 'Ricky'. Ordenar y mostrar en forma ascendente.
  • Alternativa 1: Crear una lista con los siguientes nombres:'Alvaro', 'David', 'Jacinto', 'Jose', 'Jose', 'Ricky'. Ordenar y mostrar en forma descendente.
  • Alternativa 2: Crear una lista con los siguientes nombres:'Alvaro', 'David', 'Jacinto', 'Jose', 'Jose', 'Ricky'. Mostrar ordenado en forma ascendente.

11. Ejercicio 13

Crear un script que muestra la siguiente lista: [9.0,'1.4', 1.34 ,'Pepe',3.24,'a',9.1, 'z', '0'], ordenada en forma ascendente.

Alternativa 1: Crear un script que muestra la siguiente lista ordenada en forma descendente

Alternativa 2: Mediante un parámetro, permitir obtener la lista ordenada en forma ascendente

NOTA: El criterio de ordenamiento puede asumirse bajo algún criterio. Por ej, el que aparece en la tabla ASCII.

 

12. Ejercicio 14

Crear un menu :

1) cargar un valor a una lista.

2) Mostrar.

3) Salir.

La función llamada en el punto 1, permite cargar una lista de números reales de a UNO por vez, pero al cargar DEBE ordenar los valores ingresados de manera que se ubiquen de menor a mayor. A modo de ejemplo. Si tengo los siguientes valores en la lista:  [1.2 , 7.5 , 8.3] e ingreso 5.4 se debería ubicar el 5.4 entre el 1.2 y el 7.5 quedando así: [1.2 ,5.4, 7.5 , 8.3].

La función llamada en el punto 2, muestra la lista por pantalla, recibiendo como argumento la lista a mostrar.

El menú está implementado con una función y no recibe nada, y regresa 1,2,3  SOLAMENTE.Si se ingresa un valor distinto muestra un cartel : "Opción NO válida".


13. Ejercicio 15

Definir una función max() que tome como argumento dos números y devuelva el mayor de ellos. (Es cierto que python tiene una función max() incorporada, pero hacerla nosotros mismos es un muy buen ejercicio

14. Ejercicio 16

Definir una función max_de_tres(), que reciba tres números como argumentos y devuelva el mayor de ellos.

15. Ejercicio 17

Definir una función que calcule la longitud de una lista o una cadena dada. (Es cierto que python tiene la función len() incorporada, pero escribirla por nosotros mismos resulta un muy buen ejercicio.

16. Ejercicio 18

Escribir una función que reciba un carácter y devuelva True si es una vocal, de lo contrario devuelve False. Desde el programa principal o main se muestra un cartel que dice :

"Es Vocal" y la función regresó True. "NO es Vocal" si la función regresó False.

17. Ejericio 19

Escribir una funcion sum() y una función multip() que sumen y multipliquen respectivamente todos los números de una lista.

Por ejemplo: sum([1,2,3,4]) debería devolver 10 y multip([1,2,3,4]) debería devolver 24.

Cada función recibe como argumento una lista y regresa el valor suma o multiplicación según corresponda.

18. Ejercicio 20

Definir una función inversa() que calcule la inversión de una cadena.

Por ejemplo la cadena "estoy probando" debería devolver la cadena "odnaborp yotse". Esta función recibe como argumento la cadena y regresa o retorna la cadena inversa.


19. Ejercicio 21

Definir una función es_palindromo() que reconoce palíndromos (es decir, palabras que tienen el mismo aspecto escritas invertidas), ejemplo: es_palindromo ("radar") tendría que devolver True.

Esta función recibe como argumento la cadena o string y regresa un bool.

Desde la función principal se muestra el cartel : "Es Palindromo" o "No es Palíndromo"  dependiendo si regresa True o False.

20. Ejercicio 22

Definir una función superposicion() que recibe  dos listas y devuelva True si tienen al menos 1 miembro en común o devuelva False de lo contrario. Escribir la función usando el bucle for anidado.

Alternativa: Plantear la misma función pero pensando que recibe dos sets como argumentos.

21. Ejercicio 23

Definir una función generar_n_caracteres() que tome un entero n y devuelva el caracter multiplicado por n.

Por ejemplo: generar_n_caracteres(5, "x") debería regresar a main  "xxxxx".

22. Ejercicio 24

Definir un histograma procedimiento() que tome una lista de números enteros e imprima un histograma en la pantalla.

Ejemplo: procedimiento([4, 9, 7, 4, 5, 7, 7, 9, 0]) debería imprimir lo siguiente:

  • 0 : 1
  • 4 : 2
  • 5 : 1
  • 7 : 3
  • 9 : 2
Observación: Un histograma  es una representación gráfica que nos permite ver la distribución de las frecuencias ( ocurrencias) de una muestra ( lista)

23. Ejercicio 02/06

EJERCICIO CLASE 02/06

Crear un programa que presente mediante una funciòn el siguiente menu:

1) Cargar lista
2) Mostrar lista
3) Ordenar lista
S) Salir

No se puede ingresar al punto 2 o 3 sin haber ingresado previamente al 1.
Solo se puede salir ingresando S.

Al seleccionar la opcion 1:
Se llama a la funciòn carga que realiza lo siguiente:
Si es la primera vez, se cargan valores numèricos a la lista.
Despuès de la primera vez, se agregan valores numèricos a la lista previamente cargada (no se sobreescriben los valores que se cargaron la primera vez)

Se debe cargar un elemento y preguntar al usuario si desea cargar otro. Si ingresa S se carga un elemento màs, si ingresa N se sale de la funcion.

Al seleccionar la opcion 2:
Se muestra la lista en pantalla mediante una funciòn.

Al seleccionar la opcion 3:
Se llama a una funciòn pasandole como argumento M o m.
Si se le pasa "M" se debe ordenar la lista de Mayor a menor
Si se le pasa "m" se debe ordenar la lista de menor a Mayor.
NO SE PUEDE UTILIZAR SORT.

24. Ejercicio Pacientes

Se necesitan agendar datos de pacientes para una ficha medica-

Crear un menu que permita:

1) Cargar datos de paciente( Nombre, edad, altura, sexo)

2) Buscar por nombre y mostrar los datos del paciente-

3) Mostrar el promedio de altura ingresando M para Masculino y F para Femenino.

4) Agregar diagnóstico al paciente.

f) Finalizar.

Se deben hacer las siguientes funciones para punto 1,2 y 3.


Punto 1a) la función define el diccionario y, dentro de la funciòn se ingresa la cantidad N de pacientes a cargar. Dentro de la función se cargan los datos de N pacientes.


Punto 1b) la función recibe el diccionario y los datos de 1 paciente ya validados a cargar. dentro de la función se cargan los datos de ese paciente.


punto 2) la función recibe como argumento el nombre del paciente  y muestra los datos. La funcion regresa False si no existe el nombre y muestra cartel desde main: "No existe ese paciente".


punto 3)Si la función recibe M o F , muestra el promedio de altura de Masculinos o Femeninos. Si no recibe M o F regresa False y se indica en main con un cartel que diga: "No corresponde la letra".

punto 4) Se llama a una función que debe agregar el diagnóstico a un paciente que recibe como argumento el nombre. Ver que puede ser que el paciente NO exista. Analizar el caso de como proceder.

25. Ejercicio Empresa

Se desea desarrollar un programa en lenguaje Python para el control y gestión de empleados de diferentes sectores de una empresa. El mismo debe contar con las siguientes funciones:

·         Función Menu

·         Función Carga

·         Función Turnos

·         Función Sectores

La función Menú debe mostrar en pantalla el siguiente menú de opciones:

MENU DE OPCIONES:
1: Carga de empleados
2: Cantidad de empleados por turno
3: Promedio de horas por sector
S: Salir

No es necesario que esta función reciba un argumento, pero sí debe retornar la opción elegida por el usuario. Este menú debe mostrarse repetitivamente hasta que el usuario ingrese la opción “S”.

La función Carga recibe como argumento la cantidad de empleados a cargar (debe ser mayor a 0 y menor a 1000) y la lista donde se deben cargar. Por cada empleado se debe crear un diccionario con las siguientes claves y valores:

“legajo”: un número entero entre 0 y 1000
“edad”: un número entero entre 18 y 65
“sector”: un caracter (“M” para Mantenimiento, “A” para Administración, “O” para Operarios)
“turno”: un caracter (“M” para Mañana, “T” para Tarde, “N” para Noche)
“horas”: un número entre 10 y 40

Una vez cargado, el diccionario se debe agregar a la lista de empleados.

 

La función Turnos recibe como argumentos un turno elegido por el usuario y la lista de empleados, y muestra en pantalla la cantidad de empleados que trabajan en dicho turno.

 

La función Sectores recibe como argumentos un sector elegido por el usuario y la lista de empleados, y retorna al programa principal el promedio de horas de trabajo en el sector elegido.


IMPORTANTE: No se debería poder acceder a los puntos 2 y 3 del menú, si no se realizó una carga previamente en el punto 1.

26. Ejercicio Socios

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: debe recibir como argumento el número de socio y deberá retornar True si el número ingresado es positivo y no está cargado ya en el diccionario. Sino retornará False.

Función para validar DNI: debe recibir como argumento el número de 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: debe recibir como argumento el email ingresado y deberá retornar True si es una cadena de caracteres que contiene el símbolo "@". Sino retornará False.

OPCIONAL:
La función para validar DNI también puede verificar que no se encuentre repetido el DNI dentro de todos los socios cargados.

Agregar una función para validar que el apellido ingresado no contenga caracteres numéricos.

27. Ejercicio Menu

Escribir un programa que permita llamar a una función menú que muestre el siguiente menú:

1. Múltiplos

2. Fibonacci

3. Primos

4. Moda

S o s. Salir

La función pedirá el ingreso de la opción y solo retornará al programa principal una opción válida.

En el programa principal se evaluará la opción retornada y llamará a la función correspondiente.

Si el usuario elige 1. deberá ingresar un par de valores, pasarlos a la función MÚLTIPLOS que retornará True si el primer valor es múltiplo del segundo valor y False en caso contrario.

Si el usuario elige 2. deberá ingresar un número N, validar que sea mayor que cero; pasarlo como argumento y la función deberá mostrar los N primeros términos de la serie de Fibonacci.

Si el usuario elige 3. deberá ingresar un número N, validar que sea mayor que cero; pasarlo como argumento y la función deberá retornar True o False si el número es primo o no

Si el usuario elige 4. deberá ingresar 10 valores, pasarlos como argumento en una lista y en la función debe calcular y mostrar la moda de esa lista de números.

Solo podrá salir del programa si elige S o s

Si ingresa cualquier otro carácter deberá mostrar el mensaje de error “opcion incorrecta”


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.


29. Mas Ejercicios Propuestos

1) 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.

________________________________________________________________________________________________________

2) 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.

________________________________________________________________________________________________________

3) 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.

________________________________________________________________________________________________________

4) 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.

________________________________________________________________________________________________________

5) 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.

________________________________________________________________________________________________________

6) 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.

________________________________________________________________________________________________________

7) 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.

________________________________________________________________________________________________________
8) 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
  • Al menos un carácter en minúscula. Seguridad +1
  • Al menos un carácter en mayúscula. Seguridad +1
  • Al menos un carácter numérico. Seguridad +1
  • Al menos un 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).

________________________________________________________________________________________________________
9)  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 (decidir el caso del 0)
  • 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
________________________________________________________________________________________________________
10)  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


________________________________________________________________________________________________________
11) 

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


________________________________________________________________________________________________________
12) 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.


________________________________________________________________________________________________________
13)  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


________________________________________________________________________________________________________
14) 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.

________________________________________________________________________________________________________
15) 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.


________________________________________________________________________________________________________
16)  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.


________________________________________________________________________________________________________
17) 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.

________________________________________________________________________________________________________
18) 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.

________________________________________________________________________________________________________
19) 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

________________________________________________________________________________________________________
20)  Una empresa constructora necesita un programa capaz de generar el computo de las mamposterías 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


________________________________________________________________________________________________________
21) 

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.

________________________________________________________________________________________________________
22) 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.
________________________________________________________________________________________________________
23) 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.


________________________________________________________________________________________________________
24)  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


________________________________________________________________________________________________________
25) 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.


________________________________________________________________________________________________________
26) Cadena de palabras

Escribir una función que reciba como parámetro una cadena de palabras separadas por espacios y devuelva, como resultado, cuántas palabras de más de cinco letras tiene la cadena dada.

________________________________________________________________________________________________________
27) Procesamiento de telegramas. 

Un oficial de correos decide optimizar el trabajo de su oficina cortando todas las palabras de más de cinco letras a sólo cinco letras (e indicando que una palabra fue cortada con el agregado de una arroba). Además elimina todos los espacios en blanco de más.

Por ejemplo, al texto " Llego mañana alrededor del mediodía " se transcribe como "Llego mañan@ alred@ del medio@".

Por otro lado cobra un valor para las palabras cortas y otro valor para las palabras largas (que deben ser cortadas).

  1. Escribir una función que reciba un texto, la longitud máxima de las palabras, el costo de cada palabra corta, el costo de cada palabra larga, y devuelva como resultado el texto del telegrama y el costo del mismo.
  2. Los puntos se reemplazan por la palabra especial "STOP", y el punto final (que puede faltar en el texto original) se indica como "STOPSTOP".

Al texto:

" Llego mañana alrededor del mediodía. Voy a almorzar "

Se lo transcribe como:

"Llego mañan@ alred@ del medio@ STOP Voy a almor@ STOPSTOP".

Extender la función anterior para agregar el tratamiento de los puntos.


________________________________________________________________________________________________________
28) Vectores
a. Escribir una función que reciba dos vectores y devuelva su producto escalar.
b. Escribir una función que reciba dos vectores y devuelva si son o no ortogonales.
c. Escribir una función que reciba dos vectores y devuelva si son paralelos o no.
d. Escribir una función que reciba un vector y devuelva su norma.
________________________________________________________________________________________________________
29) Dada una lista de números enteros, escribir una función que:
  1. Devuelva una lista con todos los que sean primos. Esta función debe invocar a otra función que reciba cada número y retorne True o False para indicar si es primo o no.
  2. Devuelva la sumatoria y el promedio de los valores.
  3. Devuelva una lista con el factorial de cada uno de esos números.
________________________________________________________________________________________________________
30) Matrices.
  1. Escribir una función que reciba dos matrices y devuelva la suma.
  2. Escribir una función que reciba dos matrices y devuelva el producto.
  3. Escribir una función que opere sobre una matriz y mediante eliminación gaussiana devuelva una matriz triangular superior.
  4. Escribir una función que indique si un grupo de vectores, recibidos mediante una lista, son linealmente independientes o no.
________________________________________________________________________________________________________









30. Ejercicio tipo final

  • Se descontarán puntos si no se respetan los nombres indicados en la consigna ( funciones, variables, constantes) las mismas están en negritas.

  • Se descontará el 50% del ítem si NO respeta la consigna Se descontará el 100% del Ítem si hay error conceptual.

  • Puede escribir el programa en la IDE Spyder de Linux.

Consigna:

En un Invernadero que produce Verduras se disponen de N pares de sensores distribuidos en todo el invernadero. Cada par de sensor mide temperatura y humedad. Se simulará la lectura de los sensores cargando los datos por teclado con un programa hecho en Python.

  • La carga tendrá ciertas restricciones como ser:

  • La temperatura debe estar dentro del rango [-50.0,50.0]

  • La humedad debe estar entre [0.0, 100.0]

Se considera que si los valores no están dentro de ese rango, son erroneos y deben ser reingresados. La carga correcta vale 20 puntos máximo.

Luego de la carga de los N pares de sensores, se deberá presentar un menún en Python como el siguiente:

  • 1) El Punto mas Caliente.

  • 2) Cantidad de Puntos Húmedo.

  • 3) Mostrar los valores cargados ( valor un sensor por línea)

  • f o F)

El menú es presentado por función menu (10 puntos máximo) la que devuelve solamente 1,2,3,f ó F. Cualquier otro ingreso que se haga la función menú debe mostrar el cartél "Opción no valida" y quedar a la espera de ingreso válido.

Punto 1 del menú. Este punto invoca a la función caliente ( vale 40 puntos maximo)que recibe un valor válido de temperatura y regresa el número de sensor (no la cantidad) que tiene el valor de temperatura mayor, sería el punto mas caliente del Invernadero.

Punto 2 del menú. Este punto invoca a la función humedo ( vale 20 puntos máximo), que regresa la cantidad de sensores que indican un valor superior al promedio de humedad de todos los sensores.

Punto 3 del menú (vale 5 puntos máximo) Se muestran los valores cargados, un par de valores por cada sensor por línea.

Cantidad de funciones: menu, caliente, humedo.

Asumir que algunos ingresos puede no se correctos, por lo que será necesario controlar y pedir reingreso.