Python TP CEIA 2024
Python TP CEIA 2024
CURSOS CEIA
Indice
Trabajo Práctico 01
• Identificadores válidos
• Precedencia de operadores
• Funciones Built-in (print, input y type)
• Tablas de verdad
Trabajo Práctico 02
• Palabras reservadas del lenguaje
• Imprimiendo con Formato
• Funciones Built-in (Constructores)
• Caracteres especiales en Strings
Trabajo Práctico 03
• Tipos Inmutables
• Sintaxis de la estructura de control: for
• Función Built-in (range())
Trabajo Práctico 04
• Tuplas
• Sintaxis de la estructura de control: if
• Métodos para Strings
Trabajo Práctico 05
• Secuencias
• Funciones Built-in
• Operaciones comunes de las secuencias
• Sintaxis de la estructura de control: while
Trabajo Práctico 06
• Funciones
• Parámetros y Argumentos
• Sintaxis para definir una función: def
• Asignación aumentada
Trabajo Práctico 07
• Listas y Diccionarios
• Importando módulos
• Funciones Built-in
• Números pseudoaleatorios
• Métodos de Listas
• Métodos de Diccionarios
• Archivos
• Modo
Trabajo Práctico 08
• Set
• Funciones Built-in
• Métodos de Conjuntos
Referencias
[1] Z. A. Shaw, Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful
World of Computers and Code. Addison-Wesley Professional, 1st ed., 2017.
[2] K. D. Lee, Python Programming Fundamentals. Springer, London, 2nd ed., 2014.
1
INTRODUCCIÓN A PYTHON
CURSOS CEIA
[3] J. Hunt, A Beginners Guide to Python 3 Programming. Springer, Cham, 1st ed., 2019.
[4] J. Hunt, Advanced Guide to Python 3 Programming. Springer Nature Switzerland, 2019.
2
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 1. Operadores y Expresiones
Identificadores válidos en Python: Un identificador es el nombre empleado en un programa
para identificar una variable, una función, etc. Cada lenguaje posee sus reglas para determinar si
un identificador en válido. En Python los identificadores comienzan con una letra (de la A a la Z
o de la a a la z) o con un guión bajo (_) seguido de cero o más letras, guiones bajos y números.
Además, Python diferencia mayúsculas de minúsculas (case sensitive) y NO admite signos de
puntuación ni símbolos como @, $ y % a excepción del guión bajo.
3
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Volver al índice...
4
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 2. Bloques Secuenciales
Los siguientes identificadores se utilizan como palabras reservadas, o palabras clave del idioma,
y no pueden utilizarse como identificadores. Recuerde que el leguaje es sensible a mayúsculas y
minúsculas y, por lo tanto, deben escribirse tal cual fueron definidas. [Palabras clave]
Palabras reservadas del lenguaje:
False as await else try pass except raise global or finally if
None in lambda from def break import assert elif and nonlocal del
True is return yield for with while async class not continue
Palabras reservadas suaves (versión 3.10 o superior): match case _
Documentación
1. Sabiendo que una empresa posee 100 autos con capacidad
para 4 personas cada uno, y que en el día de la fecha se El intérprete de Python tie-
encuentran disponibles 30 choferes, determine la siguiente ne una serie de funciones y
información para una lista de espera de 50 pasajeros: La tipos incluidos en él que es-
cantidad de autos disponibles para el traslado de pasaje- tán siempre disponibles.
ros. ¿Cuántos pasajeros más se podrían sumar durante el bool()
día? ¿Cuál es la capacidad de pasajeros ociosa por falta de int()
choferes? float()
2. Se desea implementar un simulador de plazo fijo. Realice un complex()
programa que pregunte al usuario una cantidad a invertir, str()
el interés mensual, el período en meses a depositar y calcule
Funciones Built-in
el capital obtenido al finalizar la inversión.
3. Una juguetería tiene mucho éxito con la venta de baldes
de ladrillitos en sus presentaciones de 350 y 500 gr. El En un literal de string, la ba-
correo los obliga a armar bultos de no más de 10 unidades rra invertida (\) se utiliza
para escapar de los caracte-
cuyo costo final se calcula en función de su peso. Escriba un
res que de otra manera tie-
programa que lea el número de baldes de cada presentación
nen un significado especial.
de un pedido y determine en forma automática el costo \" Comillas dobles
total del envío sabiendo que cada bulto tiene un costo fijo \’ Comilla simple
de 350$ más un proporcional de 125$ por kilo. \\ Barra invertida
4. Dado un entero positivo de cinco cifras n, escriba el bloque \n Enter
de sentencias necesarias para determinar si es capicúa. \t Tab
¿Qué sucedería si no conoce la cantidad de cifras de “n”?
Volver al índice...
5
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 3. Ciclo Definido
Los tipos inmutables del lenguaje son los tipos de datos: numéricos, booleanos, cadenas de
caracteres y Tuplas. Como su propio nombre lo indica, un objeto inmutable una vez creado nunca
cambia su valor. Si bien en apariencia es posible modificar la información de una variable string
o numérica, en realidad durante la asignación estamos cambiando de objeto. [Inmutable]
Para mayor claridad, se sugiere leer el tema “The Reference Types and Assignment Statements” del
libro [2, Pág.20]. [Jerarquía de tipos estándar]
La función range(): Es una función Built-in que produce una secuencia de números enteros.
range(tope): intervalo entre 0 y tope-1 (incremento = 1, tope>0)
range(inicio, tope): intervalo entre inicio y tope-1 (incremento = 1, inicio<tope)
range(inicio, tope, paso): intervalo entre inicio y tope-1 con incremento igual al paso.
Si paso>0 entonces inicio<tope pero si paso<0 entonces inicio>tope.
Documentación
1. Imprima en pantalla la siguiente serie de enteros:
a) 0, 1, 2,..., 20 La sentencia for se usa pa-
b) 0, 3, 6, 9,..., 30 ra iterar sobre los elemen-
c) 1, 4, 9, 16....10000 tos de una secuencia (como
d) 25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25 strings, tuplas, etc) u otro
e) 100, 95, 90, ...., 0 objeto iterable. El número
de iteraciones se conoce an-
2. Dado n un entero positivo, determine el resultado:
tes de ejecutar la instruc-
Pn (−1)i
a) i=0 1+i
ción.
Pn −i
b) for<x>in<secuencia>:
i=1 i
Bloque A
6
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 4. Condicionales y Tuplas
Las tuplas son secuencias inmutables, usadas normalmente para almacenar colecciones de datos
heterogéneos [tuple]. Las tuplas se pueden construir de diferentes maneras:
Vacía: Usando un par de paréntesis () o el constructor tuple()
Único elemento: Usando una coma al final a, o (a,)
General: Separando los valores con comas a,b,c o (a,b,c)
Con iterables conocidos: tuple(’hola’) o tuple(range(3))
7
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 5. Bucles Condicionados
En muchas aplicaciones es necesario ser capaces de almacenar en memoria, un grupo de datos no
necesariamente heterogéneos denominados secuencias. Las secuencias son contenedores donde
los elementos se almacenan siguiendo un orden. Previamente, se han introducido los tipos
simples (booleanos, enteros, reales, etc) que conceptualmente poseen un único valor asociado y,
las secuencias de datos inmutables range, strings y tuples [Secuencia].
Secuencias inmutables:
Strings: Secuencia de caracteres.
Rangos: Secuencia de enteros.
Tuplas: Secuencia heterogénea de datos inmutables.
8
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 6. Funciones
Un método para resolver un problema complejo consiste en subdividirlo en subproblemas más
sencillos que, a su vez, pueden resolverse aplicando la misma metodología. Siguiendo esta estra-
tegia, la resolución comienza con una descomposición modular y luego nuevas descomposiciones
de cada módulo en un proceso de refinamiento sucesivo o stepwise. Esta técnica se denomina
diseño descendente o top-down debido a que se comienza en la parte superior con el problema
general y se diseñan soluciones específicas para cada subproblema. Una forma de modularizar el
código es implementando funciones para resolver tareas específicas. [Definición de funciones ]
3. Transforme los bloques de sentencias pedidos en los ejerci- •Una función puede recibir
o no parámetros (*).
cios 3 y 6 del Trabajo Práctico 5 en funciones.
•La sentencia return es op-
4. Implemente el ejercicio 3 del Trabajo Práctico 4 utilizando
cional y permite que la fun-
las funciones esTriangulo y tipoDeTriangulo. Esta ción retorne al menos un re-
última deberá invocarse solo si las longitudes de los seg- sultado.
mentos ingresados por el usuario conforman un triángulo.
5. Escriba una función que dada la altura y un caracter dibuje [Asignación aumentada]
un pinito de dicho caracter siguiendo las especificaciones
del ejercicio 5 del Trabajo Práctico 3. En caso de que el usua- Operador Descripción
rio no especifique un caracter al momento de la invocación x += a x = x+a
x -= a x = x-a
utilice * por defecto.
x *= a x = x*a
6. Implemente una función fecha_valida. Rever el ejerci- x /= a x = x/a
cio 5 del Trabajo Práctico 4. x %= a x = x %a
x //= a x = x//a
7. Escriba una función que realice la operación CamelCase
x **= a x = x**a
de una cadena de caracteres. Su función deberá retornar
una nueva cadena de caracteres sin espacios y con las pala-
bras de la cadena original formateada con la primera letra
en mayúscula y todas las restantes en minúscula. Ejemplo: Volver al índice...
Entrada = "hola mundO" Salida = "HolaMundo"
9
INTRODUCCIÓN A PYTHON
CURSOS CEIA
8. Realice funciones apropiadas para realizar cada una de Documentación
las siguientes consultas a partir de una tupla de fechas de
nacimientos que contiene las fechas de nacimiento de [Parámetros]
un grupo de personas con el formato (dia, mes, año). En el momento de la decla-
Ayuda: Es posible identificar unívocamente a una fecha ración es posible asignar va-
a partir de un número entero de la forma Año*10000+ lores por defecto o predeter-
Mes*100+ Día. minados a los parámetros de
a) ¿Existe algún mes sin cumpleaños? De no existir retor- las funciones. Los paráme-
ne None. tros por defecto se declaran
b) Todos los meses sin cumpleaños. luego de los parámetros fi-
c) El promedio de edad del grupo. jos. En consecuencia, la fun-
d) El último y el primer cumpleaños del año. ción podrá recibir menor nú-
mero de argumentos. Los va-
9. Dada una tupla con información de círculos en el plano, im- lores de los parámetros pre-
plemetente funciones para realizar las siguientes consultas determinados se evalúan de
de interés: izquierda a derecha cuando
a) Determinar cuál es el círculo cuyo centro se encuentra se ejecuta la definición de la
más cercano a un (x,y) dado y a qué cuadrante función.
pertenece.
b) Determinar cuántos círculos dentro de la estructura se [Cardinalidad]
encuentran centrados sobre los ejes de coordenadas. Si una función espera re-
circulos = (c1 , c2 , . . . , cn ), donde cada ci = (ri , (xi , yi )) cibir un número arbitrario
(desconocido) de argumen-
es otra tupla con la magnitud del radio y las coordenadas
tos, estos argumentos llega-
del centro del círculo en el plano XY.
rán en forma de tupla. Pa-
10. Analice los siguientes bloques de código, verifique la salida ra definir un argumento de
en pantalla y determine a qué variable a hace referencia en longitud arbitraria en una
cada caso: función, se antecede al pa-
rámetro formal con un aste-
a) def subrutina(): risco (*). También es posible
a = 2 obtener parámetros arbitra-
print(a) rios como pares del tipo cla-
a = 5 ve=valor. En estos casos, los
subrutina() argumentos llegan en forma
print(a) de diccionario y, al nombre
del parámetro deben prece-
derlo dos astericos (**).
b) def subrutina():
print(a) [Argumentos]
subrutina() El lenguaje permite la
a = 5 invocación de subrutinas
print(a) empleando dos tipos de
argumentos, argumentos
por posición o por nombre.
Volver al índice...
10
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 7. Listas y Dicccionarios
Las listas y los diccionarios son estructuras de datos nativas del lenguaje con la capacidad de
ser heterogéneas y mutables. Es decir, admiten almacenar elementos de distinto tipo y una vez
creadas su contenido se puede modificar sin cambiar de objeto. [Estructuras de Datos].
Una propiedad sorprendente de estas estructuras es su capacidad de crear nuevas listas o
diccionarios basados en listas o diccionarios pre-existentes de forma inteligente, intuitiva y
concisa en una única sentencia. Consultar: [Comprensión Listas] y [Diccionarios].
Importando módulos:
Un módulo es un archivo .py que alberga un conjunto de funciones, variables o clases que pueden
ser usados por otros módulos. Importar un módulo requiere de la palabra reservada import y
su sintaxis es:
import <idModulo>
Para mayor claridad se sugiere leer el tema “Importing Python Modules” del libro [3, Sección 25.4,
pág.284].
11
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Documentación
5. Realice funciones apropiadas para realizar cada una de
las siguientes operaciones a partir de una lista de fechas Métodos de las listas:
nacimientos que contiene las fechas de nacimiento de append()
un grupo de personas (dia, mes, año). count()
a) Extraer de la lista el cumpleaños de la persona más insert()
joven. remove()
b) Ordenar la lista por orden cronológico. Implemente su
[Métodos de Listas]
propio algoritmo de ordenamiento.
6. Implemente los siguientes diccionarios que a cada clave
Métodos de los diccionarios:
entera le asocie los siguiente valores:
a) El máximo divisor entero distinto de si mismo. get()
b) La lista completa de divisores del número. items()
keys()
7. Dado un diccionario del tipo (dato: máximo divisor entero values()
distinto de si mismo) construya un nuevo diccionario que
[Métodos de Diccionarios]
no contenga a los números primos.
8. Construya un diccionario a partir de la información Métodos compartidos:
contenida en la tupla del ejercicio del ejercicio 8 del
pop()
Trabajo Práctico 6. Su diccionario será de la forma clear()
nacimientos={‘enero’: [(dia, año),..], ‘febrero’:. . . .}. copy()
Vuelva a implementar las funciones teniendo en cuenta
la nueva estructura.
Volver al índice...
Python nos permite trabajar con el sistema de archivos y directorios brindando una opción de
entrada y salida de información de un programa. Un método simple es trabajar con archivos
manipulando su lectura y escritura a nivel de la aplicación. Los archivos en Python son objetos de
tipo file creados mediante la función open(). Esta función toma como parámetros una cadena
con el path o ruta al archivo a abrir, que puede ser relativa o absoluta, una cadena opcional
indicando el modo de acceso, entre otros parámetros opcionales [open()].
Ejemplo:
archivo = open(‘miarchivo.txt’, mode =‘x’, encoding =‘utf-8’)
Consultar [Text I/O] y, para mayor claridad, se sugiere leer el tema en el capítulo 18 “Reading
and Writing Files” del libro [4, pág.215].
Parámetro mode: es una cadena de caracteres opcional que especifica el modo en el cual el
archivo es abierto. Por defecto, su valor es ‘rt’.
•‘r’: abierto para lectura (por defecto)
•‘w’: abierto para escritura
•‘x’: crea el archivo y falla si existe otro con el mismo nombre
•‘a’: abierto para escritura, añadiendo al final del archivo si este fue creado previamente
•‘b’: modo binario
•‘t’: modo texto (por defecto)
•‘+’: abierto para su actualización
12
INTRODUCCIÓN A PYTHON
CURSOS CEIA
Trabajo Práctico 8. Conjuntos
En Python un objeto del tipo conjunto o set es una colección no ordenada de objetos diferentes
entre sí. En la actualidad hay dos tipos básicos de conjuntos: set y frozenset. La clase set es
mutable, es decir, el contenido del conjunto puede ser modificado a través de sus métodos. En
cambio, la clase frozenset es inmutable y, por tanto, sus datos pueden ser utilizados como claves
de diccionario o como elementos de otro conjunto.
Consultar [Sets] y, para mayor claridad, se sugiere leer el tema en el capítulo 32 “Sets” del
libro [3, pág.379].
Documentación
1. Dados dos sets con nombres de estudiantes, uno con los
anotados para rendir el siguiente examen y el otro con
los inscriptos para rendir el proyecto final, implemente El intérprete de Python tie-
funciones para responder las siguientes consultas: ne una serie de funciones y
tipos incluidos en él que es-
a) ¿Cuáles son los estudiantes anotados en el examen y tán siempre disponibles.
en el proyecto final? Entre ellas:
b) ¿Cuáles son los estudiantes que solo se presentan a set()
una de las instancias de evaluación?
c) ¿Cuántos son los estudiantes anotados en total? Funciones Built-in
d) ¿Cuáles son los estudiantes que solo presentan el pro-
yecto final? Los conjuntos poseen méto-
dos muy útiles:
2. Escriba funciones para retornar el conjunto de:
add()
a) Palabras que aparecen en dos archivos de texto distin- remove()
tos. clear()
b) Todas las posiciones en las que un caracter dado apa- pop()
rece en una cadena. update()
c) Las letras que aparecen en todas las líneas de un ar- Y con operaciones matemá-
chivo de texto. ticas de conjuntos típicas a
disposición:
3. La Criba de Eratóstenes es un algoritmo que permite ha-
llar todos los números primos menores que un número difference()
natural dado. A partir del conjunto de números naturales intersection()
comprendidos entre 2 y n escriba una función que retorne union()
el conjunto de números primos menores que n empleando En el siguiente link se pre-
dicho algoritmo. senta la lista completa de
métodos con su explicación
4. Se desea representar un mapa con algunas de las principales y ejemplos:
ciudades del país y la comunicación entre las mismas. A
partir de una lista de ciudades y un diccionario con una [Métodos de Conjuntos]
ciudad como clave y un conjunto de cuidades aledañas a
ella como valor, implemente una función para determinar
todas las ciudades que se pueden alcanzar desde una ciudad
dada.
Volver al índice...
13