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

  1. Crear tres variables del tipo: str, float y bool. Anexar a una lista.

  2. Dar un ejemplo de dónde ocupamos “.” y “,”.

  3. Usando la función print(), ¿cómo agregamos variables string?

  4. ¿Cómo se evalúa una condición con igualdad y una con desigualdad?

  5. ¿Si tenemos un vector y una matriz cómo realizamos una multiplicación?

\[\begin{split}\left[ \begin{array}{cc} 2 & 2 \\ 2 & 2 \end{array}\right] \cdot \left[ \begin{array}{cc} 2 & 2 \\ 2 & 2 \\ \end{array} \right] = \left[ \begin{array}{cc} 8 & 8 \\ 8 & 8 \\ \end{array} \right]\end{split}\]

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:

  1. Importe una librería

#Importar librería
import numpy as np

Responda las siguientes preguntas.

  1. Crear un libro de jupyter (archivo .ipynb) en su carpeta para actividades del curso. Nombre el libro como Actividad_1

  2. Crear una variable de texto, una numérica y otra boolean.

  3. Explique brevemente qué ocurre con la variable x si ejecuto el siguiente código:

    • x = 1 ,

    • luego x = x + 1

  4. ¿Es lo mismo range(10) y range(1,10)? muestre su resultado mediante una variable boolean.

  5. Crear una lista vacía llamda ‘L1’, luego anexar las tres variables del punto 2. a ‘L1’.

  6. Borrar la variable numérica de L1.

  7. Realice un for entre el rango 0-10 y realice los siguientes dos ejemplos:

    • Antes del for cree una variable x = 0, dentro del for sume 1 (x = x + 1)

    • Dentro del for cree una variable x = 0, luego sume 1 (x = x + 1)

    • ¿Cuál es la diferencia?

  8. 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.

  9. En una lista guarde el promedio, la desviación estantar y la suma de la lista generada en el punto 9.