Completo Compressed-1
Completo Compressed-1
Statements
B. Statements (instrucciones)
§ Un statement es una unidad de código que el intérprete de Python puede
executar.
§ Son de los primeros errores que se cometen, pero también tienden a ser fáciles de
solucionar.
§ Ocurren cuando se ha violado una de las reglas “gramaticales” de un lenguaje de
programación
§ Abre la puerta de tu carro, luego súbete al carro, conduce 100 kms, y finalmente enciende
el carro, cierra la puerta del carro y métete al carro.
§ Como se puede observar, la sintaxis está bien, pero el orden lógico no está bien.
C. Tres tipos generales de errores en programación
§ Error de semántica (Semantics error):
§ Ocurren cuando tu programa tiene buena sintaxis, cuando el orden de los statements
es correcto, pero el significado final puede no corresponder con lo que el emisor
pretendía originalmente.
§ Como se puede observar, la sintaxis está bien, la lógica está bien, pero la interpretación puede ser
ambigua e inducir a error.
Ejemplo de errores semánticos:
¿Con qué “b” se escribe ”balazo”?
• Video
• https://www.youtube.com/watch?v=VFz9OcyIXIY&ab_channel=Te%C3%B3filowilmerporrasZeled%C3%B3n
D. Operadores
matemáticos
D. Operadores Matemáticos: (Python como calculadora)
#Suma #Quotient (Cociente de la división)
[1]: (3 + 4) [7]: (21 // 3)
7 7
[2]: (4 - 3) 11
12 0
[4]: (10 / 3) 1
3.3333333333333335
[11]: (345 % 7)
[6]: (17 ** 17) [13]: ((20 + 30) * 12) / 2 #fórmula para calcular el área de un trapecio A= ((B+b)*h) / 2
300
E. Tipos de
Datos
E. Tipos de datos básicos en Python
Tipo de datos básicos Ejemplos Representación en
Python
Números no enteros, números reales o flotantes 0.05, 2.3, -12.3 , 1/3, 1.23E3 float
§ En Python, todo valor que pueda ser asignado a una variable tiene asociado un tipo de dato.
§ Cada tipo de datos tiene propiedades particulares que definen lo que se puede o no hacer con ellos
§ Los tipos de datos determinan qué valores puede tomar una variable y qué operaciones se pueden realizar sobre la misma.
[1]: 2 + 10
12
Tipos de datos (cont.)
[2]: 20 + 30.5 En operaciones matemáticas, se
50.5 pueden mezclar los int con los float
[3]: “abc” +
“abcdef”
“def” Los tipos de datos
[4]: “abc” + “ A “ + “def” Concatenación de caracteres o van a condicionar lo
que se puede o no
“abc A def” concatenación de strings
[5]: “abc” * 3
“abcabcabc” hacer con los datos
[6]: “abc” + 10
TypeError: can only concatenate str (not "int") to str
§ Otro caso sería cuando tenemos números que son de tipo entero (int), pero necesitamos usarlos como strings.
[3]: print (“El número es “ + 123) [4]: print (“El número es “ + str (123))
Error 123
F. Variables
F. Variables y tipos de datos
#Números enteros
[1]: x = 12
print (x)
12 § Nos permiten asignar y almacenar valores, que luego podemos utilizar y manipular
#Números flotantes, números § Las variables se crean asignándoles un valor con el operador =
reales
[2]: y = 13.5
print (y) § Números (enteros y flotantes) x = 12, y = 13.5
13.5
§ Los nombres de variables pueden ser largos. Pueden contener tanto letras como números; pero no pueden pueden empezar con
números.
§ En los nombres de variables puede utilizarse el caracter underscore ( _ ), principalmente en aquellas variables compuestas por
múltiples nombres: mi_variable, variable_contador_general
§ El nombre de la variable es case sensitive. Eso significa que x es diferente de X, el intérprete las entenderá y tratará como variables
distintas
§ El nombre de la variable no debe ser igual al de las palabras reservadas de Python o a nombres de funciones.
Aunque este código es sencillo, su cometido no es El código es sencillo y su cometido es fácil de intuir:
fácil de intuir:
[1]: xdfr2tc4 = 35.0 [2]: horas = 35.0
lalalala = 12.50 tarifa_por_hora = 12.50
werdft2 = xdfr2ct4 * lalalala pago_total = horas * tarifa_por_hora
print (werdft2) print (pago_total)
G. Palabras
reservadas
G.Palabras reservadas en Python
§ El universo de palabras en Python es relativamente pequeño.
§ Estas “palabras revervadas”, son palabras que tienen un significado especial, y que no pueden ser
utilizadas para ninguna otra cosa salvo para lo que fueron concebidas.
Note que la función input captura en forma de string lo que el usuario ingresa.
1.1 Escriba una rutina de código que pregunte por el nombre del usuario y que luego muestre este
nombre
1.2 Escriba una rutina de código que pregunte por el nombre del usuario y que luego pregunte por
su apellido. El programa deberá mostrar el nombre y el apellido ingresados.
1.3 Pregunte al usuario por tres números. Sume los primeros dos números y luego multiplique el total
por el tercer número. Muestre la respuesta de la siguiente manera: “La respuesta es [respuesta]”
1.4 Pregunte por la cuenta del restaurante, luego pregunte cuántos comensales estaban en esa mesa.
Divida el total por el número de comensales y luego muestre cuánto debe pagar cada persona.
1.5 Escriba un programa que pregunte por un número de días, y que luego muestre cuántas horas,
minutos y segundos hay en esos días.
1.6 Escriba un programa que pregunte por un número de horas trabajadas, que luego por la tarifa por
hora, y que luego muestre cuánto se le debe pagar a esa persona.
I. Expresiones
lógicas y
operadores
lógicos
Expresiones lógicas
§ Una expresión lógica es aquella que puede ser True (verdadero) o False (falso), según el operador de comparación que utilicen.
§ Los siguientes ejemplos utilizan operadores de comparación. Es decir, comparan dos operandos y retornan True en caso de que la
expresión sea verdadera, o False en caso de que sea falsa.
Operadores de
Ejmplos Descripción
Comparación
[1]: 5 == 5 [2]: 5 == 7
True False
== x es igual que y
[3]: 5 != 3 [4]: 5 != 5
!= x no es igual que y
True False
[8]: 5 >= 3 [9]: 5 <= 5 [10]: 5 <= 3 >= x es mayor o igual que y
True True False <= x es menor o igual que y
Operadores lógicos: and, or, not
§ Los operadores lógicos trabajan con expresiones lógicas y valores booleanos.
§ Nos proporcionan un resultado lógico (según las Tablas de Verdad), dependiendo de los valores booleanos resultantes de las expresiones
de los operandos.
Operador lógico Operadores
Descripción
operando operando Lógicos
[1]: 5 == 5 and 0 > 4 [2]: 5 == 5 and 4 > 0 [3]: 5 == 4 and 4 > 0 Retorna True si todos
False True False and los operandos son
verdaderos
Retorna True si al
[4]: 5 == 5 or 0 > 4 [5]: 5 == 5 or 4 > 0 [6]: 5 == 4 or 4 > 8 or menos uno de los
True True False operandos es
verdadero
Retorna el contrario
[7]: not (5 == 5) [8]: not (5 == 4) [9]: not (5 == 4 and 4 > 0)
False True True
not del resultado de la
expresión lógica
Ejercicios (2) Aprox 10 min
2.1 (20 % 2 == 0)
2.7 x=4
(20 % 3 == 0 or 2 * 2 > x) and (20 % 2 == 0 and 2 * 2 > x)
J. Estructuras
de Control
Condicionales: if, elif, else
§ Los programas o algoritmos se tornan interesantes cuando podemos hacer que se ejecuten acciones en función del
cumplimiento de alguna condición.
§ Esto requiere de la capacidad de poder establecer y verificar condiciones, con el fin de moldear el comportamiento de
nuestros programas.
§ Las sentencias condicionales if, elif, else, nos ayudan en esa labor.
if
Condición
x = 10
Nos indica que la condición ha terminado
identación
§ Si la condición se cumple (osea que el resultado de la condición es True), entonces se procede a ejecutar lo que esté identado.
§ Si la condición no se cumple (osea que el resultado de la condición es False), entonces lo que está identado es omitido.
§ El else es la alternativa a la condición planteada por if.
else § Es decir, en caso de que la condición planteada por if no se cumpla, entonces el programa deberá
tomar otro rumbo. Esa alternativa se establece con un else.
x = 10
if x % 2 == 0 :
print (“x es par”)
Sino se cumple la alternativa planteada,
entonces proceda a ejecutar lo que está identado else : Los : indican que a partir de ahí inicia
print(“x es impar”)
identación
§ Muchas veces necesitamos en nuestro programa más de dos posibilidades como las planteadas
x = 10
y = 20
if x > y :
Indica que se establecerá
una condición adicional
print (“x es mayor que y”)
elif x < y : Se indica que ahí termina la
condición
x = 10
y = 20
if x > y : Ramas
elif x < y :
print (“x es menor que y”) Rama 2
else :
print(“x y son iguales”) Rama N
Ejercicios (3) Aprox 20 min
3.1) Escriba un programa que le pida al usuario su edad. Si el usuario tiene 18 años o más, el
programa deberá mostrar: “Usted es mayor de edad”. Si el usuario tiene menos de 18 años, el
programa deberá mostrar: “Usted es menor de edad”.
3.2)Escriba un programa que le pida al usuario que introduzca un color. Si el usuario introduce “Azul”
o ”azul”, el programa deberá mostrar: “A mí me gusta el azul también”. Si el usuario introduce otro
color, el programa deberá mostrar: “A mí no me gusta el [color] prefiero el azul”
3.3)Escriba un programa que pida al usuario el número de horas trabajadas. El programa en retorno,
deberá indicar cuánto deberá pagársele. La hora se pagará a 10 dólares si el número de horas es
menor o igual que 15; se pagará a 12 dólares si el número de horas es mayor que 15 pero menor o
igual que 30; y se pagará a 14 dólares si el número de horas es mayor que 30.
K. Funciones
Funciones
§ Una función f(x) es un encapsulamiento de una pieza de código, al que se le ha dado un identificador (también conocido como nombre de la
función).
§ Las funciones nos permiten reutilizar código sin tener que repetir cosas nuevamente. Esto no sólo nos ahorra líneas de código, sino que también
hace que los programas sean más sencillos y fáciles de leer y entender.
§ Input: Las funciones pueden tener uno o varios parámetros como input.
§ Output: Las funciones pueden tener un no algo que retornar.
return valor 2
Invocando la función que hemos creado:
ValorMasAlto (10, 3)
10
§ Las funciones pueden hacer que nuestro programa sea más pequeño, pues nos podrían permitir
eliminar código repetido. Luego si se hace un cambio en el programa, únicamente se tiene que
cambiar en un único sitio.
§ Dividir un programa grande en funciones, nos permiten hacer debugging (buscar errores o depurar
el código), viendo las partes y luego integrándolas como un todo.
§ Una función bien diseñada a menudo son útiles para varios programas. Una vez que se escribe una
función y se depura, esta puede reusarse.
Ejercicios (4) Aprox 20 min
4.1 Escriba una función que reciba un número como parámetro y retorne el cubo de ese número.
4.2 Escriba una función que reciba un número como parámetro y retorne True si ese es un número es par. En caso contrario deberá retornar
False
4.3 Escriba una función que muestre la leyenda “Esta función no retorna nada”
4.4 Escriba una función que reciba como parámetros tres valores numéricos, y que retorne el promedio de estos.
4.5 Escriba una función que reciba tres strings como parámetros, y retorne los tres strings concatenados pero separados por un “ ”
Opcional
4.6 Escriba una función que se llame Convertidor, la cual convertirá de dólares a moneda local o de moneda local a dólares según lo indique la
variable tipoDeConversion. Si tipoDeConversion es ”DL”, se asumirá que el monto a convertir está en dólares, y se deberá pasar a moneda local.
Si tipoDeConversion es “LD” se asumirá que el monto a convertir está en moneda local, y se deberá pasar a dólares. Elija usted el tipo de cambio
correspondiente a la moneda de su país (aquellos de Panamá y El Salvador pueden usar el tipo de cambio de cualquier otro país).
Un ciclo while, permite que el código en su interior, sea repetido un número de veces, mientras una condición se mantenga.
5.1 Inicie con una variable que llamaremos total, cuyo valor inicial es 0. Mientras la variable total sea menor o igual a
50, continúe solicitándole al usuario que introduzca un número. Sume ese número a la variable total, e imprima el
mensaje “El total es …[total]”. Detenga el loop cuando el total sea mayor que 50.
5.2 Pídale al usuario que introduzca un número. Manténgase preguntando hasta que ingrese un valor más grande
que 100. Cuando eso ocurra imprima el mensaje ”El último número que ingresó fue: [numero]”, y termine el
programa.
5.3 Pídale al usuario que ingrese un número, y luego pídale que ingrese otro número. Sume esos dos números y
luego pregunte si quieren seguir agregando otro número. Si el usuario responde “S”, pídale que ingrese otro número
y súmelo al total. Continúe preguntando hasta que el usurio responda “N”. Finalmente, cuando se detenga el ciclo,
muestre el total.
Aplicando el while…
Límite superior
limiteInferior = 1 Iteración 2:
limiteSuperior = 5 limiteInferior = 3 (limiteInferior = 2 + 1)
total = 6 (total = 3 + 3)
total = 0
Iteración 3:
limiteInferior = 4 (limiteInferior = 3 + 1)
while limiteInferior <= limiteSuperior: total = 9 (total = 6 + 3)
total = total + 3 Iteración 4:
limiteInferior = limiteInferior + 1 limiteInferior = 5 (limiteInferior = 4 + 1)
total = 12 (total = 9 + 3)
return total Iteración 5:
limiteInferior = 5 (limiteInferior = 5 + 1)
total = 15 (total = 12 + 3)
n es el límite superior de la sumatoria
5
i es el índice de cada elemento de la suma
1 + 2 + 3 + 4 + 5 = 15
total = 0 Iteración 1:
total = 1 (total = 1 + 0)
i=2 (i = 1 + 1)
i=i+1 Iteración 3:
total = 6 (total = 3 + 3)
i=4 (i = 3 + 1)
Iteración 4:
return total total = 10
i=5
(total = 4 + 6)
(i = 4 + 1)
Iteración 5:
total = 15 (total = 5 + 10)
i=6 (i = 5 + 1)
Aprox 30 min
Ejercicio 6
6.1 Desarrolle una función para cada una de las siguientes sumatorias:
a.
b.
c.
Ejercicio 6 (cont.)
6.2 Utilice while para desarrollar una función que despliegue lo siguiente:
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************
Operadores lógicos: and, or, not Derivado desde la lógica aristotélica
[1]: 5 == 5 and 0 > 4 [2]: 5 == 5 and 4 > 0 [3]: 5 == 4 and 4 > 0 Retorna True si todos
False True False and los operandos son
verdaderos
Retorna True si al
[4]: 5 == 5 or 0 > 4 [5]: 5 == 5 or 4 > 0 [6]: 5 == 4 or 4 > 8 or menos uno de los
True True False operandos es
verdadero
Retorna el contrario
[7]: not (5 == 5) [8]: not (5 == 4) [9]: not (5 == 4 and 4 > 0)
False True True
not del resultado de la
expresión lógica
Funciones
§ Una función f(x) es un encapsulamiento de una pieza de código, al que se le ha dado un identificador (también conocido como nombre de la
función).
§ Las funciones nos permiten reutilizar código sin tener que repetir cosas nuevamente. Esto no sólo nos ahorra líneas de código, sino que también
hace que los programas sean más sencillos y fáciles de leer y entender.
§ Input: Las funciones pueden tener uno o varios parámetros como input.
§ Output: Las funciones pueden tener un no algo que retornar.
return valor 2
Invocando la función que hemos creado:
ValorMasAlto (10, 3)
10
Un ciclo while, permite que el código en su interior, sea repetido un número de veces, mientras una condición se mantenga.
total = 0 Iteración 1:
total = 1 (total = 1 + 0)
i=2 (i = 1 + 1)
i=i+1 Iteración 3:
total = 6 (total = 3 + 3)
i=4 (i = 3 + 1)
Iteración 4:
return total total = 10
i=5
(total = 4 + 6)
(i = 4 + 1)
Iteración 5:
total = 15 (total = 5 + 10)
i=6 (i = 5 + 1)
M. Manejo de
Excepciones
Manejo de excepciones
§ Es muy sencillo que un programa cometa errores. Muchos errores pueden cometerse, cuando se asume que el input o
entrada de un programa, será el que nosotros esperamos.
§ Un ejemplo clásico es cuando a un usuario le pedimos que ingrese un número y este ingresa otra cosa; en ese caso el
programa producirá un error cuando este se ejecute.
Es el mismo
código, pero el
usuario ingresa dos
cosas distintas. B
¿Qué retorna A
y qué retorna B?
A
El ejemplo A retorna lo
esperado por el
programador.
Pero ejemplo B
retorna un error.
Capturando excepciones con try and except
§ En muchos lenguajes, existe una estructura de ejecución condicional que permite capturar y manejar errores, tanto esperados como inesperados.
§ En Python, esta estructura se maneja con try / except. La idea detrás de try and except, es que uno como programador sabe que que algunas
secuencias de instrucciones podrían acarrear algún problema. Entonces, lo que se busca es agregar algún statement o ejecutar otro tipo de
instrucción, en caso de que ocurra algún error.
§ Se puede pensar en try and except, como una “póliza de seguros”, sobre una secuencia de instrucciones.
Capturar excepciones dará mayor robustez al código y capacidad de resilencia a los sistemas.
Evitará situaciones que pueden ir desde bases de datos sucias hasta caídas importantes en el sistema. Todas derivando en pérdidas de calidad,
tiempo y dinero.
Aprox 10 min
Ejercicio 7
§ 7.1 Reescriba su programa de horas trabajadas…
“3.3 Escriba un programa que pida al usuario el número de horas trabajadas. El programa en retorno, deberá indicar cuánto deberá
pagársele. La hora se pagará a 10 dólares si el número de horas es menor o igual que 15; se pagará a 12 dólares si el número de
horas es mayor que 15 pero menor o igual que 30; y se pagará a 14 dólares si el número de horas es mayor que 30.”
§ …Incorporando lo siguiente:
§ Deberá encapsular el código en una función.
§ Deberá ser capaz de capturar errores de usuario a la hora de ingresar los datos.
Bloque 2
Estructuras
de Datos
Estructuras de datos
§ Las estructuras de datos son maneras específicas que ayudan en la
organización y análisis eficiente de datos y de la información.
§ El uso de cuál estructura de datos utilizar, depende de los datos que se tienen. De la misma manera, los programadores hacen uso de distintos
tipo de estructuras de datos, para tareas determinadas y para lograr un alto rendimiento.
§ Las estructuras de datos se estudian como conceptos sobre programación, y no sobre un lenguaje de programación específico. Eso sí, cada
lenguaje puede tener diferentes implementaciones de estructuras de datos.
Existen diferentes tipos de estructuras de datos:
§ Listas § Diccionarios de datos § Dataframes
§ Grafos § Árboles
§ Matrices
§ Arreglos y tuplas
En este curso veremos dos estructuras de datos
básicas para la ciencia de datos:
[4, 8, 5, 3, 2]
[“Dept. Finanzas”, “Dept. Contabilidad”, “Dept. Operaciones” ]
§ Como científicos de datos, se debe trabajar con múltiples data points
§ Supongamos que queremos utilizar las diferentes alturas de los miembros de este curso:
Altura1 = 1.60
Altura2 = 1.76
Altura3 = 1.81
Altura4 = 1.65 Trabajar demasidadas variables sobre una misma categoría es
inconveniente, desordenado e ineficiente
Altura5 = 1.86
Altura6 = 1.62
etc
Listas en Python
[altura1, altura2, altura3, altura4, altura5, altura6] Es más eficiente almacenar este tipo de información en una lista de Python.
Esta lista se puede construir con brackets cuadrados
Es posible, y más
ordenado, poder
agrupar en sublistas, el
nombre de la persona
con su respectivo
peso. En este caso, le
estamos diciendo a
Python que tenemos
una lista de sublistas.
Ejercicio 08 Aprox 6 min
§ 8.1. Construya una lista con al menos 7 elementos. La lista debe contener diferentes tipos de datos.
§ 8.2. Escriba una lista con los años de nacimiento de 5 miembros de su familia. Denomine esa lista
como lista_anios_nacimiento. Muestre los resultados.
§ 8.3. Reescriba la lista anterior como una lista de listas. Cada sublista deberá contener el nombre de
su familiar al lado de su respectivo año. Denomine esa lista como lista_anios_nacimiento2. Muestre
los resultados.
Listas en Python - Indices
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
Noten que el primer elemento de la lista corresponde al índice 0. Esto se llama zero-indexing, y quiere decir que la cuenta de elementos inicia en cero
Por ejemplo, si quiesiéramos identificar la altura de Rodrigo, podemos accesarlo mediante el índice 5.
índices de -1 a -12
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
índices de 0 a 11
índices de -1 a -12
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
índices de 0 a 11
índices de -1 a -12
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
índices de 0 a 11
Nos devuelve una lista, con los valores que hay desde el
índice 3 hasta el índice que está previo al 5
[ inicio : final ]
Ojo: ¿Qué le ha pasado a la lista orignal (lista_de_estaturas_y_nombres)?
inclusivo excluyente
Listas en Python – list slicing (2)
índices de -1 a -12
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
índices de 0 a 11
Otras técnicas de slicing:
Nos devuelve una lista, con los valores que hay desde el índice cero,
hasta el índice 5 (recordemos que el índice 6 queda excluído)
Nos devuelve una lista, con los valores que hay desde el índice 2, hasta el elemento final
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
lista_particion = []
Agrega en lista_particion los valores de la lista_de_estaturas_y_nombres desde el índice 1 hasta el índice 10.
Muestra (imprime) el resultado de lista_particion
lista_particion2 = []
Agrega en lista_particion2 los elementos de la primera mitad de lista_de_estaturas_y_nombres
Muestra (imprime) el resultado de lista_particion2 4. Imprime el resultado de:
lista_de_estaturas_y_nombres [ -2 : -12]
lista_de_estaturas_y_nombres [ -12 : -2]
9.3. Crea una nueva lista vacía lista_de_estaturas_y_nombres [ -2 : 12]
lista_de_estaturas_y_nombres [ 1 : -3]
lista_particion3 = []
Agrega en lista_particion3 los nombres y estaturas desde Laura hasta Tony, incluyendo la ¿Qué se produce y por qué se produce?
estatura de este último
Muestra (imprime) el resultado de lista_particion3
Listas en Python – Manipulación de listas
§ Manipulación de listas
§ Las listas son estructuras mutables, es decir, pueden ser manipuladas y transformadas.
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
Supongamos que nos hemos equivocado con la estatura de Tony, en lugar de 1.86, su estatura real era 1.84
Sabemos que la estatura de Tony está en el índice 9.
Si accedemos con este índice obtenemos 1.86
Para modificar un elemento, solamente lo accedemos con el índice correcto y le asignamos un nuevo valor (en este caso 1.84),
de la misma manera en que lo haríamos con una variable.
Ahora, si volvemos a acceder el elemento en la posición 9 de la lista, obtendremos el nuevo valor.
Si volvemos a invocar la lista en Python, veremos la lista completa, con el cambio realizado.
Listas en Python – Manipulación de listas
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
Indices: 0 1 2 3 4 5 6 7 8 9 10 11 12 13
Supongamos que queremos eliminar de la lista extendida, los nombres y estaturas de Jorge y Laura.
0 1 2 3 4 5 6 7 8 9
Noten que al agregar o eliminar elementos de una lista, los elementos se acomodan y pasan a ocupar
nuevas posiciones. Por ejemplo: María antes pertenecía a la posición 6, pero ahora, tras eliminar 4
elementos, María pasó a la posición 2
Ejercicios 10 Aprox 15 min
Indices: 0 1 2 3 4 5 6 7 8 9 10 11
Le indicamos que nos dé el elemento localizado en el índice 4 de la lista, y que lo remueva de esa lista
Se modifica la lista original, sin el elemento que anteriormente estaba ubicado en el índice 4
Le indicamos que nos dé el último elemento de la lista, y que lo elimine de dicha lista
Se modifica la lista original. Vemos que ya no existe el primer “e” que estaba anteriormente
Ojo: Cuando pedimos remover un elemento que NO está en la lista, obtendremos un error.
Acá estamos pidiendo remover un elemento que no está en la lista. Esto nos produce un error.
Listas en Python – Manipulación de listas
Ordena los elementos de la lista. En este caso, elementos tipo strings. Note que la manera en que Python ordena a los strings,
corresponde a los valores de los caracteres que componen el string, y no necesariamente a la forma en como ordenaría un ser humano
Ojo: Obtendremos un error si tratamos de ordenar una lista con distintos tipos de datos.
Listas en Python – Manipulación de listas
Ejercicios 11
§ 11.1 Escriba un código que automáticamente elabore una lista de 100 elementos con numeros
random que vayan de 0-1000. La función deberá retornar dicha lista. (tip: utilicen while como
mecanismo de control y de avance)
§ 11.2 Continuando con el punto anterior, crear dos listas: lista1 con los elementos de la primera
mitad de la lista original y lista 2 con los elementos de la segunda mitad.
§ 11.3 Ordenar lista 1 en orden secuencial. Por otra parte, lista2 deberá modificarse para que sus
elementos estén ordenados en orden inverso. Imprimir, la lista original, la lista 1 y la lista 2
O. Ciclo for
Ciclo (loops): for
§ Muchas veces, necesitamos iterar y repetir, a través de un grupo de elementos predefinidos como una lista de palabras, las
líneas de un archivo, o una lista de números.
§ El loop o ciclo for se utiliza cuando tenemos una lista de elementos predefinidos sobre la cual iterar. (Justamente, esta es la
razón por la cual el ciclo for, es un ciclo defido). El ciclo for realiza tantas iteraciones como elementos haya en la lista.
Elementos predefinidos
Hemos definido la variable departamentos como una lista de 7 strings, con los departamentos de una empresa.
Por cada elemento de la lista, el ciclo for ejecuta una iteración de su bloque de código
Listas en Python – Recorriendo y procesando listas
Supongamos que tenemos en una lista los códigos de un catálogo de productos y que queremos procesarla de alguna manera
Acá buscamos realizar un procesamiento simple a medida que vamos recorriendo la lista
OJO: la variable x es una copia del elemento de cada elemento. Esto quiere decir
que no se puede alterar la lista, directamente incidiendo sobre la variable x
Listas en Python – Recorriendo y procesando listas
Noten que cuando invocamos la lista original, sus elementos han sido modificados.
Ejemplos del uso de for
Ejemplo 1: Sumando los elementos de una lista data
Output
Ejemplos del uso de for
Ejemplo 2: Determinando el elemento más pequeño de una lista
Output
Ojo: iniciamos el valor más bajo con una variable vacía (None). Eso nos permite iniciar “limpios” sin ninguna preconcepción de cuál es el valor menor.
Listas en Python – Recorriendo y procesando listas Aprox 30 min
Ejercicios 12
• 12.1. Escriba una función llamada largo. La función largo(lista), recibirá una lista como parámetro, y deberá retornar la
longitud de la lista, es decir la cantidad de elementos que contiene.
• 12.2. Escriba una función llamada miembro. La función miembro(e, lista), recibirá un elemento y una lista como parámetros.
Deberá retornar True si el elemento e es miembro de la lista; de lo contrario retornará False.
• 12.3. Escriba una función que se llame actualizar_precios. La función actualizar_precios(lista, incremento), recibirá una lista
de precios y un valor float entre 0 y 100 (por ejemplo 0.10) correspondiente al incremento que se desea otorgar a todos los
precios. La función deberá retornar la lista de precios actualizada.
• 12.4. Escriba una función que se llame suma_lista. La función suma_lista(lista), recibirá una lista de números y deberá
retornar la suma de los elementos de esa lista.
• 12.5. Escriba una función que se llame promedio_lista. La función promedio_lista(lista), recibirá una lista de números y
deberá retornar el promedio de los valores de esa lista.
• 12.6. Escriba una función que se llame valor_maximo. La función valor_maximo (lista), recibirá una lista de números, y
deberá retornar el valor máximo de dicha lista.
P. Bibliotecas
Bibliotecas
§ Una de las peculiaridades de Python es su flexibilidad.
§ Si bien, una de las mejores prácticas cuando se está empezando a programar es escribir código totalmente nuevo. Conforme se va adentrando en el uso del
lenguaje, se irán necesitando ayudas o complementos, que impactarán positivamente en los tiempos y posibilidades de desarrollo. Igualmente, podríamos
encontrarnos situaciones que no se podrían resolver con la codificación estándar de un lenguaje de programación.
§ Para eso existen las bibliotecas. En programación, una biblioteca (o library), es una coleción de rutinas (paquetes, módulos y funciones) que el programador
puede usar.
§ Las bibliotecas tienen distintos propósitos, y las podemos usar a conveniencia según lo necesitemos.
§ A media que vamos adentrándonos en el lenguaje, se va perfeccionando nuestro conocimiento de las bibliotecas, y se van conociendo bibliotecas nuevas. La
evolución de la cantidad de bibliotecas disponibles en Python, hacen de Python un lenguaje muy dinámico.
…y
muchas Esta biblioteca es muy común. Proporciona algunas
más funcionalidades matemáticas avanzadas para Python.
Una biblioteca es una colección de varios paquetes. Sin embargo, conceptualmente no hay diferencia entre bibliotecas y paquetes
Usando bibliotecas: random library
§ Una biblioteca que también es muy útil es la biblioteca random.
§ Muchas veces necesitamos incorporar cierta impredictibilidad en nuestros programas. (un aspecto que es muy común en el ámbito de los juegos o cuando
incorporamos aspectos de gamification)
§ Por ejemplo, si quisiéramos obtener un número aleatorio dentro de un rango específico. O si quisiéramos hacer una selección aleatoria dentro un rango de
items que son dados como entrada.
Ejemplo 2 Otra manera, es cuando asignamos las propiedades de la biblioteca que estamos importando.
De esa forma, en lugar de recurrir cada vez a la biblioteca como en el caso anterior, lo que
invocamos es la instancia a esa biblioteca. Esta opción puede ser útil para aspectos de
legibilidad.
Ejemplo 3
Ejemplo 4
Aprox 25 min
Ejercicio 13… un juego simple entre máquina y usuario
Ejercicio Grupal, pero que también forma parte del portafolio individual
§ 13.1 Haremos una función donde el usuario deba adivinar un número aleatorio entre 0 y 100
§ Inicialmente el programa deberá calcular un número aleatorio entre 0 y 100.
§ El programa pedirá al usuario que intente adivinar el número. Para ello, el programa pedirá al usuario que ingrese un
número.
§ Si el número que introdujo el usuario es mayor que el número aleatorio, el programa deberá indicarle al usuario.
§ Si el número que introdujo el usuario es menor que el número aleatorio, el programa deberá indicarle al usuario.
§ Si el número que introdujo el usuario es igual que el número aleatorio, entonces el programa felicita al usuario por acertar. El
programa mostrará el número aleatorio (hay que mantener la transparencia en los juegos), y el programa se termina.
§ El usuario tendrá hasta 5 intentos para adivinar. Si el usuario acierta el usuario gana. Si después del 5to intento el
usuario no ha adivinado, entonces la computadora gana.
Una biblioteca es una colección de varios paquetes. Aunque conceptualmente no hay diferencia entre bibliotecas y paquetes
§ Vamos a utilizar el sub package pyplot, de la biblioteca Matplotlib
Visualización simple– Función plot
Tenemos un gráfico con 4 data points
Configurando
y dando más
detalle al
gráfico
Visalizando mejor los data points – Función scatter
Histogramas
¡ Tomemos como ejemplo, la información del Banco Mundial correspondiente a cada país: nombre del país, población,
PIB per cápita, crecimiento económico, etc.
¡ Esto podría manejarse mediante listas:
¡ Lista_nombres_países = [“Afganistan”, “Albania”, “Argelia”, “Andorra”, “Angola”, “Antigua y Barbuda”, “Argentina”, …]
¡ Lista_poblacion_paises = [34413603.0, 2880703.0, 39728025.0, 78011.0, 27884381.0, 93566.0, 43131966.0, …]
¡ Lista_pibpc_paises = [578.5, 3952.5, 4187.5, 35762.5, 4167.0, 14286.1, 13789.1, …]
¡ Listas_crecimiento_paises = [1.5, 2.2, 3.7, 1.4, 0.9, 3.8, 2.7, ...]
¡ Etc etc etc
§ Si bien podría manejarse como listas, este sería un enfoque poco intuitivo, complejo, ineficiente
y muy propenso a error.
§ No sería el enfoque más apropiado, ni conveniente
Sería mucho más conveniente contar con una estructura que nos permitiera asociar directamente, cada país, con sus respectivos datos.
No mediante un índice, pero mediante una llave única
§ Por ejmplos supongamos que queremos construir un diccionario de datos con los países y sus respectivas poblaciones:
¡ Los keys son inmutables, lo que quiere decir que los key no se pueden alterar. Lo único que puede alterarse son los
valores.
§ Acceso:
>>>Datos_banco_mundial [“Andorra”] Si únicamente indicamos el key, obtendremos el valor asociado, en este caso una lista
[78011.0, 35762.5, 1.4]
Si queremos acceder a un valor particular dentro de un key específico, lo hacemos tomando en
>>>Datos_banco_mundial [“Andorra”][2] cuenta que este acceso nos coloca frente a una lista; lo cual implica que el acceso al elemento
1.4 en cuestión debe hacerse ademán con un índice
DICCIONARIOS Y TABLAS DE HASH
¡ Esto quiere decir que a una Tabla de Hash le toma el mismo tiempo
localizar cualquier registro, independientemente de la posición donde se
encuentre. Lo cual es sumamente beneficioso cuando se tienen grandes
cantidades de datos.
¡ Esto hace que cuando se tienen grandes cantidades de datos, sea más
conveniente utilizar diccionarios que estructuras basadas en índices como
las listas.
OBTENIENDO LOS TODOS LOS KEYS Y TODOS LOS VALORES DE UN DICCIONARIO
Obteniendo los keys del diccionario keys( ) Obteniendo los valores del diccionario values( )
Nos retorna un tipo de dato que no es Nos retorna un tipo de dato que no es
obvio de manipular obvio de manipular
¡ Supongamos que nos hemos equivocado con el crecimiento de Escocia, poniendo 0.7 cuando debió ser 0.8
¡ Podemos hacer este cambio simplemente localizando el valor que queremos cambiar e indicándole el nuevo valor