Clase 5-6: lo básico (continuación)¶
En esta clase veremos:
Repaso
Loops
Input/output
If
Repaso¶
Conceptos claves que revisamos la clase anterior, deberíamos responder qué son, para qué se ocupan, cómo se ocupan:
Librerías
Funciones (intro)
Variables
Types
Listas
Arrays
Crear tres variables del tipo: str, float y bool. Anexar a una lista.
Dar un ejemplo de dónde ocupamos “.” y “,”.
Usando la función print(), ¿cómo agregamos variables string?
¿Cómo se evalúa una condición con igualdad y una con desigualdad?
¿Si tenemos un vector y una matriz cómo realizamos una multiplicación?
1. Loops¶
Vamos a utilizar loops
para crear iteraciones sobre una secuencia, un rango determinado, por ejemplo una lista, de 0 a 10, etc.
Para crear una iteración vamos a usar for
.
La sintaxis
es: for + iterador + in + sobre lo que iteramos + :
#Lo más básico es que iteramos sobre un rango
#un rango es un tipo de datos entre ciertos valores
print(range(5))
#Podemos iterar sobre un rango
for i in range(0, 10):
print(i)
range(0, 5)
0
1
2
3
4
5
6
7
8
9
#Podemos iterar sobre una lista: iteramos en el rango de valores que tiene la lista
x = [0, 1, 'a', True]
for i in range(0, len(x)):
print(i)
0
1
2
3
#Podemos iterar sobre un array
import numpy as np
x = np.array([0, 1, 2, 3])
for i in range(0, len(x)):
print(i)
0
1
2
3
#Podemos iterar sobre los elementos de la lista
x = [0, 1, 'a', True]
for i in x:
print(i)
0
1
a
True
#Podemos usar la iteración para acceder a elementos de una lista
x = [1, 2, 3]
y = [4, 5 ,6]
for i in range(0, len(x)):
print(x[i] + y[i])
5
7
9
#Podemos hacer iteraciones anidadas (for dentro de un for)
x = [1, 2, 3]
y = [4, 5 ,6]
for i in x:
for j in y:
print((i,j))
(1, 4)
(1, 5)
(1, 6)
(2, 4)
(2, 5)
(2, 6)
(3, 4)
(3, 5)
(3, 6)
Un aspecto clave es entender dónde existe una variable o lista, y si está dentro o fuera de un loop qué es lo que pasa.
#nombre de la variable, signo = , valor
x = 10
#lista: nombre de la lista, signo = , [ valor ]
x = [10, 20]
#Iteración: for, iterador 'i', entre 'in', rango o lista (range(0, 10), [1,2,3]), ':'
for i in range(0, 10):
print(i)
#Una vez me salgo del espacio se acaba la iteración
x = 10
0
1
2
3
4
5
6
7
8
9
Si creamos una variable antes de la iteración podemos modificarla con cada iteración. Veamos tres ejemplos con x, y, z:
# Creamos x y y fuera de la iteración
x = 0
y = 0
for i in range(1, 5):
z = 0 #creamos z dentro de la iteración
x = x + i
y = i
z = z + i
print("i:", i, ", x=", x, ", y=", y, ", z=", z)
i: 1 , x= 1 , y= 1 , z= 1
i: 2 , x= 3 , y= 2 , z= 2
i: 3 , x= 6 , y= 3 , z= 3
i: 4 , x= 10 , y= 4 , z= 4
Podemos utilizar iteraciones dentro de iteraciones, esto nos puede servir para trabajar con diferentes fuentes de información.
import numpy as np
#linspace(inicio, término, cantidad de elementos)
a = np.linspace(1, 10, 5)
print("type de a:", type(a))
print("a: ", a)
#arange(inicio, término, separador)
b = np.arange(1, 10,2)
print("type de b:", type(b))
print("b: ", b)
type de a: <class 'numpy.ndarray'>
a: [ 1. 3.25 5.5 7.75 10. ]
type de b: <class 'numpy.ndarray'>
b: [1 3 5 7 9]
Vamos a utilizar estas listas para crear un for anidado
y guardar un resultado en una lista
#1. Creamos una lista
lista1 = []
#2. Iteramos sobre los valoes de a y b
for i in a:
for j in b:
#3. Anexamos una operación a la lista
# print((i, j), "multiplicacion:", i * j)
lista1.append(i * j)
print(lista1)
[1.0, 3.0, 5.0, 7.0, 9.0, 3.25, 9.75, 16.25, 22.75, 29.25, 5.5, 16.5, 27.5, 38.5, 49.5, 7.75, 23.25, 38.75, 54.25, 69.75, 10.0, 30.0, 50.0, 70.0, 90.0]
#1. Creamos una lista
lista2 = []
#2. Iteramos sobre el largo de las listas a y b
for i in range(0, len(a)):
for j in range(0, len(b)):
#3. Anexamos una operación a la lista
lista2.append(a[i] * b[j])
print(lista2)
#Podemos sumar los valores de una lista con sum()
print("suma de la lista:", sum(lista2))
[1.0, 3.0, 5.0, 7.0, 9.0, 3.25, 9.75, 16.25, 22.75, 29.25, 5.5, 16.5, 27.5, 38.5, 49.5, 7.75, 23.25, 38.75, 54.25, 69.75, 10.0, 30.0, 50.0, 70.0, 90.0]
suma de la lista: 687.5
Son iguales la lista 1 y lista 2?
lista1 == lista2
True
2. Input/Output¶
La función input() nos va a pedir entregar un valor. Esto es útil cuando necesitamos que el usuario nos reporte algún dato.
input()
---------------------------------------------------------------------------
StdinNotImplementedError Traceback (most recent call last)
<ipython-input-13-9c8b639daf2f> in <module>
----> 1 input()
~/miniconda3/lib/python3.9/site-packages/ipykernel/kernelbase.py in raw_input(self, prompt)
843 """
844 if not self._allow_stdin:
--> 845 raise StdinNotImplementedError(
846 "raw_input was called, but this frontend does not support input requests."
847 )
StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.
Podemos incorporar un texto referente a la información solicitada
input("Indique su edad:")
¿Podemos guardar la información?
edad = input("indique su edad:")
#Es una variable del tipo string
#¿Cómo la pasamos a una variable numérica?
#Con int() o float()
print(edad)
3. If/else¶
La operación if
nos permite evaluar si se cumple una condición.
Por ejemplo: Iteramos sobre una lista entre (0, 10), si el valor es mayor que 5 muestra el resultado.
Iteramos sobre una lista entre (0, 10): hacemos un for entre 0 y 10.
si el valor es mayor que 5: condición
muestra el resultado: operación
for i in range(0, 10): #iteración
if i > 5: #condición
print(i) #operación
6
7
8
9
¿Qué tipo de operaciones podemos evaluar? Operaciones lógicas:
Igualdad: ==
Desigualdad: !=
Mayor: >
Mayor que: >=
Menor: <
Menor que: <=
a = 10
if a==10:
x = a
print(x)
10
Para evaluar varias situaciones vamos a usar if, elif y else.
Ejemplo: Vamos a crear una lista A utilizando valores de una segunda lista B con valores entre 0-10. Vamos a iterar sobre los valores de la lista A y realizar las siguientes operaciones
Si el valor está entre 0-3 guardamos ese mismo valor en B
Si el valor es mayor que 3 y menor que 5 lo multiplicamos por 2
Si el valor es igual a 5 pedir ingresar un valor con la función input()
Para todo el resto eleva el número al cuadrado
#1. Creamos las listas
A = np.arange(0, 11, 1)
B = []
#2. Iteramos sobre A
for i in A:
#Creamos la primera condición
if i>=0 and i<= 3:
B.append(i)
#Segunda condición
elif i > 3 and i<5:
B.append(i*2)
#Tercera condición
elif i==5:
B.append(float(input("Agregar un valor")))
B.append(input("input 2:"))
#Para todo el resto
else:
B.append(i**2)
Agregar un valor 10
input 2: 10
print("A:", A)
print("B:", B)
A: [ 0 1 2 3 4 5 6 7 8 9 10]
B: [0, 1, 2, 3, 8, 10.0, '10', 36, 49, 64, 81, 100]
x = input("agrega un valor")
type(x)
agrega un valor 10
str
a = 'texto2'
if a != 'texto':
print("ok")
ok
a = [0, 'x', 3]
for i in range(0, len(a)):
print(a[i])
if i == 0:
print("ok")
elif i == 1:
print("ok2")
0
ok
x
ok2
3
Actividad corta 1¶
Instrucciones:
Cada pregunta la debe responder en una celda diferente.
Antes de cada celda de código debe ir un
markdown
que muestre la pregunta que está respondiendo.En la celda de código debe agregar un breve comentario de qué está haciendo.
Acá un ejemplo de cómo va a responder:
Importe una librería
#Importar librería
import numpy as np
Responda las siguientes preguntas.
Crear un libro de jupyter (archivo .ipynb) en su carpeta para actividades del curso. Nombre el libro como
Actividad_1
Crear una variable de texto, una numérica y otra boolean.
Explique brevemente qué ocurre con la variable x si ejecuto el siguiente código:
x = 1 ,
luego x = x + 1
¿Es lo mismo range(10) y range(1,10)? muestre su resultado mediante una variable boolean.
Crear una lista vacía llamda ‘L1’, luego anexar las tres variables del punto 2. a ‘L1’.
Borrar la variable numérica de L1.
Realice un
for
entre el rango 0-10 y realice los siguientes dos ejemplos:Antes del
for
cree una variable x = 0, dentro delfor
sume 1 (x = x + 1)Dentro del
for
cree una variable x = 0, luego sume 1 (x = x + 1)¿Cuál es la diferencia?
Genere un array A de dimensiones 2x2 y otro B de dimensiones 2x1. Realice un loop anidado (for dentro de for) para multiplicar cada elemento de A por el de B. Guárdelos en una lista.
En una lista guarde el promedio, la desviación estantar y la suma de la lista generada en el punto 9.