¿Quién envió más correos?
Descripción
Para probar el programa puedes usar los archivos:
Este programa almacena el nombre de los remitentes que enviaron mensajes e imprime la dirección de correo que envió más correos.
Para hacer esto busca las líneas que comienzan con “From” (ignorando las que empiezan con “From:”, es decir que tienen el símbolo : después de “From”), la segunda palabra en estas líneas es el remitente.
Línea de ejemplo:
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
Al final del programa imprime la dirección de correo con más envíos y la cantidad de correos enviados.
Ejemplo de ejecución
Ingresa un nombre de archivo: mbox-short.txt
cwen@iupui.edu 5
Ingresa un nombre de archivo: mbox.txt
zqian@umich.edu 195
Solución
Mostrar solución
mensajes_remitente = {}
nombre_archivo = input('Ingresa un nombre de archivo: ')
with open(nombre_archivo, 'r') as archivo:
for linea in archivo:
if linea.startswith('From '):
remitente = linea.split(' ')[1]
mensajes_remitente[remitente] = mensajes_remitente.get(remitente, 0) + 1
cantidad_mensajes_remitente = []
for remitente, cantidad in mensajes_remitente.items():
cantidad_mensajes_remitente.append((cantidad, remitente))
cantidad_mensajes_remitente.sort(reverse=True)
remitente_max = cantidad_mensajes_remitente[0]
print(remitente_max[1], remitente_max[0])
Fuente del ejercicio: https://es.py4e.com/html3/10-tuples