s3Eva2015TII_T2 Gestionar mensajes con etiquetas

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')
        ...
etiquetas con #

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

Ejercicios resueltos/Ejemplos por año

Ejemplos 1ra Evaluación

1ra Eva 2020-2011

1ra Eva 2010-2001

Ejemplos 2da Evaluación

2da Eva 2020-2011

2da Eva 2010-2001

Ejemplos 3ra Evaluación

3ra Eva 2020-2011

3ra Eva 2010-2001