














































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
gria de parctica Ejercicios resueltos python
Tipo: Ejercicios
1 / 86
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!















































































Este documento no es un curso de programación. Tampoco es un curso de Python. Encontrarás muchos buenos cursos sobre dichos temas en libros e Internet. Este documento tan sólo contiene algunos ejercicios de programación, para ir practicando y fijando lo aprendido en clases de programación básica. No pretende que resuelvas los problemas en Python, aunque a principio de cada bloque de ejercicios haya un breve resumen de algunas características necesarias de dicho lenguaje. Este curso trabajamos con Python, pero en cursos anteriores utilizamos C o Java. El lenguaje de programación no importa y el entorno de desarrollo tampoco. De hecho, las soluciones que propongo no son “pythónicas”: intento que no contengan características distintivas de Python, sino estructuras de datos, de control de flujo, y operadores que puedes encontrar en cualquier lenguaje de programación. Para programar hace falta curiosidad, pasión por los rompecabezas, y muchas ganas de divertirse. En esta primera sección del documento adjunto algunas ideas para practicar la programación con Python de una manera muy lúdica.
Python tiene el módulo turtle , que te permite dibujar gráficos vectoriales al estilo del antiguo lenguaje de programación Logo. Un ejemplo de uso:
Python tiene el módulo pygame , que te permite programar videojuegos 2D. Un ejemplo de uso:
Blender , el programa libre y gratuito de diseño 3D, permite utilizar Python para interactuar con los objetos. Encontrarás varios videotutoriales en internet. La documentación de referencia:
¿Te atreves a utilizar una API para programar el comportamiento de un tanque, y lanzarlo a un arena a competir con otros tanques?
● Conocer la historia de los lenguajes de programación más importantes. ● Entender los conceptos de código fuente, código máquina, compilador e intérprete. ● Familiarización con un entorno integrado de desarrollo. ● Familiarización con la estructura de un programa en lenguaje Python. ● Familiarización con las funciones de entrada y salida del lenguaje Python. ● Familiarización con los tipos de datos en Python y comprensión de los errores debidos al rango de precisión de los tipos numéricos.
Algoritmo es la exposición, paso a paso, de la secuencia de instrucciones que se ha de seguir para resolver un determinado problema. Estructura de datos es una representación en forma lógica de la información, una manera de organizar una determinada información. Lenguaje de programación son el conjunto de instrucciones que permiten controlar una máquina. Un programa es la descripción de un algoritmo en un determinado lenguaje de programación. ● http://es.wikipedia.org/wiki/Algoritmo ● http://es.wikipedia.org/wiki/Estructura_de_datos ● http://es.wikipedia.org/wiki/Lenguaje_de_programación
El diagrama de flujo es un lenguaje visual de descripción de algoritmos. La representación gráfica nos permite entender fácilmente el proceso, aunque para procesos muy complejos los diagramas de flujo se vuelven demasiado extensos y, por lo tanto, intratables. ● http://es.wikipedia.org/wiki/Diagrama_de_flujo ● http://code.google.com/p/freedfd/
● http://www.youtube.com/watch?v=VvUuey811PU ● http://drakon-editor.sourceforge.net/ Ejemplo: descripción mediante diagrama de flujo del proceso a seguir un domingo por la mañana. INICIO FIN OPERACIÓN PEDIR DATOS DAR RESULTADOS ENLAZAR OPERACIONES Las cajas con forma de elipse indican el inicio y el final del algoritmo Las cajas con forma de rectángulo indican una operación, cálculos en general. Las cajas con forma de rombos indican una decisión. Según sea el resultado de evaluar la expresión lógica el codigo se bifurcará hacia un camino o hacia otro. Las cajas con forma de trapecios indican una petición de datos o una salida de resultados. Las flechas enlazan los diferentes pasos del algoritmo y nos indican el orden de estos. FALSO CONDICIÓN CIERTO
Los lenguajes de programación han evolucionado con el tiempo. Para hacernos una idea de dicha evolución y de las características que han ido incorporando podemos consultar las siguientes direcciones: ● http://es.wikipedia.org/wiki/Lenguaje_de_programación ● http://www.digibarn.com/collections/posters/tongues/ ● http://cdn.oreillystatic.com/news/graphics/prog_lang_poster.pdf ● http://www.levenez.com/lang/history.html Como curiosidad, en las siguientes direcciones podéis encontrar un mismo programa (“Hello, world!” y “99 Bottles of Beer”) escrito en centenares de lenguajes de programación diferentes: ● http://en.wikibooks.org/wiki/List_of_hello_world_programs ● http://99-bottles-of-beer.net/
Un compilador es el programa encargado en traducir un programa escrito en lenguaje de programación de alto nivel (código fuente) al lenguaje que es capaz de ejecutar un ordenador (código máquina). Para aprender más podemos consultar las siguientes direcciones: ● http://es.wikipedia.org/wiki/Compilador ● http://es.wikipedia.org/wiki/Intérprete_informático Los ejercicios de este documento se pueden resolver en el lenguaje de programación que se desee. Para dar soluciones y alguna pequeña explicación yo he escogido lenguaje Python. Para aprenderlo podéis encontrar innumerables cursos de lenguaje Python en Internet. Ahí van tres direcciones para comenzar: ● Historia de Python: https://es.wikipedia.org/wiki/Python ● Curso de Python: https://es.wikibooks.org/wiki/Python ● Normas de estilo de programación: http://es.wikipedia.org/wiki/Estilo_de_programación Para trabajar vamos a utilizar un Entorno Integrado de Desarrollo (IDE), donde podemos escribir nuestro programa, compilarlo y ejecutarlo, recibir ayuda sobre errores y sintaxis, y ejecutar instrucción a instrucción visualizando los valores que toman las variables (“depuración”). Existen IDEs ligeros, libres y gratuitos tanto para Linux como para Windows y MacOS. Yo os recomiendo Thonny , por su sencillez. Existen muchos otros IDEs más pesados y completos, también libres y gratuitos, como por ejemplo Pycharm Community.
1.1 Python es un lenguaje de programación de propósito general, interpretado, independiente de la plataforma, y con una gran comunidad detrás: https://www.jetbrains.com/research/python-developers-survey-2018/ Vamos a realizar una serie de ejercicios guiados para familiarizarnos con el entorno. En el próximo tema entraremos más en detalle con la sintaxis y en el significado de los programas. Actualmente Python va por la versión 3. 9. En nuestra aula, Ubuntu 18.04 viene con Python 3. y Python 2.7 ya instalados. Las versiones 2.7 y 3.x de Python son incompatibles. Esto quiere decir que un programa escrito para una versión no funcionará para la otra, y viceversa. Utiliza la versión más moderna. En Linux, Python ya viene instalado por defecto. En Windows no, así que debes descargarlo de esta dirección: https://www.python.org/downloads/windows/ a) Primero vamos a probar el entorno de Python des de la línea de comandos. Escribe en un terminal: $ python >>> print('¡Hola Mundo!') >>> print(3+4) Cada instrucción de Python que escribas se ejecutará y podrás ver el resultado. Va bien para hacer pruebas, pero para escribir un programa necesitamos un entorno de desarrollo. Para Python existen multitud de entornos. Des de IDLE, el sencillo entorno de desarrollo que acompaña a Python, hasta entornos muy completos y pesados como PyCharm, pasando por
print(f'Real con dos decimales : {dato2:.2f}') print(f'Real alineado derecha (12 pos 0 decim) : {dato2:12.0f}') print(f'Real alineado derecha (12 pos 2 decim) : {dato2:12.2f}') print(f'Real con formato exponencial : {dato2:e}') print(f'Cadena alin. izquierda (20 pos rell =) : {dato3:=<20}') print(f'Cadena centrada (20 pos rell ) : {dato3:^20}') print(f'Cadena alin. derecha (20 pos rell .) : {dato3:.>20}') Ejecuta el programa. Observa como los parámetros proporcionados a la función print alteran el formato de la impresión, según https://docs.python.org/3/library/string.html#formatspec. En una versión más antigua de Python el programa sería así: print('Pruebas de formatos de impresión') print('--------------------------------\n')
dato1 = 205 dato2 = 205. dato3 = 'hola'
print('Entero en bases 10 y 16 : %d %x' % (dato1 , dato1)) print('Entero alineado derecha (6 pos rell 0) : %06i' % (dato1)) print('Real sin formato : %f' % (dato2)) print('Real con dos decimales : %.2f' % (dato2)) print('Real alineado derecha (12 pos 0 decim) : %12.0f' % (dato2)) print('Real alineado derecha (12 pos 2 decim) : %12.2f' % (dato2)) print('Real con formato exponencial : %e' % (dato2)) print('Cadena alin. izquierda (20 pos) : %20s' % (dato3)) print('Cadena alin. derecha (20 pos) : %-20s' % (dato3)) 1.4 ¿Qué valor se almacena en las variables x e y al ejecutar cada una de estas sentencias? a) y = 2 b) y = 1 / 2 c) y = 13 // 4 d) y = 13 % 4 e) x = 2 ** 4 f) x = x + y - 3 1.5 ¿Cuál es la diferencia más destacable entre un compilador y un intérprete? Nombra tres lenguajes de programación compilados y tres más interpretados. 1.6 Si estás en clase, vas a jugar con los compañeros. Forma un grupo de dos a cuatro personas y toma el código de un ejercicio ex_1_1.py. Mientras una persona no mira, el resto añade un error al programa. La persona que no miraba debe encontrar dicho error. Si lo encuentra a simple vista suma dos puntos, o si lo encuentra ejecutando el programa en el intérprete suma un punto, pero si no lo encuentra será la persona que puso el error la que sume un punto.
La estructura de un programa en Python es:
# (opcional) Incluir bibliotecas del sistema y propias que utilizará el programa import módulo from módulo import función # (opcional) Declaraciones de clases class nombre_clase : declaración de métodos # (opcional) Declaraciones de funciones def nombre_función ( parámetros ): instrucciones [return valores ] # (opcional) Programa principal y variables globales instrucciones El siguiente programa en Python: print("Suma de dos enteros") a = int( input("Entre el dato 1: ") ) b = int( input("Entre el dato 2: ") ) suma = a + b print("La suma vale:" , suma) Lo puedo reescribir en Python como: def main(): print("Suma de dos enteros") a = int( input("Entre el dato 1: ") ) b = int( input("Entre el dato 2: ") ) suma = a + b print(f"La suma vale: {suma}") if name == "main": main() En C sería: void main (void) { int a, b, suma; printf("Suma de dos enteros\n"); printf("Entre el dato 1:"); scanf("%i", &a); printf("Entre el dato 2:"); scanf("%i", &b); suma = a + b; printf("La suma vale: i\n", suma); } En C++ sería: #include #include void main (void) { int a, b, suma; cout << "Suma de dos enteros" << endl;
● Trabajo con expresiones aritméticas. ● Trabajo con expresiones lógicas. ● Trabajo con asignaciones. ● Trabajo con operaciones de entrada y salida.
● Variables: Un programa está compuesto por instrucciones que operan sobre información, y por dicha información, que se almacena en celdas de memoria llamadas variables a las que se accede a través de un nombre. En Python el nombre de una variable puede contener letras, cifras, y símbolos unicode, pero no puede comenzar por un número, ni contener operadores, ni ser una palabra reservada del lenguaje de programación. Por ejemplo: i , año , x1, dni_alumno. ● Tipos de datos: La información almacenada en variables y procesada por instrucciones puede ser de varios tipos. En Python estos son:
Por ejemplo:
Y también tenemos comentarios de varias líneas: ''' comentarios ''' Por ejemplo: ''' Este comentario comenzó en la línea de arriba y acaba en esta línea ''' ● Asignación: variable = expresión Por ejemplo: x = 4 x = y = 0 x , y = 4 , 5 x , y = [4 , 5] z = x - y a = 'hola' b = 'ase' c = a + ' k ' + b d = '-' * 100 e = f'El resultado es {x}' La instrucción de asignación evalúa una expresión “a la derecha del =” y la almacena en la variable “a la izquierda del =”, modificando el contenido de dicha variable. No confundir el = con una comparación o equivalencia. ● Operadores:
print('Área =', a) print('Perímetro =', p) ¿Qué variables son de entrada, qué variables son de salida, y cuáles auxiliares? ¿Se pueden declarar constantes en Python, como por ejemplo PI? ¿Por qué ponemos un conversor de tipo (“float”) delante de la entrada de datos (“input”)? ¿Qué pasaría si no? 2.2 Crea un programa llamado ex 2 2 , que pida tres notas y calcule la media. 2.3 Crea un programa llamado ex 2 3 , que pida dos puntos del espacio bidimensional y calcule el punto medio según la fórmula: Sean los puntos ⃗ a =( ax , ay ) y ⃗ b =( bx , by ) entonces m ⃗ =⃗ a + ⃗ b =( ax + bx 2
ay + b (^) y 2
2.4 Crea un programa llamado ex 2 4 , que dado un número entero que designa un periodo de tiempo expresado en segundos, imprima el equivalente en días, horas, minutos y segundos. Por ejemplo: 300000 segundos serán 3 días, 11 horas, 20 minutos y 0 segundos. Por ejemplo: 7400 segundos serán 0 días, 2 horas, 3 minutos y 20 segundos. Los próximos ejercicios de sistemas, ciberseguridad, y Raspberry/Arduino no mejorarán tus conocimientos ni de algorítmica ni del lenguaje de programación utilizado. Consisten en investigar sobre el uso de alguna librería para entretenernos programado un caso real. 2.5 (Sistemas) Crea un programa llamado ex 2 _ 5_ , que dado el PID de un proceso recibido por línea de comandos, imprima: a) información relevante de dicho proceso, y b) dónde se encuentra el archivo ejecutable. Pistas: juega con subprocess.check_output() o con psutil.Process() 2.6 (Ciberseguridad) Abre un terminal y observa los puertos abiertos con el comando ss -penta. A continuación crea un programa llamado ex_2_6 que analice un puerto TCP abierto y otro cerrado. Pistas: utiliza Scapy https://scapy.readthedocs.io/en/latest/usage.html 2.7 (Arduino y Raspberry Pi) Comenzaremos con ejercicios muy básicos, como encender y apagar un LED. Debes saber que Arduino se programa en C, pero que hay librerías de Python que permiten a un
programa comunicarse con la placa Arduino mediante el puerto USB/serie. Mira: