Python - Introducción A Los Elementos Básicos
Python - Introducción A Los Elementos Básicos
1
Welcome to Python.org
Versión: 3.6 o superior
https://docs.python.org/release/3.10.0/
1
Operaciones básicas
Suma División exacta
>>> 3+4 >>> 3/4
7 0.75
División entera
Resta
>>> 3//4
>>> 3-4
0
-1
>>> 9//4.0
Multiplicación
2.0
>>> 3*4 Módulo o resto de la división
12 >>> 3%4
Potencia 3
>>> 3**4 >>> 15%7 Algunas operaciones también
81 1 se pueden usar con textos
además de números…
1
Ejercicios rápidos…
Usando el intérprete de Phyton, realiza las siguientes operaciones:
Calcula el promedio de notas de un estudiante con notas: 6,7 5,8 6,2 6,0 5,2
Calcula el IVA (impuesto del 19%) de productos con valores de venta como 12000, 28500, 8650,
155000, etc.
1
Errores
Syntax Error
2
Errores
Excepciones
Aunque estén bien escritas gramaticalente, algunas líneas pueden dar errores
(“excepciones”) de distintos tipos al ejecutarlas
2
Errores
Errores semánticos y otros
Acá el código está bien escrito y se ejecuta, pero... no hace lo que uno quería que
hiciera
Ejemplo: Quiero mostrar el número "un millón", pero lo escribí así: 1,000,000
>>> print(1,000,000)
1 0 0
#(resultado: los números 1, 0 y 0)
2
Print()
Permite imprimir texto, valores o resultados, de forma que un
programa pueda mostrar información en pantalla al usuario
Ejemplos:
Texto:
print(“texto entre comillas”)
Números, variables u operaciones
print(insértelos acá sin comillas)
Texto formateado
nombre, edad = “Nico”, 29
print(f’Me llamo {nombre} y tengo {edad} años’)
*Una cadena formateada parte con f’, y puede reemplazar entre {} el
valor de una variable, entre otras cosas…
2
Variables
Una variable es un nombre que hace referencia a un valor que se le fue asignado.
No se permite usar alguna de las palabras reservadas de Python!
*Como buena costumbre, el nombre la variable debe ser útil para saber qué es lo que contiene.
Los nombres distinguen mayúsculas de minúsculas (aunque no se suele iniciar con mayúsculas el
nombre de una variable)
No debe empezar con un número ni contener espacios. Se recomienda “_” para separar palabras
Se asignan con un igual (=). Por ejemplo…
mensaje = “hola”
velocidad_auto = 35
estado_ampolleta = 0
resultado = funcion_inventada(a)
suma = suma + numero
2 contador +=1
Tipos de datos Pro tip: si no conoces el tipo de una cosa, el
comando type(cosa) te devolverá qué
es
Identifica regularidades en las siguientes cadenas, y escribe expresiones que produzcan las cadenas que se muestran.
Introduce variables para formar las expresiones cuando lo consideres oportuno. Usa subcadenas más cortas y operadores
de concatenación y repetición.
Escribe un programa que muestre un texto como “El cociente de la división entre m y n es q y su resto es r”, donde se
reemplace m y n por dos variables que serían dos enteros, q sería el cociente o división entera entre ellos (//), y r sería su
2 resto o módulo (%).
#Comentarios
Agregar un # al inicio de un texto dejará todo lo que esté a su derecha comentado
Escribiendo al inicio y al final de un comentario una triple comilla ‘’’ también. Esto último sirve para
hacer comentarios de varias líneas
Es una buena costumbre comentar el código para documentar, explicar, poner notas o lo que se
necesite!
3
Input()
Muchas veces será necesario que el usuario ingrese información (datos, opciones,
texto, números, preferencias, etc)
*Dentro del paréntesis, conviene escribir un string que indique al usuario qué es
lo que se espera que haga*
Ejemplo:
variable = input(“Ingresa un número entero entre 0 y 100: ”)
3
Ejercicios…
Escribe un programa que solicite al usuario que ingrese su nombre. El nombre se debe almacenar en una
variable llamada nombre. A continuación, se debe mostrar en pantalla el texto “Ahora estás en la matrix,
[usuario]”, donde “[usuario]” se reemplazará por el nombre que el usuario haya ingresado.
Haz un programa que pida el nombre de una persona y lo muestre en pantalla repetido 1000 veces, pero
dejando un espacio de separación entre aparición y aparición del nombre. (Utiliza los operadores de
concatenación y repetición para ello).
Haz un programa que pida al usuario una temperatura en Celsius y como resultado devuelva la
temperatura transformada a Fahrenheit y a Kelvin.
Haz un programa que pida un valor en una moneda (ej: pesos) y lo transforme en otra (ej: dólares), y
devuelva al usuario una frase del tipo “x pesos corresponden a y dólares”.
3
Desafíos cortos
Escribe un programa que le solicite al usuario ingresar una fecha formada por 8 números, donde los
primeros dos representan el día, los siguientes dos el mes y los últimos cuatro el año (DDMMAAAA).
Este dato debe guardarse en una variable. Finalmente, mostrar al usuario la fecha en un string con el
formato DD / MM / AAAA.
3
Operadores lógicos y comparación
4
Condicionales: If, Else, Elif
Los condicionales if, else, elif en python se utilizan para ejecutar una instrucción en caso de que una o más
condiciones se cumplan. Un condicional es como el momento en que se debe tomar una decisión en nuestro
programa o script.
Dependiendo la decisión que se tome ocurrirá una cosa u otra, o ninguna.
4
Condicionales: If, Else, Elif
4
Indentación
Espacio usado para organizar el código
en bloques.
Dos puntos (:) e indentación son la
forma de separar bloques en Python.
Otros lenguajes usan llaves {}, por
ejemplo.
Ejercicios…
Escribe un programa que pida un número entero y luego diga si el número es par o no
Escribe un programa que solicite al usuario ingresar tres notas entre 1 a 7 para luego mostrarle el promedio de los tres, y
además informe según los siguientes casos:
Si el promedio es mayor a 6, indicar con alguna frase del tipo “muy bien!”.
Si el promedio es mayor a 4 indicar con alguna frase del tipo “pasaste!”.
Si el promedio es menor a 4 indicar con alguna frase del tipo “reprobaste”.
Escribe un programa para pedir al usuario su nombre y luego el nombre de otra persona, almacenando cada nombre en
una variable. Luego mostrar en pantalla un valor de verdad que sea verdadero si se cumple que los nombres de ambas
personas comienzan con la misma letra o si terminan con la misma letra (Indicación: “string”[0] y “string”[-1] es la
primera y última letra de un texto)
4
Desafío
Imagina que te encargan un pequeño programa que le sirva a las personas para saber si pueden o no optar a
un Bono laboral, dependiendo si cumple o no con los requisitos. El programa debe preguntar los siguientes
datos al usuario: Nombre*, RUT*, Sueldo, Mes y Año en que comenzó su a trabajar en su empleo actual.
El programa debe devolver si recibe o no el bono y en qué porcentaje. Los requisitos y el beneficio
obtenido están en la siguiente tabla:
*Extras: Para el Nombre, se podría verificar que este estuviera compuesto de al menos dos palabras (o sea,
nombre y apellido), impidiendo que se ingrese sólo una palabra. Para el RUT, verificar que está bien
escrito, utilizando el algoritmo de verificación de RUT.
4
Desafío
La pizzería “{Invente un nombre}” ofrece pizzas vegetarianas y no vegetarianas a sus clientes. Los
ingredientes para cada tipo de pizza aparecen a continuación:
Escribir un programa que pregunte al usuario si quiere una pizza vegetariana o no, y en función de su respuesta
le muestre un menú con los ingredientes disponibles para que elija. Solo se puede elegir un ingrediente además
de la mozzarella y el tomate que están en todas las pizzas (o sea, cada pizza tiene tres ingredientes al final).
Al final se debe imprimir por pantalla si la pizza elegida es vegetariana o no, con un listado de todos los
ingredientes que lleva, y pedirle al usuario si confirma o no su compra.
El programa debiera iniciar con algún saludo al usuario por parte de la pizzería, y después de confirmar o
cancelar la compra debiera terminar con un mensaje de despedida distinto dependiendo si se aceptó o si se
canceló la compra.
4
Ciclos, loops, bucles: while
Problema inicial
Escribe un programa que tenga una contraseña, y que el usuario no pueda salir del bucle hasta
que no ingrese la contraseña correcta. Indicarle al usuario cuando se equivoque.
5
Ciclos, loops, bucles: while
El ciclo while nos permite realizar múltiples iteraciones basándonos en el resultado de una
expresión lógica que puede tener como resultado un valor True o False.
Se ejecuta mientras se cumpla la condición dada, o sea, mientras
condicion == True
Debe tener una forma de terminar! De lo contrario el bucle se continuará ejecutando
Se puede forzar una interrupción con break
Se puede forzar pasar al siguiente bucle con continue
5
Ciclos, loops, bucles: while
• while con eventos
• while con conteo Ocurre hasta que se cumple una condición o algo deja de ocurrir
Ocurre hasta que el conteo llegue al final,
repitiendo el ciclo tantas veces
5
Ejercicios…
Cree un programa que le pida al usuario un número, constantemente, y se detenga cuando el usuario
ingrese el número 0. Extra: además, que cuente cuántos números pares ingresó el usuario durante la
ejecución del programa.
Variación del extra anterior: además, informar cuál fue el mayor número ingresado por el usuario durante
la ejecución del programa.
Escriba un Menú que pregunte al usuario por si desea la opción 1 o la opción 2 (de lo que sea), y se
mantenga preguntando hasta que el usuario ingrese una de las opciones válidas
Escriba un programa que pregunte por un monto de ahorro, y luego vaya preguntando por depósitos que
se vayan sumando hasta que se llegue o se supere el monto de ahorro ingresado.
5
Ciclos, loops, bucles: for
Escribe un programa que pida un número y realice la suma del 1 hasta el número usando un ciclo for
(resolver sin la fórmula de la suma de Gauss!).
6
Ciclos, loops, bucles: for
Un bucle for es un bucle que repite el bloque de instrucciones un número predeterminado de veces.
El bloque de instrucciones que se repite se suele llamar cuerpo del bucle y cada repetición se suele
llamar iteración.
6
Ciclos, loops, bucles: for
• for con nada • for con listas
Aplica el procedimiento dado para cada elemento, en el orden en
La variable puede no usarse, lo que serviría para repetir un
el que está en la lista
procedimiento tal cantidad de veces
• for con if
El for es útil para evaluar o realizar comprobaciones usando un
iterable
• for con range()
La función range() devuelve una lista con números del 0 al n-
1 dado. Ej: range(5)=[0,1,2,3,4]
6
Ciclos, loops, bucles: for
• for como contador • for como acumulador
Se puede mantener una variable a la que se vaya sumando 1 (u otro Se puede mantener una variable donde se vaya acumulando un
valor fijo) en cada iteración. En el ejemplo, el valor 1 se va agregando al valor con cada iteración. En el ejemplo, el valor de i se agrega a la
ya existente cuenta ya existente suma
6
Ejercicios…
Escribe un programa que pida una palabra, y usando for, cuente la cantidad de letras que contiene.
Escribir un programa en el que se pregunte al usuario por una frase y una letra, y muestre por pantalla el
número de veces que aparece la letra en la frase.
Escribir un programa que pida al usuario un número entero y muestre por pantalla un triángulo rectángulo
como el mostrado, de altura igual al número introducido:
6
Desafío 1
Implementa el algoritmo para calcular el dígito verificador del RUT
6
Desafío 2
Escribe un programa que le pida al usuario un número entero y como respuesta se obtenga un
patrón como el siguiente, donde el número de líneas sea igual al número que ingresó el usuario.
6
Desafío 3
Versión modificada: Similar al anterior, pero que entregue como respuesta una “equis” (X)
construida con la cantidad de líneas ingresada por el usuario
6
Contenedores: Listas
Una lista es un arreglo de elementos donde podemos ingresar cualquier tipo de dato. Para
acceder a estos datos lo podemos hacer mediante un índice.
Una lista puede contener otra
Las listas se delimitan por corchetes cuadrados [] y sus elementos se separan con comas.
lista adentro
Dentro de la lista se pueden contener distintos tipos de datos
Los elementos de una lista se enumeran desde el 0 al n-1, siendo n la cantidad de
elementos de la lista. Estos números son los “índices”. lista[índice] permite
seleccionar un elemento específico de la lista.
7
Contenedores: Listas
Puedes agregar más elementos a una lista, por ejemplo, sumando listas
del: la palabra reservada “del” sirve para eliminar elementos o la lista entera
7
Contenedores: Listas
¿Un objeto está o no en mi lista?
La forma “if variable in lista, else” permite verificar si un objeto está en una lista
*La forma “if variable not in lista, else” permite verificar si un objeto NO está en una lista
Copiar una lista
Algunos métodos:
Agregar o remover: lista.append(elemento) / lista.remove(elemento)
Contar apariciones: lista.count(elemento)
Encontrar posición o índice: lista.index(elemento)
Generar una lista de palabras a partir de una frase: “frase”.split()
*Existen muchos métodos y funciones más, así como también hay más contenedores a parte de las listas, como tuplas, conjuntos y diccionarios. 7
Ejercicios…
Usar listas para crear un programa que calcule el promedio de notas del usuario, para una cantidad
cualquiera de notas que éste ingrese.
Escribir un programa que almacene el abecedario en una lista, elimine de la lista las letras que ocupen
posiciones múltiplos de 3, y muestre por pantalla la lista resultante.
7
Desafío
Escribir un programa con una lista de cosas o nombres, y tenga un menú donde el usuario pueda hacer las
siguientes acciones: agregar un nuevo elemento, remover un elemento, invertir lista, mostrar un elemento
específico (entre otras si deseas agregar más), modificar un elemento, cambiarlo de ubicación. Al realizar
una acción, la idea es que se vuelva al menú.
7
Desafío
Juego “¡Adivina el número!”
Piensa un número del 1 al 1000, e intenta crear un programa que lo adivine lanzando números al azar. Cuando
el programa muestre un intento, el usuario deberá ingresar respuestas a los siguientes casos:
‘S’, si el número es correcto.
‘A’, si es más alto que el número que pensaste.
‘B’, si es más bajo que el número que pensaste.
En base a estas respuestas, el programa debiera ir afinando su adivinanza. Al finalizar el programa, mostrará
cuántos intentos hizo para adivinar.
Extra: Puedes programar la versión contraria también, donde el computador “piensa un número” y tú tienes
que adivinarlo mientras el programa te dice si tu intento es mayor o menor al número buscado.
*¿Hay una manera más conveniente que se puede usar para adivinar el número?
8
Tuplas y Conjuntos
Tuplas:
Similares a las listas, pero no pueden modificarse una vez creadas.
Para crear una tupla, usar paréntesis normales: (cosa1,cosa2,cosa3…)
Para transformar una lista en tupla, usar: tuple(lista)
Conjuntos:
Tipo de contenedor que no tiene elementos repetidos y estos no tienen orden (índices)
Para crear un conjunto, usar llaves: {cosa1, cosa2, cosa3…}
Para transformar una lista en conjunto, usar: set(lista)
*esto eliminará los elementos duplicados de la lista!
Diccionarios
8
Desafío 1
Escribir un programa que cree un diccionario de traducción español-inglés. El usuario introducirá
las palabras en español e inglés separadas por dos puntos, y cada par <palabra>:<traducción>
separados por comas.
El programa debe crear un diccionario con las palabras y sus traducciones. Después pedirá una
frase en español y utilizará el diccionario para traducirla palabra a palabra. Si una palabra no está
en el diccionario debe dejarla sin traducir.
8
Funciones
Una función te permite definir un bloque de código reutilizable que se puede ejecutar
muchas veces dentro de tu programa. Su estructura es:
*Se usa la palabra reservada “def”, luego el nombre de la función y (si es necesario) sus parámetros. Tras los dos puntos,
todo lo que esté en la indentación será parte de la función
8
*Ejercicio de optimización*
Juego “¡Adivina el número!”
Puedes optimizar el desafío de “Adivina el número” usando funciones
8
Desafío corto
Crear una función que filtre una lista. De entrada recibirá una lista que contenga números enteros,
decimales y strings, y como salida debe devolver sólo los números enteros.
Extra: Que la función sea capaz de limpiar la siguiente lista: [[“a”,1,3.3],2,[“b”,3,-4.3]]
8
Capturando errores: Try-Except
try:
Código que se ejecutará y del que se busca capturar alguna excepción o error
except:
Código que se ejecuta si dentro del try ocurrió alguna excepción.
*Puedes especificar varios errores específicos (except TipodeError:)
else:
Código que se ejecutará sólo si no ocurrió una excepción dentro del try
finally:
Código que se ejecutará siempre, independiente del resultado del try
*Si ocurre un error dentro del except, else, o finally, el programa parará debido al error.
8
Comprensión de listas
Método sintáctico para crear listas en base a partir de otras listas (o colecciones)
[expresion for variable in colección if condición]
Ejemplo 1:
Escribir un programa que almacene el abecedario en una lista, elimine de la lista las letras que
ocupen posiciones múltiplos de 3, y muestre por pantalla la lista resultante.
Ejemplo 2:
Crear una lista de los números divisibles por 3 dentro de las potencias de dos de los primeros 30
números enteros, en una sola línea.
Ejercicios…
Utiliza comprensión de listas para crear, en una línea, el código para crear la función
“ConvertirEspaciado”
Utiliza comprensión de listas para crear las siguientes listas:
Lista con palabras de una frase pero con su primera letra en mayúsculas
Lista de números del 1 al 100 que sean múltiplos de 5
Utiliza for “anidados” para armar una lista con todas las coordenadas desde (0,0) a (5,8)
Intenta armar la misma lista anterior con comprensión de listas
8
Desafío
Crea una función para que aparezca un tablero de juego del gato #, que acepte números del 1 al 9 y X o O,
para que se reemplace en el tablero en el espacio correspondiente la X o O.
8
Desafío (continuación)
Crea un juego del gato, donde cada jugador tenga un turno.
8
Desafío (continuación 2)
Proyecto Extra: Que el usuario sea capaz de jugar contra la computadora, la que podrá hacer movimientos
al azar.
*Extra versión hardcore: Que los movimientos de la computadora no sean totalmente al azar, si no que
respondan a lo que haga el usuario, como un jugador humano (o sea, crear una IA para el juego).
8
Programación Orientada a Objetos
Atributos
Métodos
Clases y Objetos
8
Algunas funciones extra:
Funciones lambda
Son funciones express, declarando de forma corta expresiones sencillas, en funciones
“anónimas”. Se puede o no asignar un nombre para ella
enumerate(iterable)
Ejemplo:
Algunas funciones extra:
Función zip()
La función zip toma iterables como argumentos y devuelve tuplas emparejando
los elementos.
zip(lista1,lista2,lista3…)
Ejemplo:
Algunas funciones extra:
Función filter()
Filter aplica una función/condición a cada elemento de un iterable y devuelve un
iterable sólo con los elementos que hayan retornado True tras aplicarles la función
filter(función,iterable)
map(función,iterable)
*Solo se indica el nombre de la función, o una función lambda*
Ejemplo:
Ejercicios
Utilizar la función incorporada map() para crear una función que retorne una lista con la longitud de cada palabra
(separas por espacios) de una frase. La función recibe una cadena de texto y retornara una lista.
Crear una función que retorne las palabras de una lista de palabras que comience con una letra en especifico. Utilizar la
función filter.
Realizar una función que tome una lista y retorne un diccionario que contenga los valores de la lista como clave y el
índice como el valor. Utilizar la función enumerate.
Crea una función que de vuelta las letras de cada palabra de una frase, manteniendo la posición de cada palabra, y luego
retorne el resultado como un string (ej: “Esta es la frase” -> “atsE se al esarf”).
8
Desafío: Laberinto
Parte 1:
La primera tarea consiste en construir un laberinto como el de la siguiente figura:
El laberinto se representará como una lista de listas, donde cada lista es una fila del laberinto y cada casilla se representará
con un espacio. Representar con ' ' si hay camino o con la letra ‘X’ si hay un muro. ‘S’ es la salida, y la primera casilla de la
primera fila es la entrada. La dimensión del laberinto es la cantidad de filas que posea (en caso de ser cuadrado…).
El laberinto se debe crear a partir de una tupla con las coordenadas de las casillas donde hay muro, como la siguiente:
muro = ((0,1), (0,2), (0,3), (0,4), (1,1), (2,1), (2,3), (3,3), (4,0), (4,1), (4,2), (4,3))
8
Desafío: Laberinto
Parte 2:
La segunda parte a resolver consiste en construir un programa para recorrer el laberinto desde la entrada a la salida. La
entrada siempre está en la esquina superior izquierda y la salida en la esquina inferior derecha. Los argumentos de entrada
de la función serán los muros y la dimensión del laberinto
El programa debe devolver una lista con la secuencia de movimientos para ir de la entrada a la salida del laberinto (la
solución a un laberinto dado), como se muestra a continuación:
['Abajo', 'Abajo', 'Abajo', 'Abajo', 'Derecha', 'Derecha', 'Arriba', 'Arriba', 'Derecha', 'Derecha', 'Abajo', 'Abajo', 'Abajo']