intro_python
intro_python
Características de Python
Simple
Fácil de aprender
Libre y de código abierto
Lenguaje de alto nivel
Portable
Interpretado
Orientado a objetos
Extensible
Embebible
Con muchas librerías
Installación y uso del intérprete
Ubuntu
python3
Python 3.9.10 (main, Feb 22 2024, 13:54:07)
[GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hola Mundo")
Hola Mundo
>>>
IPython
Existe un intérprete interactivo llamado IPython
Características principales:
◮ Resaltado de líneas y errores con colores
◮ Autocompletado de variables, módulos y atributos usando el
tabulador (Tab)
ipython3
Eligiendo un editor
gedit
kate
vim
emacs
PyCharm
Usando un archivo fuente
print("Hola Mundo")
mkdir /home/user/borrar
cd /home/user/borrar/
python hola.py
Práctica
Comentarios
# Esto es un comentario
print('Hola Mundo') # Esto es otro comentario
Conceptos Básicos
Números
Tenemos dos tipos de números
enteros, por ejemplo 2
flotantes, por ejemplo 3.23, 2.45 o 23.5e-4
ambos son inmutables
entero0 = 2
entero1 = -2
flotante0 = 3.23
flotante1 = 23.5e-4
Conceptos Básicos
Cadenas - .format()
Método usado para construir cadenas desde otra información.
edad = 20
nombre = 'JuanP'
print('{} tiene {} años'.format(nombre, edad))
print('Apenas {1} años tiene {0}'.format(nombre, edad))
0.333
Conceptos Básicos
edad = 20
nombre = 'JuanP'
mensaje = f"Hola, me llamo {nombre} y tengo {edad} años."
print(mensaje)
a = 5
b = 10
print(f"La suma de {a} y {b} es {a + b}.")
La suma de 5 y 10 es 15.
Conceptos Básicos
Variables
Son identificadores usados para guardar cosas y luego poder
usarlas.
Convención de nombres
El primer carácter debe ser una letra, minúscula o mayúscula
El resto puede ser letras, números o el carácter _
Son sensitivos a mayúsculas o minúsculas
Ejemplos válidos: i, E, hola_1_3
Ejemplos no válidos: 2i, hola-1
Conceptos Básicos
Indentación
Los espacios en blanco al inicio de una línea son importantes
Esto se llama indentación
Estos espacios definen un nivel de indentación y todo lo que esté
en ese nivel forma un bloque que se ejecuta junto
i = 5
# Error en la siguiente línea!
# Notar un espacio al inicio de la línea
print('El valor es', i)
print('Repito, el valor es', i)
Indentación
La indentación es similar al uso de las llaves de C/C++
La recomendación oficial del lenguaje es usar 4 espacios para
indentar
a = True
if(a is True):
print('Es verdadero')
a = False
else:
print('No es verdadero')
a = True
Operadores
# Suma
3 + 5 = 8
'a' + 'b' = 'ab'
# Resta
5 - 4 = 1
4 - 5 = -1
-4.3 = -4.3
# Multiplicación
3 * 5 = 15
3 * 'b' = 'bbb'
# Potencia
2 ** 3 = 8
# División
13 / 3 = 4.33333333333
# División y redondeo al entero menor
13 // 3 = 4
-13 // 3 = -5
9 // 1.8 = 4.0 #igual que antes pero resultado en un float
# Módulo
13 % 2 = 1
Más Operadores
# Shift a la izquierda
3 << 2 = 12
# Shift a la derecha
16 >> 2 = 4
# AND
3 & 5 = 1
# OR
3 | 5 = 7
# XOR
3 ^ 5 = 6
Muchos más Operadores
# Menor que
3 < 2 -> False
2 < 3 -> True
# Mayor que
3 > 2 -> True
2 > 3 -> False
# Menor o igual que
3 <= 2 -> False
2 <= 2 -> True
# Mayor o igual que
3 >= 2 -> True
3 >= 3 -> True
# Igual que
3 == 3 -> True
# Distinto que
3 != 3 -> False
Los últimos operadores
# not booleano
not True -> False
# and booleano
True and True -> True
True and False -> False
# or booleano
False or False -> False
True or False -> True
a = 2
a = a * 3 #(-> a = 6)
a = 2
a *= 3 #(-> a = 6)
Operadores y Expresiones
Asociatividad
Para asociar operaciones usamos paréntesis
2 + 3 + 4
2 + (3 + 4)
Control de Flujo
La sentencia if
Se utiliza para chequear condiciones
Las palabras reservadas que usa son: if, elif y else.
numero = 23
candidato = int(input('Ingrese un entero: '))
if candidato == numero:
# El bloque comienza aquí
print('Felicitaciones, adivinaste.')
print('(pero no ganaste ningún premio!)')
# El bloque termina aquí
elif candidato < numero:
# Otro bloque
print('No, es un poco mayor')
# En un bloque se puede hacer lo que una quiera ...
else:
print('No, es un poco menor')
# Este bloque se ejecuta si: candidato > numero
print('Hecho')
# Esta última sentencia siempre se ejecuta,
# después de que el if se ejecute.
Control de Flujo
La sentencia while
Permite ejecutar un bloque de código varias veces
Puede tener una claúsula opcional else
numero = 23
intentos = 10
if candidato == numero:
print('Felicitaciones, adivinaste.')
# bucle while termina sin ejecutar el else
break
elif candidato < numero:
print('No, es un poco mayor')
else:
print('No, es un poco menor')
else:
print("Se agotaron los intentos") #Si no hubo break
print('Hecho')
Control de Flujo
El bucle for
La sentencia for..in itera sobre una secuencia de objetos, o sea
sobre cada elemento de la secuencia
Una secuencia es una colección ordenada de elementos
1
2
3
4
Funciones
Funciones
Son piezas de código reutilizable
Se definen con la palabra clave def
def hola_mundo():
# bloque perteneciente a la función
print('Hola Argentina')
# final de la función
# llamada a la función
hola_mundo()
# llamada desde f-strings
print(f'hola_mundo()}, yo de nuevo')
Hola Argentina
Hola Argentina, yo de nuevo
Funciones
x = 5
y = 7
# paso de variables como argumentos
imprime_mayor(x, y)
4 es el mayor
7 es el mayor
Funciones
imprimir('Hola')
imprimir('Argentina ', 5)
Hola
Argentina Argentina Argentina Argentina Argentina
Funciones
Keyword arguments
Si tenemos funciones con muchos parámetros, podemos pasar los
argumentos de los que usamos
Para pasarlos usamos el nombre del parámetro y le damos el
argumento que queremos
También podemos cambiar el orden de los parámetros, siempre
que usemos el nombre del parámetro
func(3, 7)
func(25, c=24)
func(c=50, a=100)
a es 3 y b es 7 y c es 10
a es 25 y b es 5 y c es 24
a es 100 y b es 5 y c es 50
Funciones
La sentencia return
Se usa para salir de una función
Y también para devolver un valor cuando volvemos de la función
print(maximum(2, 3))
3
Práctica
import random
numero = random.randint(0, 100)
Módulos
Módulos
Los módulos sirven para reusar código ya escrito
El método más simple para hacer un módulo es crear un archivo
con la extensión .py con variables, funciones u objetos
Para usar un módulo debemos importarlo
import sys
La sentencia from..import
Sirve para importar en forma directa alguna variable, función u
objeto que pertenece al módulo
Nos evitamos escribir el nombre del módulo cada vez que usamos
lo que importamos
import math
print("La raíz cuadrada de 16 es", math.sqrt(16))#largo
def saluda():
print('Hola, este es mi_modulo.py saludando.')
__version__ = '0.1'
import mi_modulo
mi_modulo.saluda()
print('Versión', mi_modulo.__version__)
def saluda():
print('Hola, este es mi_modulo.py saludando.')
__version__ = '0.1'
saluda()
print('Versión', __version__)
− <cualquier carpeta>/
− ingenierias_en_UTN/
− __init__.py
− FRC/
− __init__.py
− electronica/
− __init__.py
− ingresantes.py
− FRSF/
− __init__.py
− electronica/
− __init__.py
− docentes.py
import ingenierias_en_UTN
p r i n t ( ingenierias_en_UTN . FRC . e l e c t r o n i c a . i n g r e s a n t e s . 2 0 2 4 )
Estructuras de datos
Son estructuras para guardar datos agrupados
Son usados para guardar una colección de datos relacionados
Hay 4 estructuras de datos que vienen por defecto en python
(built-in)
◮ lista (list)
◮ tupla (tuple)
◮ diccionario (dict)
◮ conjunto (set)
Estructuras de Datos
Listas
Es una lista ordenada de items
Los elementos de la lista se separan entre comas
La lista de items se encierran con corchetes
Estructuras de Datos
s h o p l i s t = [ ' manzana ' , ' mango ' , ' z a n a h o r i a ' , ' banana ' ]
Tuplas
Son similares a las listas, pero con menos funcionalidad, por lo
tanto son más livianas
Son inmutables, o sea que no se pueden modificar
Los elementos de la tupla se separan entre comas
y se encierran con paréntesis, aunque son opcionales
Estructuras de Datos
Diccionarios
Asocian claves (keys) con valores (values)
Las claves deben ser únicas en un diccionario, no deben repetirse,
para poder recuperar el valor
Las claves deben ser objetos inmutables (incluso tuplas)
Los valores pueden ser cualquier tipo de objeto
Los distintos pares clave:valor de un diccionario se separan con
comas
El par clave:valor se separa con el carácter :
Los diccionarios se definen (encierran) entre llaves
Estructuras de Datos
Diccionarios
Asocian claves (keys) con valores (values)
Las claves deben ser únicas en un diccionario, no deben repetirse,
para poder recuperar el valor
Las claves deben ser objetos inmutables (incluso tuplas)
Los valores pueden ser cualquier tipo de objeto
Los distintos pares clave:valor de un diccionario se separan con
comas
El par clave:valor se separa con el carácter :
Los diccionarios se definen (encierran) entre llaves
Secuencias
Las listas, tuplas y strings son secuencias
Pueden ser iteradas con un for..in
Tienen test de membresía: in o not in
Soportan operaciones de indexación
Además soportan la operación de rebanar (slice)
Estructuras de Datos
# Slicing on a list
print('Item 1 to 3 is', shoplist[1:3])
print('Item 2 to end is', shoplist[2:])
print('Item 1 to -1 is', shoplist[1:-1])
print('Item start to end is', shoplist[:])
# Slicing on a string
print('characters 1 to 3 is', name[1:3])
print('characters 2 to end is', name[2:])
print('characters 1 to -1 is', name[1:-1])
print('characters start to end is', name[:])
Estructuras de Datos
Item 0 is manzana
Item 1 is mango
Item 2 is zanahoria
Item 3 is banana
Item −1 is banana
Item −2 is zanahoria
Character 0 is s
Item 1 to 3 is ['mango', 'zanahoria']
Item 2 to end is ['zanahoria', 'banana']
Item 1 to −1 is ['mango', 'zanahoria']
Item start to end is ['manzana', 'mango', 'zanahoria', '
banana']
characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to −1 is waroo
characters start to end is swaroop
Estructuras de Datos
Conjuntos
Es una colección no ordenada de objetos
Son usados cuando importa la existencia de un objeto más que el
orden o cuantas veces aparece
Podemos hacer test de membresía, chequear si es un subconjunto o
calcular intersección
Referencias
Cuando creamos una variable y le asignamos un objeto, el objeto
es solo una referencia, no es el objeto
La variable apunta a la dirección de memoria en donde se
encuentra el objeto (binding)
Estructuras de Datos
print('Simple Assignment')
shoplist = ['manzana', 'mango', 'zanahoria', 'banana']
# mylist is just another name pointing to the same object!
mylist = shoplist
Simple Assignment
shoplist is ['mango', 'zanahoria', 'banana']
mylist is ['mango', 'zanahoria', 'banana']
Copy by making a full slice
shoplist is ['mango', 'zanahoria', 'banana']
mylist is ['zanahoria', 'banana']
Práctica Listas
Ayuda:
Usar el template disponible en la filmina siguiente como base
Antes de ejecutar el programa debemos instalar las OpenCV de la
siguiente manera:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import cv2