Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
GUIA DE EJERCICIOS PYTHON VERSIÓN 3 PROGRAMACIÓN SEMESTRE I DEPARTAMENTO DE CIENCIAS DE LA INGENIERIA INGENIERIA CIVIL EN INFORMÁTICA OSORNO, CHILE Elaborado por: Victor Arcides Saldivia Vera victor.saldivia@ulagos.cl Ingeniero Civil en Informática / Licenciado en Ciencias de la Ingenierı́a Redactado en Mayo de 2023 Victor Arcides Saldivia Vera Índice general 1. Introducción 1 2. Guia de Ejercicios 2 2.1. Python Parte I: Tipos de Datos y Condicionales . . . . . . . . . . . . . . . . 2 3. Soluciones 4 3.1. Ejercicios Python Parte I . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4. Bibliografı́a 9 Ingenierı́a Civil en Informática - Ulagos I Victor Arcides Saldivia Vera Índice de figuras Ingenierı́a Civil en Informática - Ulagos II Victor Arcides Saldivia Vera Índice de extractos de código 3.1. Número mayor y menor entre tres números . . . . . . . . . . . . . . . . . . 4 3.2. Palabra que tiene más caracteres y la que tiene menos . . . . . . . . . . . . 4 3.3. Perı́metro y área de un triángulo utilizando la fórmula de Herón . . . . . . . . 5 3.4. Comparación de caracteres iniciales y finales en un nombre . . . . . . . . . . 5 3.5. Promedio ponderado de tres laboratorios ingresados por usuario . . . . . . . 6 3.6. Grupos de estudiantes buscando elementos en común . . . . . . . . . . . . . 6 3.7. Grupos de trabajadores en listas y con salida en diccionario . . . . . . . . . . 6 3.8. Ingreso de un mes y su estación correspondiente como salida . . . . . . . . . 7 3.9. Operaciones con listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.10. Creación de diccionarios y claves con diferentes tipos de elementos anidados 8 Ingenierı́a Civil en Informática - Ulagos III Victor Arcides Saldivia Vera 1. Introducción Esta Guı́a se divide en tres secciones principales. La primera parte de esta guı́a 2.1, con- siste en ejercicios de Python que contempla el contenido inicial de Python visto en clases, incluyendo tipos de datos como: datos numéricos, strings, booleanos, listas, sets, tuplas y dic- cionarios. También se incluye ejercicios con el uso de condicionales y operadores. La segunda parte de la guı́a se enfoca en ejercicios utilizando condicionales, bucles y todas las estructuras de programación aprendidas para que el estudiante pueda resolver pro- blemas de manera eficiente. Por último la tercera parte de la guı́a se enfoca en ejercicios donde se debe utilizar fun- ciones y el uso de bibliotecas. Además de todo esto, se incluye en el capı́tulo 3 las soluciones de los ejercicios resueltos paso a paso. Todo el contenido está enfocado en reforzar el conocimiento adquirido por los estudian- tes y poner en práctica los conceptos de programación aprendidos en clase. Esta guı́a también puede ser útil tanto para docentes como tutores que buscan un material práctico para sus es- tudiantes, entregando esta guı́a para complementar y reforzar los conceptos aprendidos de Python. Esta guı́a de ejercicios se irá actualizando durante el transcurso del primer semestre del pre- sente año, la cuál estará disponible para estudiantes y tutores. Ingenierı́a Civil en Informática - Ulagos 1 Victor Arcides Saldivia Vera 2. Guia de Ejercicios 2.1. Python Parte I: Tipos de Datos y Condicionales 1. Realizar un algoritmo que indique el número menor y el número mayor entre tres enteros leidos por consola. Solo se deben ingresar números enteros. 2. Escribir un programa que pida al usuario ingresar dos palabras y las guarde en dos va- riables diferentes. Luego imprimir cuál palabra tiene más caracteres y cuál tiene menos caracteres. 3. Desarrollar un programa que al momento de ingresar los lados de un triangulo (a, b y c) en consola, indique si es equilátero, isósceles o escaleno. También se solicita calcular el área utilizando la formula de Herón: A2 = p(p− a)(p− b)(p− c), donde p = a+ b+ c 2 (2.1) 4. Elaborar un algoritmo que solicite al usuario su nombre y el nombre de otra persona. Luego, mostrar en pantalla un mensaje que indique si ambos nombres comienzan con la misma letra o si terminan con la misma letra, o si difieren tanto en la letra inicial como en la final. Por ejemplo, si los nombres ingresados son Belinda y Beatriz, se mostrará un mensaje que indique que ambos nombres comienzan con la misma letra. Si los nom- bres son Leonardo y Gonzalo, se mostrará un mensaje que indique que ambos nombres terminan con la misma letra. 5. Crear un algoritmo que solicite por consola las 3 notas de los laboratorios realizados en el ramo de Programación. Luego obtener el promedio ponderado de la siguiente manera: Promedio Ponderado = Lab1 * 0,3 + Lab2 * 0,4 + Lab3 * 0,3 Si el promedio esmenor a 4,0 debe imprimir el mensaje que el estudiante reprobó la asig- natura. Si el promedio es superior a 4,0, indicar que el estudiante aprobo la asignatura. Si la nota es superior 6,0, debe mostrar el mensaje: el estudiante aprobo con distinción. 6. Existen dos grupos de estudiantes de la carrera de Programación que formaron sus gru- pos para elaborar el Laboratorio N°3. Los grupos son los siguientes: Grupo 1 Marcos Gabriela Benjamin Matias Ingenierı́a Civil en Informática - Ulagos 2 Victor Arcides Saldivia Vera Grupo 2 Marcos Nicolás Diego Matias Se necesita saber si en ambos grupos tienen algún estudiante en común y, en caso de que ası́ sea, imprimir los nombres de esos estudiantes. Todo esto utilizando Sets. 7. Crear una lista con nombres de 5 trabajadores y otra lista con las edades de estos 5 trabajadores, Se solicita relacionar ambas listas en una sola estructura. La salida puede ser en tuplas o en un diccionario. 8. Elaborar un algoritmo que permita al usuario ingresar un mes y arroje la estación corres- pondiente a ese mes: verano, otoño, invierno o primavera. 9. Se tiene la siguiente lista de enteros: numeros = [4, 3, 8, 12, 6, 10, 14, 3, 6] Se solicita: a) Eliminar el último elemento de la lista b) Agregar en la primera posición el número 2 c) Eliminar los números duplicados de la lista d) Obtener la media y la mediana de la lista 10. Crear una agenda telefónica que contenga un solo contacto. Está agenda se debe guar- dar en un diccionario. Este diccionario debe contar con las siguientes claves: Nombre Direccion Ciudad Número telefónico A continuación, agrega una nueva clave llamada “Redes Sociales” que contenga almenos tres nombres de perfil de diferentes redes sociales (por ejemplo, Facebook, Instagram y Twitter). Por último, se solicita imprimir solamente el Facebook del contacto y luego la agenda completa actualizada. Los algoritmos se resuelven de forma individual y los estudiantes deben subir, en una carpeta con el nombre de “Guias” todos los ejercicios resueltos en su repositorio de GitHub. Ingenierı́a Civil en Informática - Ulagos 3 Victor Arcides Saldivia Vera 3. Soluciones 3.1. Ejercicios Python Parte I 1. Solución Ejercicio 1: Una opción para solucionar este ejercicios es leer los tres números ingresados por el usuario, y luego se realizan las comparaciones para encontrar el núme- romayor ymenor. Si se encuentran números iguales, se imprime unmensaje indicándolo, utilizando las condicionales if. n1 = int(input("Ingrese el primer numero: ")) n2 = int(input("Ingrese el segundo numero: ")) n3 = int(input("Ingrese el tercer numero: ")) if n1 == n2 and n2 == n3: print("Los numeros ingresados son iguales.") exit() mayor = max(n1 , n2 , n3) menor = min(n1 , n2 , n3) if n1 == n2 or n1 == n3 or n2 == n3: print("Se ingresaron numeros iguales.") print(f"El numero mayor es: {mayor}") print(f"El numero menor es: {menor}") Extracto de código 3.1: Número mayor y menor entre tres números 2. Solución Ejercicio 2: La solución basta con utilizar las condicionales if, elif y else para comparar la longitud de las dos palabras y determinar cuál tiene más caracteres y cuál tiene menos utilizando la función len(). palabra1 = input("Ingrese laprimera palabra: ") palabra2 = input("Ingrese la segunda palabra: ") if len(palabra1) > len(palabra2): print("La primera palabra tiene más caracteres") print("La segunda palabra tiene menos caracteres") elif len(palabra2) > len(palabra1): print("La segunda palabra tiene más caracteres") print("La primera palabra tiene menos caracteres") else: print("Las dos palabras tienen la misma cantidad de caracteres") Extracto de código 3.2: Palabra que tiene más caracteres y la que tiene menos Ingenierı́a Civil en Informática - Ulagos 4 Victor Arcides Saldivia Vera 3. Solución Ejercicio 3: Para determinar si un triángulo es equilátero, isósceles o escaleno, se deben comparar los lados. Si los tres lados son iguales, es un triángulo equilátero. Si dos lados son iguales y uno es diferente, es un triángulo isósceles. Si los tres lados son diferentes, es un triángulo escaleno. Para calcular el área de un triángulo se ocupa la fórmula de Herón, solamente que hay que obtener el semiperı́metro primero. a = float(input("Ingrese el lado a del tri á ngulo: ")) b = float(input("Ingrese el lado b del tri á ngulo: ")) c = float(input("Ingrese el lado c del tri á ngulo: ")) if a == b == c: print("El tri á ngulo es equil átero") elif a == b or b == c or a == c: print("El tri á ngulo es is ó sceles") else: print("El tri á ngulo es escaleno") sp = (a + b + c) / 2 area = (sp * (sp - a) * (sp - b) * (sp - c)) ** 0.5 print("El área del tri á ngulo es de:", area) Extracto de código 3.3: Perı́metro y área de un triángulo utilizando la fórmula de Herón 4. Solución Ejercicio 4: En este caso para comparar la primera y última letra de cada nombre se debe utilizar los ı́ndices 0 y -1 para obtener las letras de la primera y última posición, respectivamente. También utilizar condicionales para verificar si las letras iniciales o finales son iguales o no. name1 = input("Ingrese su nombre: ") name2 = input("Ingrese el nombre de otra persona: ") if name1 [0] == name2 [0]: print("Ambos nombres comienzan con la misma letra") elif name1[-1] == name2 [-1]: print("Ambos nombres terminan con la misma letra") else: print("Ambos nombres difieren tanto en la letra inicial como en la final") Extracto de código 3.4: Comparación de caracteres iniciales y finales en un nombre Ingenierı́a Civil en Informática - Ulagos 5 Victor Arcides Saldivia Vera 5. Solución Ejercicio 5: Primero, se solicitan las notas de los tres laboratorios y luego se calcula el promedio ponderado utilizando la fórmula entregada en el enunciado. Final- mente, se evalúa el valor del promedio ponderado utilizando condicionales (if, elif y else) y se imprime un mensaje dependiendo de si el estudiante aprobó, reprobó o aprobó con distinción la asignatura. lab1 = float(input("Ingrese la nota del laboratorio 1: ")) lab2 = float(input("Ingrese la nota del laboratorio 2: ")) lab3 = float(input("Ingrese la nota del laboratorio 3: ")) #Calcular el promedio ponderado prom = lab1 * 0.3 + lab2 * 0.4 + lab3 * 0.3 if prom < 4.0: print("El estudiante reprob ó la asignatura") elif prom >= 4.0 and prom < 6.0: print("El estudiante aprob ó la asignatura") else: print("El estudiante aprob ó la asignatura con distinci ón") Extracto de código 3.5: Promedio ponderado de tres laboratorios ingresados por usuario 6. Solución Ejercicio 6: En este caso se deben crear dos sets, uno para cada grupo de estudiantes, y luego utilizar la función intersection() para obtener la intersección entre los dos sets. grupo1 = {’Marcos ’, ’Gabriela ’, ’Benjam ı́n’, ’Mat ı́as’} grupo2 = {’Marcos ’, ’Nicol ás’, ’Diego ’, ’Mat ı́as’} coincidencias = grupo1.intersection(grupo2) if len(coincidencias) > 0: print("Los siguientes estudiantes se encuentran en ambos grupos:") for estudiante in coincidencias: print("- " + estudiante) else: print("No hay estudiantes en comun entre los dos grupos") Extracto de código 3.6: Grupos de estudiantes buscando elementos en común 7. Solución Ejercicio 7: Lamaneramás sencilla de relacionar ambas listas en un diccionario es utilizando la función zip() nombres = [’Alberto ’, ’Rodrigo ’, ’Amanda ’, ’Susana ’, ’Eros’] edades = [20, 21, 42, 35, 29] trabajadores = dict(zip(nombres , edades)) print(trabajadores) Extracto de código 3.7: Grupos de trabajadores en listas y con salida en diccionario Ingenierı́a Civil en Informática - Ulagos 6 Victor Arcides Saldivia Vera 8. Solución Ejercicio 8: Esta solución es simple, solo basta con crear condicionales (if, elif y else) y dentro de una lista colocar los meses correspondientes a las estaciones. mes = input("Ingrese el nombre del mes: ") if mes in ["diciembre", "enero", "febrero"]: estacion = "verano" elif mes in ["marzo", "abril", "mayo"]: estacion = "oto ño" elif mes in ["junio", "julio", "agosto"]: estacion = "invierno" elif mes in ["septiembre", "octubre", "noviembre"]: estacion = "primavera" else: print("El mes ingresado no es válido") estacion = None if estacion: print("El mes de", mes , "corresponde a la estaci ón de", estacion) Extracto de código 3.8: Ingreso de un mes y su estación correspondiente como salida 9. Solución Ejercicio 9: numeros = [4, 3, 8, 12, 6, 10, 14, 3, 6] #a) Eliminando el ú ltimo elemento de la lista numeros.pop(-1) #b) Agregando en la primera posicion el numero 2 numeros.insert(0, 2) #c) Eliminando los nú meros duplicados de la lista numeros = list(set(numeros)) #d) Media y la mediana de la lista suma = sum(numeros) size = len(numeros) media = suma / size print("Media:", media) numeros.sort() size = len(numeros) if size % 2 == 0: mediana = (numeros[size //2 -1] + numeros[size //2]) / 2 else: mediana = numeros[size //2] print("Mediana:", mediana) print("Lista resultante:", numeros) Extracto de código 3.9: Operaciones con listas Ingenierı́a Civil en Informática - Ulagos 7 Victor Arcides Saldivia Vera La solución demostrada en el extracto de código del ejercicio 3.9, es la siguiente: prime- ro, para eliminar el último elemento de la lista se utiliza la función pop(). Para insertar un elemento en una posición especifica se puede utilizar la función insert(), indicando el valor a agregar en el primer parámetro y la posición en el segundo. Para obtener la media, primero se suman todos los elementos de la lista y luego se divide esa suma entre la cantidad de elementos. Para obtener la mediana, primero debemos ordenar la lista de menor a mayor. Luego, se debe encontrar el valor central de la lista. Si la cantidad de elementos es impar, la mediana es el valor central. Para obtener ese valor se usa la división entera // para en- contrar el ı́ndice del elemento que se encuentra a la mitad del arreglo ordenado, es decir, el ı́ndice de la posición que corresponderı́a al elemento de la mediana. Si la cantidad de elementos es par, la mediana es el promedio de los dos valores centrales. Para calcular el promedio, se suman los dos números del medio y se dividen entre dos. 10. Solución Ejercicio 10: Basta con agregar una nueva clave llamada “Redes Sociales” que es otro diccionario que contiene las redes sociales del contacto y sus nombres de perfil asociados. Finalmente, se imprime solamente la red social Facebook, seleccionando la clave redes sociales y Facebook. #Crear un diccionario para el contacto contacto = { "Nombre": "Juan Antonio", "Direccion": "Lynch 2324", "Ciudad": "Osorno", "Número telef ónico": 636459010 } #Agregar una clave nueva llamada "redes sociales" contacto["Redes Sociales"] = { "Facebook": "juan.antonio", "Twitter": "juanantonio", "Instagram": "juan.a" } #Imprimir solo la red social Facebook print("El Facebbok del contacto es: " + contacto[’Redes Sociales ’][’Facebook ’]) #Imprimir el diccionario completo print(contacto) Extracto de código 3.10: Creación de diccionarios y claves con diferentes tipos de elementos anidados Información bibliográfica para principiantes en [1]. Para mayor contenidorespecto a las estructura de programación de Python y más ejercicios visitar la bibliografı́a [2]. Ingenierı́a Civil en Informática - Ulagos 8 Victor Arcides Saldivia Vera 4. Bibliografı́a [1] E. Bahit. Curso Python para Principiantes. Buenos Aires, Argentina, 1 edition, 2012. [2] S. Chazallet. Python 3, Los Fundamentos del Lenguaje. Ediciones ENI, 2 edition, 2016. Ingenierı́a Civil en Informática - Ulagos 9 Introducción Guia de Ejercicios Python Parte I: Tipos de Datos y Condicionales Soluciones Ejercicios Python Parte I Bibliografía
Compartir