Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Primera Sesión Fundamentos de Python
Primera Sesión Fundamentos de Python
1 Introducción a Python
Python es un lenguaje de programación de alto nivel.
Es de tipado dinámico.
Es multipropósito, pero de fondo es un lenguaje orientado a objetos.
Todo en Python es un objeto.
Más adelante veremos que la indentación es indispensable en Python
La versión de Python que usaremos está escrita en el lenguaje C.
1
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
a = 10
Cuando asignamos una variable estamos usando un espacio en memoria que referenciamos a través
del nombre de la variable. En general la creación de una variable está relacionada con la creación de
un objeto en la memoria, sin embargo en Python existe algo llamado interning que ocasiona que
crear una variable no signifique siempre crear un objeto en memoria (Lo veremos más adelante).
A pesar de que la sintaxis es la especificada más arriba, existen algunas variantes que son permitidas
en Python.
[7]: a = 2540
b = 2545
c = 2540
[3]: print(a)
2540
[8]: a == c
[8]: True
[10]: a is c
[10]: False
10
H
2
[12]: (None, None)
[16]: ### Función para imprimir un objeto (Todos los objetos en Python implementan el␣
,→método print)
ho
Python permite la creación de sentencias multilínea a partir del símbolo \.
[19]: ### Ejemplo que NO se usa en la práctica para mostrar el uso de sentencias␣
,→multilínea.
for i in \
range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
3
5. Callables
6. Singletons
Numbers
[24]: 1, 2, 3, 4, 5, -1, -10, 0, -10000000
[25]: int
[26]: 2 + 3, 2 * 3, 2 - 3, 2/3
[29]: 621.0
[28]: 14.719999999999999
2.3 * 6.4
[30]: ## Boolean
True, False
## Los booleanos son realmente numeros enteros.
# True ---> 1
# False ---> 0
4
[32]: ### La clase bool es clase hija de la clase int.
### Esto es particular de Python.
(True + True + True + True) * False
[32]: 0
[35]: 8.5678
[37]: 8.48
[39]: 0.7941176470588236
Exponeciación
ab := eblog(a)
[40]: 8
[41]: 2 - 2.05
[41]: -0.04999999999999982
[42]: 3
[43]: 1
5
Si se tienen dos números enteros m, n (donde m ≥ n)
m=n·q+r
[44]: ## m = n * (m // n) + (m % n)
x2 + 1 = 0
√
i := −1
a + bi
También los podemos pensar como puntos en el plano.
(a, b)
[46]: complex
[47]: (-23+41j)
[45]: ### Python es una buena herramienta para trabajar con números complejos.
### Se puede graficar un Mandelbrot con Python
complex_1 = 3 + 5j
Sequences
[52]: ### Tuples : Es una estructura de datos
my_tuple = (1, 4, 3, 5, 7)
[53]: print(my_tuple)
(1, 4, 3, 5, 7)
[55]: print(my_other_tuple)
6
[58]: ### Concatenación de tuplas
(2, 3, 4) + (1, 2, 3)
[58]: (2, 3, 4, 1, 2, 3)
[60]: ## id(my_tuple)
[1, 2, 'Hola']
[70]: 140356041917248
[71]: my_list.append(5)
[73]: my_list
id(my_list)
[73]: 140356041917248
[75]: 140356719427312
[76]: 140356719424672
[14]: concat
[14]: (1, 2, 3, 2, 3, 4)
7
[77]: [1, 2, 3, 2, 3, 4]
[22]: ### Cuando queeremos hacer slicing deberemos escribir primero el índice del␣
,→primer
### elemento que queremos tomar y por última el índice del último elemento␣
,→elemento que
[22]: (2, 3, 4)
[23]: my_tuple[:4]
[23]: (1, 2, 3, 4)
[80]: print(saludo_2)
Hola, cómo te va
[89]: print(cadena_multilinea)
Esto es un string
que tiene más de
una línea, sin mandar
ningún error.
8
File "<ipython-input-85-85d5ad07d222>", line 3
Esto no
^
SyntaxError: invalid syntax
[86]: (1, 2, 5, 7, 8, 9)
[87]: [1, 2, 3, 7, 8, 9]
[98]: 7
[99]: ### Hay que tener cuidado con que los índices no se salgan de rango
my_list[5]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-99-075ca585e721> in <module>
----> 1 my_list[5]
[100]: 'perro'
9
[76]: my_tuple[0]
[76]: 1
[78]: my_tuple[1]
[78]: 5
[102]: my_string[0]
[102]: 'H'
[103]: my_string[4]
[109]: ## (-infinito, a)
my_string = "Hola como te va"
my_string[: 4]
[109]: 'Hola'
[85]: my_string[5:]
[86]: my_string[:5]
10
[86]: 'Hola '
[111]: my_list[1: 3]
[111]: [3, 2]
[1, 'p', 9]
my_list[a:b] extramos los indices desde a hasta b-1
[92]: ## Ejercicio:
### Dada una lista de longitud n.
### Extraer una sublista con los elementos en las posiciones impares
## my_list = [2, 3, 4, 5,7, 9,"p"]
## my_list = [2, 4, 7, "p"]
[125]: 4
[94]: 6
[126]: 26
11
[127]: ### Los conjuntos son objetos NO ordenados.
my_set = {1, 2, 2, 3, 4}
[128]: my_set
[128]: {1, 2, 3, 4}
[134]: my_set
[138]: {2}
[114]: ### Los diccionarios son mutables, es decir, puedo modificar el objeto
### en memoria.
my_dict = {
"Nombre": ["Pedro", "Memo"],
"Apellido": ["Suarez", "Perez"],
"Ciudad": ["CD de Mexico", "Madrid"],
"Teléfono": ["5543678790", "445566778899"]
}
### java script: lenguaje de progemación de alto nivel
### json : Java Script Object Notation.
### DataFrame: (Marco de Datos) una manera de almacenar datos.
[115]: print(my_dict)
[116]: my_dict["Nombre"]
[117]: my_dict["Apellido"]
12
[117]: ['Suarez', 'Perez']
[118]: my_dict["Ciudad"]
[120]: my_dict.keys()
[121]: my_dict.items()
[131]: print(my_string)
[145]: ## Logging
## Operaciones I/O: Input-Output
### Lo que le pedimos al usuario se almacena como un tipo string.
nombre = input("Hola, Cómo te llamas? ")
print(f"Bienvenido {nombre}!")
[ ]: my_list.append(5)
my_list
id(my_list)
13
my_tuple = (1, 2, 3, 6)
id(my_tuple)
concat
[1, 2, 3] + [2, 3, 4]
my_list = [1, 2, 3]
### Cuando queeremos hacer slicing deberemos escribir primero el índice del␣
,→primer
### elemento que queremos tomar y por última el índice del último elemento␣
,→elemento que
my_tuple[:4]
### Strings
saludo = "Hola que tengas muy buen día"
saludo_2 = 'Hola, cómo te va'
print(saludo_2)
cadena_multilinea = """
Esto es un string
que tiene más de
una línea, sin mandar
ningún error.
"""
print(cadena_multilinea)
(1, 2, 5) + (7, 8, 9)
14
[1, 2, 3] + [7, 8, 9]
my_list = [1, 4, 6, 7]
### Hay que tener cuidado con que los índices no se salgan de rango
my_list[5]
my_tuple[0]
my_tuple[1]
my_string[0]
my_string[4]
### [a ,b)
### [0, 3) = [0, 2] (en los enteros)
my_string[0: 12]
## (-infinito, a)
my_string = "Hola como te va"
my_string[: 4]
### [2, 5)
### Slicing: Extraer subsecuencias de una secuencia
my_string[2: 5]
15
my_string[5:]
my_string[:5]
my_list[1: 3]
[my_list[3]] + my_list[3:]
## [0, 1) = [0]
my_list[0:1] + my_list[3:]
## Ejercicio:
### Dada una lista de longitud n.
### Extraer una sublista con los elementos en las posiciones impares
## my_list = [2, 3, 4, 5,7, 9,"p"]
## my_list = [2, 4, 7, "p"]
len([1, 2, 3, 4])
len((1, 2, 3, 4, 5, 6))
my_set
my_set = {1, 2, 3, 4, 4, 5}
my_set
16
my_set_2 = {1, 2, "Esto es un string", complex(1, 1)}
my_set_2.union({3, 4})
my_set_2.intersection({2, 3})
print(my_dict)
my_dict["Nombre"]
my_dict["Apellido"]
my_dict["Ciudad"]
my_dict.keys()
my_dict.items()
nombre = my_dict["Nombre"][1]
apellido = my_dict["Apellido"][1]
ciudad = my_dict["Ciudad"][1]
nombre = "Felipe"
apellido = "Lopez"
ciudad = "Paris"
n = 100
print(my_string)
## Logging
17
## Operaciones I/O: Input-Output
### Lo que le pedimos al usuario se almacena como un tipo string.
nombre = input("Hola, Cómo te llamas? ")
print(f"Bienvenido {nombre}!")
18