Orozco Cruz Marcos Augusto
Administración y Organización de datos
def reorganizar_alumnos():
alumnos = [
{'numero_control': '23080410', 'nombre': 'AGUILAR FERNANDEZ DULCE MARIA'},
{'numero_control': '23080411', 'nombre': 'ALEJANDRO ACOPA MARTHA ISABEL'},
{'numero_control': '23080413', 'nombre': 'ARZOLA HERNANDEZ YAHIR ADRIAN'},
{'numero_control': '23080108', 'nombre': 'BARRADAS CRUZ ANGEL DE JESÚS'},
{'numero_control': '23080414', 'nombre': 'BORJAS LOPEZ JOSE ALEJANDRO'},
{'numero_control': '23080417', 'nombre': 'CELAYA BOLAÑOS EMIDIEL'},
{'numero_control': '23081544', 'nombre': 'CRUZ CULEBRO MARCOS'},
{'numero_control': '23080419', 'nombre': 'DE LA CRUZ VILLALOBOS FATIMA LISSETH'},
{'numero_control': '23081554', 'nombre': 'DOMINGUEZ MENDEZ EDGAR ALEXIS'},
{'numero_control': '23080421', 'nombre': 'FLORES GOMEZ JESUS ALBERTO'},
{'numero_control': '21080822', 'nombre': 'FRANCISCO RAMIREZ ESTEFANÍA'},
{'numero_control': '23080422', 'nombre': 'GALVAN LEON JOSE LUIS'},
{'numero_control': '22081558', 'nombre': 'GIL FARIAS JESUS YAHIR'},
{'numero_control': '23080109', 'nombre': 'GÓMEZ VAZQUEZ DAVID JOSUA'},
{'numero_control': '23080427', 'nombre': 'HERNANDEZ GOMEZ AMAYRANI'},
{'numero_control': '22081064', 'nombre': 'HERNANDEZ HERNANDEZ ANA PAULINA'},
{'numero_control': '22081578', 'nombre': 'MENDEZ MARIN JESUS ENRIQUE'},
{'numero_control': '23080433', 'nombre': 'OROZCO CRUZ MARCOS AUGUSTO'},
{'numero_control': '23080434', 'nombre': 'OSORIO MARTINEZ KEVIN ALONSO'},
{'numero_control': '23080435', 'nombre': 'PABLO HERNANDEZ ROSYBEL'},
{'numero_control': '23080438', 'nombre': 'PELAYO GARCIA JULIA ITZEL'},
{'numero_control': '23080439', 'nombre': 'PERALTA DOMINGUEZ GIBRAN'},
{'numero_control': '23080440', 'nombre': 'PINO LÓPEZ VALENTÍN'},
{'numero_control': '22081637', 'nombre': 'PRADO MELLADO SERGIO FARID'},
{'numero_control': '23080443', 'nombre': 'RAMOS CAMERAS ADRIANA'},
{'numero_control': '21080850', 'nombre': 'RAMOS ZUÑIGA JOSE MANUEL'},
{'numero_control': '22081591', 'nombre': 'SOBREVILLA FUENTES ALEXANDRA'},
{'numero_control': '23080444', 'nombre': 'SOSA REYES ERICK'},
{'numero_control': '23080448', 'nombre': 'SOTO MOJICA EMILIANO'},
{'numero_control': '23080450', 'nombre': 'SÁNCHEZ MAYA ANGEL LEONARDO'},
{'numero_control': '22081594', 'nombre': 'TACU GUILLEN INGRID'},
{'numero_control': '22081597', 'nombre': 'VALENCIA AZAMAR ELIU JEETE'},
{'numero_control': '23080451', 'nombre': 'VERDEJO RODRÍGUEZ JOAQUÍN'},
{'numero_control': '22081601', 'nombre': 'VICENCIO DOMINGUEZ AMANDA NICOLE'},
{'numero_control': '23080452', 'nombre': 'VILLALOBOS RODRÍGUEZ EDGAR EMILIO'}
]
espacio_principal = {i: None for i in range(41)}
overflow = {i: [] for i in range(41, 61)}
for alumno in alumnos:
ultimos_4 = int(alumno['numero_control'][-4:])
residuo = ultimos_4 % 37
posicion = round(residuo * 37) % 41
if espacio_principal[posicion] is None:
Orozco Cruz Marcos Augusto
Administración y Organización de datos
espacio_principal[posicion] = alumno
else:
for i in range(41, 61):
if len(overflow[i]) < 1:
overflow[i].append(alumno)
break
return espacio_principal, overflow, alumnos
def formatear_nombre(nombre):
return [Link]()
def generar_archivo_alumnos_ordenados(espacio_principal, overflow):
alumnos_ordenados = []
for pos, alumno in espacio_principal.items():
if alumno:
alumnos_ordenados.append({
'posicion': pos,
'tipo': 'Principal',
'numero_control': alumno['numero_control'],
'nombre': alumno['nombre']
})
for pos, alumnos in [Link]():
if alumnos:
for alumno in alumnos:
alumnos_ordenados.append({
'posicion': pos,
'tipo': 'Overflow',
'numero_control': alumno['numero_control'],
'nombre': alumno['nombre']
})
alumnos_ordenados.sort(key=lambda x: x['posicion'])
with open('alumnos_ordenados_simple.txt', 'w', encoding='utf-8') as file:
[Link]("LISTA DE ALUMNOS ORDENADOS POR POSICIÓN\n")
[Link]("=========================================\n")
[Link]("Principal (0-40):\n")
for alumno in [a for a in alumnos_ordenados if a['tipo'] == 'Principal']:
datos = f"{alumno['posicion']}, {alumno['numero_control']},
{formatear_nombre(alumno['nombre'])}"
[Link](datos + "\n")
[Link]("\n" + "==========================================="*60 + "\n")
[Link]("Overflow (41-60):\n")
for alumno in [a for a in alumnos_ordenados if a['tipo'] == 'Overflow']:
datos = f"{alumno['posicion']}, {alumno['numero_control']},
{formatear_nombre(alumno['nombre'])}"
[Link](datos + "\n")
espacio_principal, overflow, alumnos = reorganizar_alumnos()
generar_archivo_alumnos_ordenados(espacio_principal, overflow)
Orozco Cruz Marcos Augusto
Administración y Organización de datos
print("Archivo de alumnos:")