You are on page 1of 4

VJ1203  Programacin I Prctica 3: Secuencias y funciones Segunda Parte (4 sesiones)

En el Aula Virtual encontraris un chero con cdigo que os puede ayudar a probar vuestros programas. Bsicamente es un mdulo modulo_test.py con una sola funcin test que se puede utilizar en llamadas del tipo:
test(divisores(10) == [1,2,5,10])

UNA FORMA SENCILLA DE PROBAR VUESTROS PROGRAMAS AL TRABAJAR CON FUNCIONES:

para comprobar si nuestra funcin divisores se comporta como debera, devolviendo la lista [1,2,5,10] dado el nmero 10. Tal y como se muestra en el chero divisores_test.py, la forma de utilizar la funcin test en vuestros programas sera:
# - Programa principal # Ejecutar el test slo al ejecutar el fichero (y no al importarlo) if __name__ == '__main__': # Cdigo para ejecutar la funcin divisores con los datos # de prueba test(divisores(10) == [1,2,5,10])

Ejercicios de funciones con clculos matemticos

modo que resuelvas el mismo problema deniendo y utilizando la siguiente funcin calcula_TAE(inters, nmero_meses), que dado un inters y un nmero de meses devuelva la tasa anual equivalente al inters de un prstamo. Utilizando la funcin anterior, el programa principal debe mostrar la tasa anual equivalente. Esto se debe repetir hasta que se introduzca un inters 0

Ej. 14  Calcular la tasa anual equivalente al inters de un prstamo (OBL). Modica el programa que hiciste en el ejercicio 1 de la prctica 1 de Ej. 15  Calcular los intereses anuales a partir de la tasa anual equivalente al inters de un prstamo. Dene la funcin
calcula_inters_anual(capital, inters, nmero_meses), que dado un

capital, un inters nominal y un nmero de meses devuelva los intereses a abonar en un ao. El programa principal debe pedir los tres datos y utilizando la funcin del ejercicio anterior debe mostrar los intereses a abonar. Esto se debe repetir hasta que se introduzca un capital 0

Ejercicios de funciones con nmeros


Escribe una funcin que devuelva todos los divisores de un nmero entero positivo (o sea, mayores que cero). Despus, escribe un programa que pida nmeros por teclado y utilizando la funcin anterior muestre en pantalla sus divisores.

Ej. 16  Calcular los divisores de un nmero (OBL).

Ej. 17  Nmeros altamente compuestos (OBL). Tomando como punto de partida la funcin del Ej. 16, dene la funcin es_altamente_compuesto, que

dado un nmero entero positivo devuelva un booleano que indique si el nmero es altamente compuesto, es decir, si tiene ms divisores que cualquier nmero menor que l. Por ejemplo, es_altamente_compuesto(4) deber devolver True porque el 4 tiene tres divisores, mientras que el 1, el 2 y el 3 slo tienen uno o dos divisores. Sin embargo, es_altamente_compuesto(3) deber devolver False porque el 3 tiene dos divisores y el 1 y el 2 tienen uno y dos divisores, respectivamente. Escribir un programa que pida un nmero por teclado y escriba por pantalla si se trata de un nmero altamente compuesto. : La funcin es_altamente_compuesto debe llamar obligatoriamente a calcula_divisores.

Nota

Ej. 18  Nmeros amigos. Dos nmeros son amigos si la suma de los divisores

del primer nmero (excluido l) es igual al segundo nmero y viceversa, es decir, la suma de los divisores del segundo nmero (excluido l) es igual al primer nmero. Por ejemplo, 220 y 284 son amigos. Los divisores de 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110, que suman 284 y los divisores de 284 son 1, 2, 4, 71 y 142, que suman 220. Dene una funcin utilizando la que has hecho en el ejercicio anterior que devuelva un valor booleano que indique si dos nmeros naturales son amigos. Haz un programa que pida dos nmeros por teclado y, utilizando la funcin anterior, muestre en pantalla si son amigos.

Ej. 19  Nmeros odiosos. Un nmero odioso es un nmero que, cuando se


pasa a base 2, tiene un nmero impar de 1's. Por ejemplo, el 1, el 2 (10), el 4 (100), el 7 (111), el 8 (1000), el 11 (1011), . . . En este ejercicio tienes que crear las siguientes funciones: decimal_a_binario(numero) que dado un numero devuelve una cadena que contiene la codicacin en binario de dicho nmero. cuantos(cad,c) que devuelve el nmero de veces que se repite el carcter c en la cadena cad. es_odioso(numero) que devuelve un valor booleno que indique si el numero es odioso.

Escribir un programa que pida un nmero por teclado y muestre por pantalla si es odioso.

Ejercicios de funciones con cadenas

una funcin que ltre los caracteres duplicados de una cadena. Es decir, dada una cadena, la funcin debe devolver una nueva cadena en la que no aparezcan caracteres duplicados. As, por ejemplo, dada la cadena 'aaabbbcb', la funcin debera devolver la cadena 'abc' Crea el programa principal que lea una cadena y, utilizando la funcin anterior, muestre la cadena resultante de ltrar los caracteres duplicados. El cifrado de Csar es una tcnica de encriptacin en la que cada letra se sustituye por una letra que se determina en funcin de un nmero o desplazamiento dado. Por ejemplo, si el nmero es 3, la letra 'a' se sustituira por la letra 'd'; la letra 'b' por la letra 'e', etc, como sigue:

Ej. 20  Filtrar los caracteres duplicados de una cadena (OBL). Escribe

Ej. 21  Encriptacin (OBL).

Escribe una funcin que, dada una cadena y un nmero entero que representa el desplazamiento, calcule el cifrado Csar de dicha cadena. Por ejemplo, si se introduce la cadena 'esto es un ejemplo' y el entero 2, la cadena resultante sera 'guvq gu wp glgornq'. El programa principal debe leer una cadena y el nmero de posiciones de desplazamiento y, utilizando la funcin anterior, debe mostrar el cifrado Csar de la cadena introducida.

Ej. 22  Men (OBL).

Realiza una funcin que muestre en pantalla como opciones los distintos ejercicios obligatorios de funciones con cadenas que has hecho, a continuacin lea de teclado una opcin (comprobando que es una opcin vlida) y devuelva dicho valor ledo. Haz un programa que utilizando la funcin anterior pida una opcin y en funcin del valor devuelto lea de teclado los datos correspondientes, llame a la funcin adecuada y muestre los resultados por pantalla. No copies las funciones de los anteriores ejercicios, importa las que necesites. cin que dada una cadena devuelva otra con las mismas palabras pero sustituyendo los que estn en mayscula por minscula, y viceversa, los que estn en mayscula por minuscula. Por ejemplo, ante la cadena 'Introduccin al lenGuaje pythoN 3.0', debe devolver 'iNTRODUCCIN AL LENgUAJE PYTHOn 3.0'. Para simplicar el ejercicio, no debes modicar los caracteres distintos de las letras del alfabeto ingls (vocales acentuadas, nmeros, etc). Crea un programa que utilice la anterior funcin.

Nota: Ej. 23  Invertir maysculas y minsculas de una cadena. Escribe una fun-

Nota: No se pueden utilizar en este ejercicio las funciones proporcionadas por Python que realizan lo que se pide.

Ejercicios de funciones con listas

Ej. 24  Ordenar una lista (OBL). En este ejercicio has de implementar una
funcin que ordene, de menor a mayor, una lista de valores numricos. Esto es, por ejemplo, dada la lista {5, 1, 7, 3, 4} devuelva la lista {1, 3, 4, 5, 7}. Para ello, vas a tener que denir las siguientes funciones: ordenar_lista(lista), que construye y devuelve una lista que tiene sus elementos ordenados de menor a mayor, calcula_minimo(lista), que devuelve el mnimo elemento de una lista Escribe un programa que, haciendo uso de la funcin anterior, lea de teclado una lista de nmeros enteros y muestre en pantalla la lista resultante de ordenar de menor a mayor sus elementos.

utilizando las funciones: leer_lista(), que construye y devuelve una lista de altitudes ledas de teclado, calcula_desniveles(recorrido), que devuelve tanto el desnivel positivo como el negativo acumulados de la ruta. Escribe un programa que utilizando las funciones anteriores lea de teclado una secuencia de altitudes y muestre en pantalla los desniveles positivo y negativo acumulados.

Ej. 25  Calcular el desnivel acumulado de una ruta. Modica el programa que hiciste en el Ej. 6 de modo que resuelvas el mismo problema deniendo y

Ejercicios de funciones con el mdulo turtle

binarizacion(imagen, umbral) que dada una matriz (que representa una imagen en niveles de gris) y un umbral, la binarice. filtrado(imagen, umbral) que dada una matriz (que representa una imagen en niveles de gris) y un umbral, la transforme obteniendo el negativo de la imagen binarizada por umbral. ref_ver(imagen) que dada una matriz (que representa una imagen en niveles de gris) la transforme realizando su reexin vertical. Crea un programa que muestre en pantalla como opciones los distintos procedimientos implementados, a continuacin lea de teclado una opcin y muestre el resultado de aplicar dicho procedimiento a la imagen pacman.txt

Ej. 26  Funciones sobre imgenes (OBL). Utilizando los programas que hiciste en los ejercicios Ej. 8, Ej. 9 y Ej. 10 dene los siguientes procedimientos:

You might also like