Ejercicio 3:
Implemente los siguientes puntos:
a) Realice una función que procesa la información de alumnos de la UNAJ. De cada
alumno se conoce legajo, nombre, apellido, contraseña. El procesamiento termina
cuando se ingresa el número de legajo 0. La función deberá retornar una lista con
la información procesada.
b) Realice una función llamada imprimir_alumno que recibe como parámetro una lista
con los datos de un alumno (Legajo, nombre, apellido, contraseña), los datos del
alumno serán mostrados por pantalla con la forma:
Legajo:XXXX
Nombre:XXXX
Apellido:XXXX
Contraseña:XXXXX
c) Realice un función llamada legajo_menor que recibe como parámetro una lista de
alumnos, de cada alumno se conoce la información (legajo, nombre, apellido,
contraseña), la función debe buscar cuál es el alumno con el menor legajo dentro
de la lista y retornarlo.
d) Realice un función llamada nombre_mas_largo que recibe como parámetro una
lista de alumnos. La función debe buscar cuál es el alumno con el nombre más
largo dentro de la lista y retornarlo.
e) Realice un función llamada controlar_clave que recibe como parámetro un
alumno,(legajo, nombre, apellido, contraseña). La función debe controlar si la contraseña es
mayor a 6 caracteres y termina con un número, deberá imprimir un mensaje especificando
el error cometido en caso de no cumplir las condiciones o bien imprimir los datos del alumno
si la clave cumple con todas las condiciones.
f) Realice una función llamada verificar_claves que recibe como parámetro una lista de
alumnos, la función deberá controlar por cada alumno si la contraseña que usa cumple con:
ser mayor a 6 caracteres y terminar con un número.
Construir un menú, el menú deberá permitir ingresar 5 opciones, La opción 0 permite salir
del menú, el resto de las opciones permiten : - imprimir los datos de todos los alumnos con
el formato pedido en el punto a) - imprimir los datos del alumno que tiene el legajo más
chico. - imprimir los datos del alumno que tiene el nombre más largo. - Imprimir si las
contraseñas de cada alumno cumplen con un tamaño mayor a 6 caracteres y terminan con
un número.
def alumnos_unaj(): #item a
alumnos = [ ]
legajo = input(“Ingrese legajo (0 para finalizar): ”)
while legajo != “0”:
nombre = input(“Ingrese el nombre del alumno: ”)
apellido = input(“Ingrese el apellido del alumno: ”)
contra = input(“Ingrese la contraseña del alumno: ”)
datos = [legajo, nombre, apellido, contra]
[Link](datos)
legajo = input(“Ingrese legajo (0 para finalizar): ”)
return alumnos
def imprimir_alumno(alumno): #item b
print(“Legajo: ” + alumno[0])
print(“Nombre: ” + alumno[1])
print(“Apellido: ” + alumno[2])
print(“Contraseña: ” + alumno[3])
def legajo_menor(alumno): #item c
menor = alumno[0]
for alum in alumno:
if int(alum[0]) < int(menor[0]):
menor = alumno #actualiza si encontramos uno mas chico
return menor
def nombre_mas_largo(alumnos): #item d
mayor = alumnos[0]
for alum in alumnos:
if len(alum[1]) > len(mayor[1]):
mayor = alum
return mayor
def controlar_clave(alumno): #item e
contra = alumno[3]
if len(contra) <= 6:
print(“Error: la contraseña debe tener mas de 6 caracteres”)
elif contra[-1] < “0” or contra[-1] > “9”:
print(“Error: la contraseña debe terminar con un numero”)
else:
print(“Legajo: ” + alumno[0])
print(“Nombre: ” + alumno[1])
print(“Apellido: ” + alumno[2])
print(“Contraseña: ” + alumno[3])
def verificar_clave(alumnos): #item f
for alum in alumnos: #recorre la lista
controlar_clave(alum)
def menu():
alumnos = alumnos_unaj()
opcion = -1
while opcion != 0
print(“- - - Menu - - -”)
print(“1. Imprimir los datos de todos los alumnos”)
print(“2. Imprimir los datos del alumno que tiene el legajo mas chico”)
print(“3. Imprimir los datos del alumno que tiene el nombre más largo”)
print(“4. Imprimir si las contraseñas tienen 6 caracteres y termina con un número”)
print(“0. Salir”)
opcion = int(input(“Ingrese una opcion: ”))
if opcion == 1:
for alum in alumnos: #para que recorra la lista de alumnos
imprimir_alumno(alumno)
elif opcion == 2:
menor = legajo_menor(alumno)
elif opcion == 3:
mayor = nombre_mas_largo(alumnos)
elif opcion == 4:
verificar_clave(alumnos)
elif opcion == 0:
print(“Saliendo del menu”)
else:
print(“Ingrese una opcion valida”)
menu()
Ejercicio 7: Realice el siguiente programa que realiza reportes sobre la situación de los
empleados (recursos humanos) de una empresa.
Para ello, el programa debe permitir la carga de la información de empleados de una
empresa. Sobre Empleados, se debe cargar número de legajo, nombre, apellido, sexo (que
puede femenino, masculino o sin especificar), antiguedad, categoría (que puede ser
maestranza, técnico, ventas, administrativo o auxiliar), sueldo básico y número de sucursal
donde trabaja. La carga termina cuando el apellido del empleado sea FIN.
Luego, el programa debe mostrar el siguiente reporte para el número de una sucursal
ingresada por el usuario, calculando y mostrando los datos adecuados (Debe reemplazar
las XXX del ejemplo, por los datos calculados). El usuario puede pedir reportes hasta que el
número de la sucursal ingresada sea 0.
El reporte debe ser: ________________________________________ Información sobre
Recursos humanos de la sucursal número XXX: La sucursal número XXX, tiene una
cantidad XXX total de empleados, de los cuáles un XXX % son hombres, XXX % son
mujeres y XXX % sin especificar. El sueldo básico promedio de los empleados de dicha
sucursal es XXX. El empleado/a con mayor antigüedad de esta sucursal es nombre XXX y
apellido XXX que tiene la categoría XXX.
def datos_empleados():
empleados = [ ]
apellido = input(“Ingrese apellido del empleado o FIN para terminar: ”)
while apellido != “FIN”:
legajo = input(“”)
nombre = input(“”)
sexo = input(“”)
antiguedad = input(“”)
categoria = input(“”)
sueldo_basico = float(input(“”))
numero_sucursal = input(“”)
carga_datos = [legajo, nombre, apellido, sexo, antiguedad, categoria, sueldo_ basico,
numero_sucursal]
[Link](carga_datos)
apellido = input(“Ingrese apellido del empleado o FIN para terminar: ”)
return empleados
def generar_reporte(empleados, sucursal):
total = 0
mujeres = 0
hombres = 0
sin_especificar = 0
suma_sueldos = 0
mayor_antiguedad = 0 #al iniciar es cero años, ejemplo: empleado nuevo
empleado_antiguo = 0
for emp in empleados:
if emp[7] == sucursal:
total = total + 1 #registra un empleado
if emp[3] == “masculino”:
hombres = hombres + 1
elif emp[3] == “femenino”:
mujeres = mujeres + 1
else:
sin_especificar = sin_especificar + 1
suma_sueldos = suma_sueldos + emp[6]
if emp[4] > mayor_antiguedad:
mayor_antiguedad = emp[4] #se guarda la antiguedad mas alta
empleado_antiguo = emp #si se encuentra una mayor, se actualiza
porc_hombres = (hombres * 100)/ total
porc_mujeres = (mujeres * 100)/ total
porc_sin = (sin_especificar * 100)/ total
sueldo_promedio = suma_sueldos / total