Ejercicio: 3Eva2015TII_T2 Gestionar mensajes con etiquetas
El ejercicio requiere usar un menú y las funciones del tema 1. Las opciones del menú son las indicadas en el enunciado.
opcion = 0
while not(opcion==4):
print('1. Ingresar mensaje')
print('2. Usuario frecuente')
print('3. Tendencias')
print('4. Salir')
opcion = int(input('cual opcion: '))
if (opcion==1):
print('1. Ingresar mensaje')
...

La opción para ingresar mensaje es la mas simple de realizar, se piden los datos de quien es el mensaje y lo que dice. Los valores se añaden a la lista correspondiente.
if (opcion==1):
print('1. Ingresar mensaje')
quien = input('nombre usuario: ')
dice = input('mensaje: ')
usuario.append(quien)
mensaje.append(dice)
La opción para usuario frecuente ya requiere usar la función tabulando() del tema 1, con lo que se puede usar el algoritmo de búsqueda del mayor para encontrar el usuario mas frecuente.
if (opcion==2):
print('2. Usuario frecuente')
quienes = tabulando(usuario)
n = len(quienes)
mayor = 0
k = 1
while not (k>=n):
if (quienes[k][1]>quienes[mayor][1]):
mayor = k
k = k + 1
print('los usuarios:')
print(quienes)
print('el usuario mas frecuente es: ',
quienes[mayor][0])
El resultado para las otras opciones se añaden en la propuesta de solución completa.
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2015_T2 Gestionar mensajes con etiquetas
# version con lazos y condicionales.
# tarea: simplificar con 'for'
import numpy as np
# Tema 1. literal a -------------------------
def buscaetiquetas(mensaje):
n = len(mensaje)
etiqueta = []
copiar = 0 # no hay etiqueta
i = 0
while not(i>=n): # caracter en mensaje
if (mensaje[i]=='#'): # encuentra etiqueta
copiar = 1 # hay etiqueta
encontre = ''
if (copiar==1): # copiar etiqueta
encontre = encontre + mensaje[i] #copia caracter
if (i<(n-1)): # hay caracteres
# es última letra de palabra ' ', ','
if (mensaje[i+1]==' ' or mensaje[i+1]==','):
copiar = 0
etiqueta.append(encontre)
if (i==(n-1)): # se acabó el mensaje
etiqueta.append(encontre)
i = i + 1
return(etiqueta)
# Tema 1. literal b
def tabulando(lista):
n = len(lista) # usando listas
repetido = np.zeros(n,dtype=int)
numrepetido = 0
# Marcando repetidos
i = 0 # referencia
while not(i>=(n-1)):
j = i + 1 # compara resto de lista
while not(j>=n):
if (lista[i]==lista[j]):
repetido[j]=1
numrepetido=numrepetido+1
j = j + 1
i = i + 1
# lista unicos sin contar
unicos = []
i = 0
while not(i>=n):
if (repetido[i]==0):
unicos.append([lista[i],0])
i = i + 1
k = len(unicos)
# cuenta unicos
i = 0
while not(i>=n):
j = 0 # busca posicion en unicos
while not(j>=k):
if (lista[i]==unicos[j][0]):
unicos[j][1] = unicos[j][1]+1
j = j + 1
i = i + 1
return(unicos)
# Tema 2. Administra mensajes de una red social -------------------------
# datos de prueba
lista = [['Juan','Estamos en exámenes en la #ESPOL'],
['María','Seré voluntaria en #AJA'],
['Pedro','Yo estudio en #FCNM de la #ESPOL'],
['Ana','Lean el artículo de #ESPOL en #ELUNIVERSO del domingo 7 de febrero']]
usuario = ['Juan','María','Pedro','Ana']
mensaje = ['Estamos en exámenes en la #ESPOL',
'Seré voluntaria en #AJA',
'Yo estudio en #FCNM de la #ESPOL',
'Lean el artículo de #ESPOL en #ELUNIVERSO del domingo 7 de febrero']
opcion = 0
while not(opcion==4):
print('1. Ingresar mensaje')
print('2. Usuario frecuente')
print('3. Tendencias')
print('4. Salir')
opcion = int(input('cual opcion: '))
if (opcion==1):
print('1. Ingresar mensaje')
quien = input('nombre usuario: ')
dice = input('mensaje: ')
usuario.append(quien)
mensaje.append(dice)
if (opcion==2):
print('2. Usuario frecuente')
quienes = tabulando(usuario)
n = len(quienes)
mayor = 0
k = 1
while not (k>=n):
if (quienes[k][1]>quienes[mayor][1]):
mayor = k
k = k + 1
print('los usuarios:')
print(quienes)
print('el usuario mas frecuente es: ',
quienes[mayor][0])
if (opcion==3):
print('3. Tendencias')
n = len(mensaje)
todaetiqueta = []
i = 0
while not(i>=n):
cuales = buscaetiquetas(mensaje[i])
m = len(cuales)
if (m>0):
j = 0 #añade cada etiqueta
while not(j>=m):
todaetiqueta.append(cuales[j])
j = j+1
i = i + 1
etiquetas = tabulando(todaetiqueta)
n = len(etiquetas)
mayor = 0
k = 1
while not (k>=n):
if (etiquetas[k][1]>etiquetas[mayor][1]):
mayor = k
k = k + 1
print(etiquetas)
print('La tendencia es: ',etiquetas[mayor][0])
if (opcion==4):
print('Gracias por usar el software')