Logo Studenta

Guia de Ejercicios Python

¡Este material tiene más páginas!

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

Continuar navegando