$latex I_{superior} = 40 \left( \dfrac{131+194}{2} \right) +100\left( \dfrac{194+266}{2} \right) + $
una formula
$latex I_{superior} = 40 \left( \dfrac{131+194}{2} \right) +100\left( \dfrac{194+266}{2} \right) + $
Curso con Python - CCPG1043/CCPG1001-FIEC-ESPOL
$latex I_{superior} = 40 \left( \dfrac{131+194}{2} \right) +100\left( \dfrac{194+266}{2} \right) + $
una formula
$latex I_{superior} = 40 \left( \dfrac{131+194}{2} \right) +100\left( \dfrac{194+266}{2} \right) + $Actividades: 1ra Evaluación
Actividades: 2da Evaluación
Descarga de software libre
Funciones de Referencia usadas en evaluación
Evaluaciones – ejercicios por Temas
Ejemplos – ejercicios resueltos con Python
Para mostrar el uso de una variable en una función matemática, se puede usar las gráficas interactivas. La librería Matplotlib dispone de los componentes que permiten seleccionar valores de manera dinámica y ajustar la gráfica 2D sin tener que detener y volver a ejecutar el algoritmo.
Si ya conoces cómo realizar la gráfica para una función senoidal y quieres observar el efecto de cambiar el valor de la amplitud de forma interactiva puedes usar una barra de desplazamiento.
La barra se conoce como Slider que se encuentra en matplotlib.widgetsy requiere dos partes:
Por ejemplo, para interactuar con la amplitud se define ampl_slider como una barra ubicada en amp_donde, con etiqueta 'ampl', valor mínimo 0.2 y valor máximo y_max. Los cambios de valor al desplazar la barra de determinan con valstep, para este caso con pasos de 0.1.
La variable se inicializa con el valor dado en freq y se dibuja en sentido 'vertical'.
# amplitud slider amp_donde, [x,y,ancho,alto] ampl_donde = plt.axes([0.1, 0.25, 0.03, 0.65]) ampl_slider = Slider(ampl_donde, 'ampl', 0.2, y_max, valinit=ampl, valstep = 0.1, orientation='vertical')
Para cambiar los valores cuando se desplaza la barra o Slider, se crea un procedimiento de actualización de gráfica grafico_actualiza(). Se obtiene el valor de la variable ampl desde ampl_slider.val. Se actualiza los valores de la función fi que actualiza la linea del gráfico y que finalmente actualiza la figura. Para relacionar los cambios generados por el Slider con la gráfica se define ampl_slider.on_changed(grafico_actualiza)
def grafico_actualiza(val): ampl = round(ampl_slider.val,1) # un decimal fi = fx(ampl,freq,fase,ti) # actualiza valores de f(x) linea.set_ydata(fi) # redibuja linea fig.canvas.draw_idle() # actualiza figura
Para añadir los cambios en los parámetros de frecuencia y fase, se repite el proceso de crear un Slider en el intervalo [0,2π].
Para restaurar la gráfica al valor inicial dado en amplitud, frecuencia y fase se usa un botón boton_rst , donde se reinicia las barras creadas.
# boton reinicio de gráfica [x,y,ancho,alto] boton_rstdonde = plt.axes([0.8, 0.025, 0.1, 0.04]) boton_rst = Button(boton_rstdonde, 'Reset', hovercolor='0.975') def grafico_reinicia(event): ampl_slider.reset() return() boton_rst.on_clicked(grafico_reinicia)
Se adjunta el algoritmo en Python integrado
# Señales continuas: senoidal # gráfica interactiva con Slider import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import Slider, Button # INGRESO ampl = 2.0 freq = 1.0 fase = 0.0 fx = lambda ampl,freq,fase,t: ampl*np.sin(2*np.pi*freq*t+fase) a = 0 #intervalo [a,b] b = 1 muestras = 61 y_max = 6.0 # rango vertical y_min = -y_max DosPi = 2*np.pi # PROCEDIMIENTO ti = np.linspace(a, b, muestras) fi = fx(ampl,freq,fase,ti) # SALIDA # GRAFICA fig, graf = plt.subplots() linea, = plt.plot(ti, fi) titulo = str(ampl)+'*sin(2*pi*'+str(freq)+'*t+'+str(fase)+')' plt.title(titulo) plt.grid() plt.axis([a, b, y_min, y_max]) # cotas gráfico plt.tight_layout() plt.subplots_adjust(left=0.25, bottom=0.25) # espacios # slider: barras para valores # amplitud slider amp_donde, [x,y,ancho,alto] ampl_donde = plt.axes([0.1, 0.25, 0.03, 0.65]) ampl_slider = Slider(ampl_donde, 'ampl', 0.2, y_max, valinit=ampl, valstep = 0.1, orientation='vertical') # frecuencia slider [x,y,ancho,alto] freq_donde = plt.axes([0.25, 0.15, 0.65, 0.03]) freq_slider = Slider(freq_donde, 'freq', 0.1, np.round(DosPi,1), valinit=freq, valstep = 0.1) # fase slider [x,y,ancho,alto] fase_donde = plt.axes([0.25, 0.1, 0.65, 0.03]) fase_slider = Slider(fase_donde, 'fase', 0.0, np.round(DosPi,1), valinit=fase, valstep = 0.1,) def grafico_actualiza(val): ampl = round(ampl_slider.val,1) # un decimal freq = round(freq_slider.val,1) # un decimal fase = round(fase_slider.val,1) # un decimal fi = fx(ampl,freq,fase,ti) # actualiza valores de f(x) linea.set_ydata(fi) # redibuja linea titulo = str(ampl)+'*sin(2*pi*'+str(freq)+'*t+'+str(fase)+')' graf.set_title(titulo) fig.canvas.draw_idle() # actualiza figura ampl_slider.on_changed(grafico_actualiza) freq_slider.on_changed(grafico_actualiza) fase_slider.on_changed(grafico_actualiza) # boton reinicio de gráfica [x,y,ancho,alto] boton_rstdonde = plt.axes([0.8, 0.025, 0.1, 0.04]) boton_rst = Button(boton_rstdonde, 'Reset', hovercolor='0.975') def grafico_reinicia(event): freq_slider.reset() ampl_slider.reset() fase_slider.reset() return() boton_rst.on_clicked(grafico_reinicia) plt.show()
Referencia: matplotlib.widgets.Slider
TELG1034 - Procesamiento Digital de Señales


Tema 4. (25 puntos) Implemente la función buscar_divisibles(numeros,divisor) que recibe como primer parámetro una lista con números enteros y como segundo parámetro un número entero positivo mayor a 0.
La función retorna una nueva lista con los números que son divisibles para el número recibido en el segundo parámetro.
Luego, implemente un programa principal y realice lo siguiente:
a. Genere una lista de 20 números aleatorios entre 2 y 200
b. Genere un número aleatorio entre 2 y 10.
c. Llame a la función con la lista de números y número aleatorio generados en los pasos anteriores y muestre la lista resultante.
Ejemplo de entrada
numeros_aleatorios = [81, 153, 192, 77, 70, 87, 182, 100, 171, 157, 132, 193, 170, 95, 173, 27, 98, 6, 44, 34] divisor = 9
Ejemplo de salida
[81, 153, 171, 27]
Referencia: 2Eva_IIT2002_T1 Verificar si es "Número perfecto"
Residuo de a para b
Tema 4. (25 puntos) Implemente la función rotacion_parcial(numeros, k) que recibe como parámetros una lista de números y un número entero positivo k mayor a cero y menor que el tamaño de la lista.
La función realiza una rotación parcial hacia la derecha de la lista, pero solo para los primeros k elementos y retorna la nueva lista.
Ejemplo de entrada
lista = [110, 202, 343, 40, 52, 657, 743, 81] k=3
Ejemplo de salida
[343, 110, 202, 40, 52, 657, 743, 81]
Para el ejemplo de k=3, solo los tres primeros elementos de la lista cambian su orden. El resto de
elementos de la lista mantienen su orden original.
│----- k=3 -----│ [110, 202, 343, │ 40, 52, 657, 743, 81] │ └───>│ │ └───>│ │ │ │<────────┘ │ [343, 110, 202, │ 40, 52, 657, 743, 81]
Tema 3. (25 puntos) Implemente la función siglas(frase,palabras_comunes) que reciba una frase y una lista de palabras comunes. Asuma que tanto las palabras de la frase como de la lista están en minúsculas.
La función debe generar una sigla utilizando las iniciales en mayúsculas de cada palabra.
La función debe omitir de la sigla palabras comunes como "de", "y", "en", etc. (definidas en el parámetro palabras_comunes), a menos que sean la primera o la última palabra de la frase.
Asuma que en la frase no existen signos de puntuación.
Ejemplo de entrada
frase = "el yin y el yang son conceptos filosóficos de la cultura china" palabras_comunes = ["el", "y", "de", "la", "son"]
Ejemplo de salida
"EYYCFCC"
Referencia: 3Eva_IT2007_T2 Función para crear Acrónimos
Tema 2. (15 puntos) Implemente un programa que:
a. Pida una palabra al usuario.
b. Pida al usuario una frase a la vez hasta que este ingrese la palabra "Basta".
c. Elimine de cada frase las comas y los puntos. Asuma que las frases no tienen ningún otro signo de puntuación.
d. Al finalizar, muestre por pantalla cuántas veces se repitió la palabra ingresada en el paso 1 en las frases ingresadas en el paso 2. Al momento de contar asegúrese de considerar mayúsculas y minúsculas para que cuenten como la misma palabra. Ejemplo: 'hola' y 'Hola' son la misma palabra.
Asegúrese de comparar palabras exactas. Ejemplo: "Hola" en "Estoy en Holanda" no cuenta.
Ejemplo de entrada:
Ingrese una palabra: hola Ingrese una frase (Ingrese "Basta" para terminar): Hola, estoy bien Ingrese una frase (Ingrese "Basta" para terminar): Hola. No me gusta saludar diciendo hola Ingrese una frase (Ingrese "Basta" para terminar): Basta
Ejemplo de salida:
La palabra "hola" se repitió 3 veces en las frases ingresadas.
Referencia: 3Eva_IIT2015_T1 Mensajes en redes sociales y etiquetas
Tema 1. (15 puntos) Implemente la función buscar_palindromos(mensaje) que recibe un mensaje y retorna una lista con todas las palabras (de 2 o más letras) del mensaje que son palíndromos. Asuma que todas las palabras están en minúsculas y no existen signos de puntuación.
Recuerde que un palíndromo es una cadena que se lee igual de izquierda a derecha o de derecha a izquierda. Por ejemplo: madam, ana, somos, reconocer, anilina.
Ejemplo de entrada
mensaje = "ana y yo somos amigos y trabajamos en la torre del radar"
Ejemplo de salida
['ana', 'somos', 'radar']
Referencia: 1Eva_IIT2013_T2 Números palíndromo con Python