carmi1909@ciencias.unam.mx

ejercicios_resueltos_5
 avatar
unknown
plain_text
3 years ago
6.2 kB
6
Indexable
#%% Ejercicio 121- Contar los elementos
"""
Descripción:
    La biblioteca estándar de python incluye un método llamado count que determina
    cuántas veces está en la lista un valor específico. En este ejercicio, vas a crear una
    función nueva llamada countRange que determine y regrese el el número de elementos 
    dentro de una lista que sean mayor o igual que un valor mínimo o menor que algún
    valor máximo. Tu función debe tomar tres parámetros: la lista, el valor mínimo 
    y el valor máximo. Debe regresar un resultado entero mayor o igual a 0. 
    Agrega un programa principal 'main' que demuestre tu función utilizando diferentes
    listas y valores mínimos y máximos. Asegurate de que tu progrma funcione correctamente
    para listas de números enteros y flotantes
Solución:
    Definir una función que cuente los elementos dentro del rango aceptable:
        Iniciar contador
        Por cada elemento de la lista:
            Si mínimo <= elemento < máximo
            añadir uno al contador
        regresar contador    
    
    Definir una función principal (main) junto con una lista
        Probar el caso donde algunos elementos están en el rango
        Probar el caso donde todos los elementos están en el rango
        Probar el caso donde no hay elementos en el rango
        Probar el caso donde la lista está vacía
        Probar el caso con valores duplicados

Llamar la función principal
"""
from fc.tpw.mer_5 import main_121

main_121()
"""
Al definir la función me percaté que en vez de escribir if minimo <= e and e < maximo, se puede
escribir simplemente if minimo <= e < maximo ya significan lo mismo y no cambia el programa
"""
#%% Ejercicio 122: Tokenizar una cadena

"""
Descricpción:
    Tokenizar es el proceso de convertir una cadena a una lista de subcadenas, conocidas
    como tokens. En muchas circunstancias, es más facíl de trabajar con una lista de tokens que
    con la cadena original porque la cadena original puede tener un irregula espaciado.
    En algunos casos también se requiere un trabajo sustancial para determinar dónde
    termina un token y comienza el siguiente
    
    En una expresión matemáticam, los tokens son elementos como los operadores, números y
    paréntesis. Algunos tokens, como *, /, ^, ( y ) son fáciles de identificar porque
    el token es un sólo caracter, y el caracter nunca es parte de otro token. Los símbolos
    + y - son un poco más desafiantes para manejar porque pueden representar el operador 
    de adición o substraccion, o pueden ser parte de un token numérico
    
    Escribe una función que tome una cadena que contenga una expresión matemática como su
    único parámetro y la rompa en una rista de tokens. Cada token debe ser un paréntresis,
    un operador. o un numero con un  + o - opcional (para simplificar solo trabajaremos con
    números enteros en este problema). Regresa la lista de tokens como el resultado de la 
    función.
    
    Debes asumir que la cadena pasada a tu función diempre contiene una expresión matemática
    válida formada por paréntesis, oparadore y enteros. Sin embargo, tu funciíon debe manejar
    cantidades variables de espacios en blanco entre estos elementos Agrega una función 
    principal 'main' que demuestre tu función tekenizadora leyendo una expresión del
    usuario e imprimiendo la lista de tokens. Asegurate que el programa principal no 
    corra cuando el archivo que contenga tu solución sea importado a otro programa
Solución:
    Definir la funcion lista_token que tome como parámetro una cadena
    Remplazar espacios de la cadena por ""
    Definir la lista de TOKENS como una lista vacía
    Iniciar contador
    Mientras contador < tamaño de cadena:
        Si (elemento de la cadena correspondiente al indice del contador) es *, /, ^, ( 
        o ):
            agregar a TOKENS el elemento
            agregar uno al contador
            
        Si el elemento es + o -:
            Si elemento > 0 y (0 <= el elemento anterior <= 9 o el elemento anterior es ")"):
                agregar a TOKENS el elemento
            En otro caso(cuando + o - es parte de un número):
                numero = elemento
                agregar uno al contador
                mientras contador(+1) < tamaño de cadena y 0 <= (elemento de la cadena correspondiente al indice
                                                             del contador) <= 9:
                    numero = numero + elemento
                    agregar uno al contador
                agregar a TOKENS el número
        
        Si el elemento es un número:
            Si 0 <= (elemento de la cadena correspondiente al indice del contador) <= 9:
                numero = ""
                mientras contador < tamaño de la cadena y  0 <= (elemento de la cadena correspondiente
                                                                 al indice del contador) <= 9:
                    numero = numero + elemento
                    agregar uno al contador
                agregar a TOKENS el número
        
        En otro caso
            regresar una lista vacía
    Regresar la lista TOKENS
    
Definir una función principal (main):
    Pedir al usuario una expresion matemática
    tokens = lista_token(expresión del usuario)
    imprimir("Los tokens son: " tokens)

Correr la función main únicamente si el archivo no ha sido importado            
"""

from fc.tpw.mer_5 import main_122
    
if __name__ == "__main__":
    main_122()
"""
La parte mnás complicada de este ejercicio fue entender el programa como tal, me costó entender
lo que hacía para identificar cuando la expresión matemática contenía un número, para solucionarlo
escribí mi interpretación de los codigos en el método de solución del problema (los comentarios multilinea
de al principio), gracias a esto entendí que los ciclos dentro del ciclo eran para identificar cuántos dígitos 
contenía el número en la expresión y así hasta que ya no fueran números repetir el ciclo principal
"""                    
Editor is loading...