Segunda Sesión Introducción A Python
Segunda Sesión Introducción A Python
Segunda Sesión Introducción A Python
March 7, 2021
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.
[1]: a = 2540
b = 2545
c = 2540
[2]: print(a)
2540
[3]: a == c
[3]: True
[4]: a is c
[4]: 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, sin pérdida de generalidad: 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
[5]: 140226119003728
[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)
[8]: my_tuple[:]
[8]: (1, 2, 3, 6)
[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
[7]: ## 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"]
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
[7]: [1, 3, 5, 7]
[125]: 4
[94]: 6
[126]: 26
11
[96]: # nombre = input("¿Cuál es tu nombre?")
[128]: my_set
[128]: {1, 2, 3, 4}
[134]: my_set
[138]: {2}
[9]: ### Los diccionarios son mutables, es decir, puedo modificar el objeto
### en memoria.
my_dict = {
"Nombre": ["Pedro", "Memo", "Jose", "Arturo"],
"Apellido": ["Lopez", "Perez", "Rios", "Hernandez"],
"Ciudad": ["Paris", "Madrid", "San Pablo", "Buenos Aires"]
}
### java script: lenguaje de progemación de alto nivel
### json : Java Script Object Notation.
### DataFrame: (Marco de Datos) una manera de almacenar datos.
[10]: print(my_dict)
12
[12]: my_dict["Nombre"]
[13]: my_dict["Apellido"]
[14]: my_dict["Ciudad"]
[16]: my_dict.items()
[131]: print(my_string)
13
1.3 2. Control de Flujo
1.3.1 2.1 Condicionales
[24]: a = -10
if a > 0:
print("El número es positivo")
else:
print("El número es negativo o cero")
if a > 0:
print("El número es positivo")
else:
print("El número es no positivo")
if a > 0:
print("El número es mayor positivo.")
elif a == 0:
print("El número es cero")
else:
print("El número es negativo")
14
week = 3
else:
week = 4
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
## [1, n+1) intersección con los enteros == [1, n] intersección con los enteros
## Los for se aplican para cualquier objeto Iterable
## [1, n+1) = [1, n] en los enteros
15
## Python
for i in range(1, n + 1):
print(i)
16
43
44
45
1
2
p
(1, 2, 3)
[1, 2, 5]
6
7
H
o
l
a
c
o
m
o
t
e
v
a
e
l
d
í
a
d
e
h
o
17
y
1
2
[1, 2, 3, 4]
Esto es un string
# [0, len(my_list) - 1]
for i in range(0, len(my_list)):
if i % 2 == 0:
impares.append(my_list[i])
[54]: impares
k = 2n
k = 2n + 1
Para identificar si un número es par o no podemos dividirlo por 2 y verificar el residuo.
n/m
n = m*q + r
%
[47]: ### Ejercicio: De los primeros n números naturales imprimir solamente los pares.
n = input("Algo")
18
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
i = 1
while i <= lim_sup:
print(i)
i = i + 1
19
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while i <= n:
if i es par:
print(i)
### Falta decir como se mueve la i.
1.4 Funciones
f (x)
[65]: ### Los callables para ser invocados necesitar llevar paréntesis
hola_mundo()
Hola mundo!!
otra cosa
[70]: saludar("Damián")
20
Hola Damián, cómo te va?
Hola mundo!!
[72]: saludar()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-72-67e92cc24e58> in <module>
----> 1 saludar()
[87]: print(cuad)
5625
fib = [1, 1]
return fib
21
[98]: 5
[113]: a = fibonacci(10)
[114]: print(a)
[ ]:
22