0% encontró este documento útil (0 votos)
57 vistas134 páginas

Completo Compressed-1

El documento describe los tipos de datos básicos en Python como números enteros, números reales, cadenas de caracteres, valores booleanos y variables. También explica cómo asignar valores a variables y convertir entre tipos de datos.

Cargado por

juane27
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
57 vistas134 páginas

Completo Compressed-1

El documento describe los tipos de datos básicos en Python como números enteros, números reales, cadenas de caracteres, valores booleanos y variables. También explica cómo asignar valores a variables y convertir entre tipos de datos.

Cargado por

juane27
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 134

B.

Statements
B. Statements (instrucciones)
§ Un statement es una unidad de código que el intérprete de Python puede
executar.

§ Cuando se ejecuta un statement, el intérprete de Python lo ejecuta y muestra el


resultado, en caso que haya alguno.

#En el siguiente script:


[1]: print (1) Statement 1

x=2 Statement 2 Ojo: El statement 2 no tiene ningún output por sí solo.

print (x) Statement 3


1 Output de statement 1
2 Output de statement 3
C. Errores
C. Tres tipos generales de errores en programación
§ 1. Error de sintaxis (Syntax error):

§ 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

§ Equivale, por ejemplo, a hacer lo siguiente en idioma español:

§ Ayer la casa quedé. -> Alteración en la sintaxis


§ Ayer me ( ) quedé en la casa. -> Símbolos mal utilizados
§ Ayer me quedé en la casa, -> Símbolo mal utilizado
§ Ayer me quedé ç^ en la casa. -> Símbolos que no existen en el lenguaje
§ Aller me quedé en la kasa. -> Error en la escritura de las palabras
C. Tres tipos generales de errores en programación

§ 2. Error de lógica (Logic error):

§ Ocurren cuando tu programa tiene buena sintaxis, pero hay un error en el


orden lógico de los statements.

§ Equivale, por ejemplo, a hacer lo siguiente en idioma español:

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

§ Equivale, por ejemplo, a hacer lo siguiente en idioma español:

§ Un día caminé por la montaña y había un riachuelo y estaba muy frío.


§ Juan se encontró con Jorge para calmar su preocupación.
§ Vaya a la tienda de quesos y si hay huevos compre tres.

§ 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

#Resta [8]: (34 // 3)

[2]: (4 - 3) 11

#Multiplicación #Remainder (Residuo de la división)

[3]: (4 * 3) [9]: (21 % 3)

12 0

#División [10]: (21 % 4)

[4]: (10 / 3) 1

3.3333333333333335
[11]: (345 % 7)

#Exponente #Combinación de operadores


[5]: (5 ** 3) [12]: (100 * (1.15 ** 8)) #un valor inicial de $100, a 15% de interés por 8 años
125 305.9022862539061

[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 enteros 1, 2, 1000, -10, 0 int

Números no enteros, números reales o flotantes 0.05, 2.3, -12.3 , 1/3, 1.23E3 float

Cadenas de caracteres ( strings ) “Hola Clase”, “a”, “” str

Valores lógicos o booleanos (verdadero o falso) True, False bool

§ 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

[7]: True + True


2 Los booleanos, cuando se exponen a un
operador matemático, son reconocidos
como 1 (True) y 0 (False)
[8]: True + False + True + True
3
Convirtiendo tipos de datos
§ Es posible convertir un tipos de datos en otro tipos de datos.
§ Por ejemplo, cuando tenemos números que en realidad son strings, pero queremos usarlos para alguna operación
matemática.

En este caso una conversión de


string a integer es necesaria
[1]: “3” * 4 [2]: int(“3”) * 4
“3333” 12

§ Otro caso sería cuando tenemos números que son de tipo entero (int), pero necesitamos usarlos como strings.

En este caso una conversión de


integer a string es necesaria

[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

[3]: z = (x + y) / 2 § Resultados de cálculos z = (x + y)/2


print (z)
12.75
§ Texto (cadenas de caracteres - strings) saludo = “Hola clase”, saludo2 = ‘Hola Clase’
#Cadenas de caracteres
[4]: saludo = “Hola Clase” § Booleanos variable1 = True, variable2 = False
print (saludo)
“Hola Clase”
#Utilizando variables para hacer cálculos: Calculando el rendimiento de #Función type( ), nos indica a qué tipo de datos
[5]: caracter = “a”
nuestro dinero a una tasa de interés de 15% durante 8 años pertenece una variable
print (caracter)
“a”
[8]: montonOriginal = 100 [9]: type(x)
#Valores booleanos tasaInteres = 1.15 int
[6]: variable1 = True periodo = 8
print (variable1) rendimiento = (montonOriginal * (tasaInteres ** periodo)) [10]: type(montoOriginal)
True print (rendimiento) float
305.9022862539061
#Valores booleanos [11]: type(saludo)
[7]: variable2 = False str
print (variable2)
False Función print ( ) Función type ( )
Esta función nos ayuda a imprimir valores, ya Esta función nos ayudaFunción
a conocer type(
el tipo )
sea directos o a través de variables de datos que tiene alguna variable
Nombrando variables
§ Los programadores generalmente escogen nombres para sus variables, que sean significativos y que de alguna manera indiquen o
ayuden a recordar para qué es la variable (Mnemónico).

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

and del global not with


as elif if or yield
assert else import pass
break except in raises
class finally is return
continue for lambda try
def from nonlocal while
H. Tomando
valores de la
línea de
comandos
input() : tomando valores desde la línea de comandos
§ Muchas veces vamos a necesitar pedirle al usuario que ingrese datos desde la línea de comandos, usando su teclado.
§ Python tiene una función interna denominada input(), que permite obtener datos desde el teclado.
§ Cuando esta función es llamada, the programa para y espera a que el usuario ingrese algo. Cuando el usuario presiona
Enter o Return, el programa continúa, capturando como string lo que el usuario ingresó.

Note que la función input captura en forma de string lo que el usuario ingresa.

variableNombre = input(“Ingrese su nombre: ”)


Ejemplo 1
print (“El nombre ingresado es ” + variableNombre)

#Suma de dos variables


cantidad1 = input(“Ingrese la primera cantidad: ”)
Ejemplo 2 cantidad2 = input(“Ingrese la segunda cantidad: ”)
sumaTotal = int(cantidad1) + int(cantidad2)
print (“La suma total de ” + cantidad1 + “ y “ + cantidad2 + “ es ” str (sumaTotal))
Ejercicios (1) Aprox 20 min

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

[5]: 5>3 [6]: 5<3 [7]: 5<5 > x es mayor que y


True False False < x es menor que y

[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.2 not (20 != 0)

2.3 (20 % 2 == 0 and 2 * 2 > 3)

2.4 (20 % 3 == 0 and 2 * 2 > 3)

2.5 (20 % 2 == 0 or 2 * 2 > 4)

2.6 (20 % 3 == 0 or 2 * 2 > 4)

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

if o “si condicional”, nos


indica que estamos ante
if x > 0 :
si la condición se cumple, entonces todo lo
una condición
print (“x es positivo”) que esté identado se ejecuta

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

elif por if y else.


§ En esos casos es posible tener varias condiciones las cuales ejecutarán diferentes cosas cada una.
§ Para estos casos se utiliza elif, que es la abreviación de else if

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

Condición print (“x es menor que y”)


identación
else :
print(“x y son iguales”)

§ Es posible tener tantos elif como sean necesarios.


§ A aquellos statements que están después de una condición, se les
denomina ramas.
§ Literalmente son ramas o puntos de bifurcación que indican el curso de
acción que podría tomar nuestro programa dependiendo si se cumple o
no determinada condición.

x = 10
y = 20
if x > y : Ramas

print (“x es mayor que y”) Rama 1

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.

#Función que retorna el valor más alto entre dos números

Nombre que Parámetros o


hemos elegido input de nuestra
para la función función

Los : que indican que a


continuación viene el cuerpo de
def ValorMasAlto (valor1, valor2) : la función
Indicamos que if valor1 > valor 2 :
vamos a definer return valor 1
una función
else : Cuerpo de la función

return valor 2
Invocando la función que hemos creado:

ValorMasAlto (10, 3)
10

ValorMasAlto (10, 100)


100
¿Para qué son útiles las funciones?
§ Crear una nueva función nos da la oportunidad de nombrar un grupo de statements, el cual hace
que nuestro programa sea más fácil de leer, entender y depurar.

§ 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).

Convertidor(tipoDeConversion, montoAConvertir, tipoDeCambio)


L. Ciclo (while)
Ciclos (loops): While
Muchas veces cuando estamos programando, nuestro algoritmo necesita que algunas partes se repitan un número de veces.
Repetir tareas idénticas o similares sin hacer errores, es algo que las computadoreas hacen bien, mientras que a los
humanos nos cuesta mucho.

Un ciclo while, permite que el código en su interior, sea repetido un número de veces, mientras una condición se mantenga.

El cuerpo del ciclo se ejecuta las veces que sean necesarias,


hasta que la condición se torne falsa
n=5
while n > 0:
Ciclo print(n)
n=n–1 Si ejecutamos el código que hemos creado:
print(“Se terminó el ciclo”)
5
4
3
2
A los ciclos “while”, se les denomina ciclos indefinidos, 1
porque simplemente hacen repeticiones de las “Se terminó el ciclo”
interaciones hasta que la condición se torna falsa.
Ejercicios (5) Aprox 20 min

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

Desglozando la ejecución de esta función:


Valores iniciales:
Límite inferior
limiteInferior = 1
total = 0
#Ejercicio 1 Iteración 1:
def Sumatoria1 (): limiteInferior = 2 (limiteInferior = 1 + 1)
total = 3 (total = 0 + 3)

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

Corriendo esta función:


#Ejercicio 1 >>>Sumatoria (1, 5)
Iteración 0: (este es el estado inicial de las variables)

def Sumatoria (i, n): total = 0


i=1

total = 0 Iteración 1:
total = 1 (total = 1 + 0)
i=2 (i = 1 + 1)

while i <= n: Iteración 2:


total = 3 (total = 2 + 1)
total = i + total i=3 (i = 2 + 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

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

#Función que retorna el valor más alto entre dos números

Nombre que Parámetros o


hemos elegido input de nuestra
para la función función

Los : que indican que a


continuación viene el cuerpo de
def ValorMasAlto (valor1, valor2) : la función
Indicamos que if valor1 > valor 2 :
vamos a definer return valor 1
una función
else : Cuerpo de la función

return valor 2
Invocando la función que hemos creado:

ValorMasAlto (10, 3)
10

ValorMasAlto (10, 100)


100
Ciclos (loops): While
Muchas veces cuando estamos programando, nuestro algoritmo necesita que algunas partes se repitan un número de veces.
Repetir tareas idénticas o similares sin hacer errores, es algo que las computadoreas hacen bien, mientras que a los
humanos nos cuesta mucho.

Un ciclo while, permite que el código en su interior, sea repetido un número de veces, mientras una condición se mantenga.

El cuerpo del ciclo se ejecuta las veces que sean necesarias,


hasta que la condición se torne falsa
n=5
while n > 0:
Ciclo print(n)
n=n–1 Si ejecutamos el código que hemos creado:
print(“Se terminó el ciclo”)
5
4
3
2
A los ciclos “while”, se les denomina ciclos indefinidos, 1
porque simplemente hacen repeticiones de las “Se terminó el ciclo”
interaciones hasta que la condición se torna falsa.
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

Corriendo esta función:


#Ejercicio 1 >>>Sumatoria (1, 5)
Iteración 0: (este es el estado inicial de las variables)

def Sumatoria (i, n): total = 0


i=1

total = 0 Iteración 1:
total = 1 (total = 1 + 0)
i=2 (i = 1 + 1)

while i <= n: Iteración 2:


total = 3 (total = 2 + 1)
total = i + total i=3 (i = 2 + 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.

§ Python iniciará ejecutando la secuencia


de instrucciones contenidas en el bloque C
de try.

§ Si todo sale bien, entonces literalmente


ignora el bloque de except.

§ Pero, si una excepción o error de


ejecución ocurre en el bloque de try,
Python ignora lo realizado en ese bloque
y procede a ejecutar el bloque de
except.

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.

§ Una estructura de datos es una colección de valores cuya estructura


determina la relación que existe entre estos valores y las operaciones
que podemos hacer sobre ellos; en pocas palabras, se refiere a cómo
los datos están organizados y cómo se pueden administrar.

§ Una estructura de datos describe el formato en que los valores van a


ser organizados y almacenados, y la forma en que van a ser accedidos
y moficados.

§ Las estructuras de datos están muy ligadas a la búsqueda de eficiencia.

§ 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:

§ Listas § Diccionarios de datos


Listas
§ Una lista es una secuencia de valores.
§ Los valores en una lista son llamados elementos o valores.

§ En Python, las listas se representan con brackets [ ]

[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

Así, podemos poner los pesos del grupo en una lista

Y se puede referenciar la lista asignándole un nombre.


Al igual que hacemos cuando creamos una variable.

Recordemos que al final, una lista es un nombre que asignamos a


una colección sequencial de valores o elementos

Las listas pueden contener cualquier tipo de datos:


integers, strings, floats, booleans, incluso tipos de
datos más complejos como listas (sí listas de listas)
Como es posible
combinar tipos de
datos en una lista, es
posible agregar los
nombres de los
miembros del grupo al
lado de sus alturas
respectivas

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

¿Cómo acceder a los elementos de una lista?


Primero tenemos que entender que cada elemento de la lista está asociado a un índice.

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.

¿Por qué se produce un error?


Listas en Python - Indices

índices de -1 a -12

-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Indices: 0 1 2 3 4 5 6 7 8 9 10 11

índices de 0 a 11

¿Por qué se produce un error?


Listas en Python – list slicing

índices de -1 a -12

-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Indices: 0 1 2 3 4 5 6 7 8 9 10 11

índices de 0 a 11

¿Cuál sería el resultado de lo siguiente?:


Listas en Python – list slicing

índices de -1 a -12

-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Indices: 0 1 2 3 4 5 6 7 8 9 10 11

índices de 0 a 11

¿Cuál sería el resultado de lo siguiente?:

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

-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

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

¿Cuál es el resultado de lo siguiente?


Ejercicios 09 Aprox 15 min

• Utilizando la lista de estaturas y nombres


-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Indices: 0 1 2 3 4 5 6 7 8 9 10 11

9.1 Crea una nueva lista vacía

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

9.2. Crea una nueva lista vacía

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.

§ Las listas pueden ser manipuladas de modo que se puede:


§ Modidicar elementos de la lista
§ Agregar elementos a la lista
§ Eliminar elementos de la lista
Listas en Python – Manipulación de listas

Modificando elementos de una lista


-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

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

Agregando elementos a una lista


-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Indices: 0 1 2 3 4 5 6 7 8 9 10 11

Lo podemos hacer con el operador +

Supongamos que vamos a agregar nuestro propio nombre y estatura en la lista


Lo que hicimos fue crear una nueva lista, que contenga los elementos de la
lista original; pero que también incluya los dos nuevos elementos

Noten que el operador + realmente lo que está haciendo es


concatenando o uniendo una lista con otra lista.
Funciona muy similar al trabajo que hace el + con los strings

Ojo: ¿Qué le ha pasado a la lista orignal


(lista_de_estaturas_y_nombres)?
Listas en Python – Manipulación de listas

Eliminando elementos de una lista


-14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

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.

Para borrar cualquier elemento de la lista, nos apoyamos en la función ya


existente del (lista[indice]) . Esta función elimina el elemento o los
elementos indicados en el índice.

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

• Utilizando la lista de estaturas y nombres

Indices: 0 1 2 3 4 5 6 7 8 9 10 11

10.1 Crea una nueva lista vacía


lista_de_estaturas_y_nombres_grupo = []
Agrega en esta nueva lista los nombres y estaturas contenidos en lista_de_estaturas_y_nombres y además incluye los nombres y estaturas (tu
mejor proxi) de los miembros de tu grupo de estudio.
Imprime utilizando print, la nueva lista lista_de_estaturas_y_nombres_grupo con los cambios realizados

10.2 Utilizando la lista_de_estaturas_y_nombres_grupo con los resultados del ejercicio anterior.


Elimina los nombres y estaturas que no corresponden a los miembros de tu grupo.
Imprime utilizando print, la lista_de_estaturas_y_nombres_grupo con los cambios realizados

10.3. Utilizando la lista_de_estaturas_y_nombres_grupo con los resultados del ejercicio anterior.


Pide las estaturas de los diferentes miembros de tu grupo de estudio, y actualiza la lista lista_de_estaturas_y_nombres_grupo con las estaturas reales.
Imprime utilizando print, la lista_de_estaturas_y_nombres_grupo con los cambios realizados
Más sobre manipulación de listas
Listas en Python – Manipulación de listas

Métodos propios de las listas


§ Las listas en Python tienen varios métodos asociados, que permiten trabajar
directamente sobre estas

§ L.append(e): agrega un nuevo elemento e al final de una lista L

Agrega el elemento indicado al final de la lista. En este caso


agregamos, “f”, un string

Append ha modificado la lista original

#Otro ejemplo, ahora tratando de agregar una lista


Agrega el elemento indicado al final de la lista. En este caso
agregamos, [“g”, “h”, “i”], una lista

Append ha modificado la lista original, incorporando el


elemento que indicamos
Listas en Python – Manipulación de listas

Métodos propios de las listas

§ L.extend (L1): agrega los elementos de la lista L1 al final de la lista L

Agrega los elementos de la lista indicada al final de la lista original.

Modifica la lista original.

§ L.insert(i, e): inserta en el índice i de la lista L, el elemento e


Noten que hace falta un elemento en la lista

En el índice 2, agregamos el elemento “c”

Modifica la lista original


Listas en Python – Manipulación de listas

Métodos propios de las listas


§ L.pop(i): retorna el item localizado en el índice i de la lista L, y lo remueve de la
lista. Si no se indica ningún índice, retorna el último elemento de la lista.

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

§ L.pop( ): si no se indica ningún índice, retorna el último elemento de la lista L

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 la “j”


Dos ocasiones en los que utilizar el método pop produce un error:
1. Cuando se aplica en una lista vacía

2. Cuando se indica un índice mayor al existente en la lista


Listas en Python – Manipulación de listas

Métodos propios de las listas


§ L.remove(e): remueve la primera ocurrencia del elemento e en la lista L.

Remueve el primer “e” que encuentre en la 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

Métodos propios de las listas


§ L.sort( ): modifica la lista L ordenando sus elementos.

Ordena los elementos de la lista. En este caso, elementos int

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

Métodos propios de las listas


§ L.reverse( ): modifica la lista L volteando al reverso sus elementos.

Voltea al reverso los elementos de la lista


Listas en Python – Manipulación de listas Aprox 20 min

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

Sintaxis del for


El cuerpo del ciclo se ejecuta según los
Ciclo elementos predefinidos

En cada iteración, se va estableciendo una


referencia a cada uno de los elementos del
conjunto
Output

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

Recorriendo una lista


§ La manera más común de recorrer los elementos de una lista es mediante un ciclo for

Supongamos que tenemos en una lista los códigos de un catálogo de productos y que queremos procesarla de alguna manera

Para recorrer cada elemento de la lista, utilizamos un ciclo for.


Donde x es una referencia a cada elemento de la lista indicada.

Acá buscamos realizar un procesamiento simple a medida que vamos recorriendo la lista

Acá, nos apoyamos en una variable que hemos denominado contador.


Cuando actualizamos esta variable nos permitirá ir contando los elementos, 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

Recorriendo una lista (2)


Supongamos que queremos modificar los elementos de la lista, dentro de la lista misma.
Si quisiéramos modificar los elementos de la lista a medida que la vamos recorriendo, tenemos que recurrir a la técnica que ya conocemo

Tenemos una variable contador que inica en 0.

Recorremos la lista con un ciclo for

Acá buscamos modificar cada elemento de la lista, incidiendo directamente en la lista.


Accedemos a cada elemento de la lista, mediante la aplicación de sus índices; y para esto nos
apoyamos en la variable contador.

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

El algoritmo del programa es sencillo, pero tiene ciertos trucos.


Es como tener una bolsa con bolas que tienen un número dibujado (como bolas de bingo). Sacamos la primera bola y asumimos que ese es el valor más bajo. Luego
sacamos la próxima bola, y lo comparamos con la que creíamos que era el valor más bajo. Si la nueva bola tiene un valor más bajo entonces esa es nuestro nuevo
proxy. Y así sucesivamente con todos los valores de la lista.

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 de trazado numérico. Muy útil para


cualquier científico de datos.

Biblioteca de manipulación y análisis de data sets. Muy


similar al DataFrame de R.

Biblioteca utilizada para computación científica y


técnica. Contiene módulos de algebra, integración, etc.

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 1 Una manera de importar bibliotecas es directamente mediante import. Esta


instrucción debe estar al inicio del programa, de otra manera, las funciones asociadas
a random no funcionarán.
Acá estamos invocando a la función random(), de la biblioteca también llamada random.
Esta función nos da un valor flotante entre 0 y 1. Por eso, si queremos obtener un número mayor, acá
lo multiplicamos por 100.

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.

§ Ojo, si el usuario no acierta, el programa debe volver a solicitarle al usuario un número.

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

§ Tip: utilizar la biblioteca random, y el ciclo while


Estructuras de Datos y Visualización
Visualización de datos
§ Las estructuras de datos permiten gestionar los datos. Sin embargo,
cuando esto se combina con capacidad de visualización, nuestras
capacidades se potencian.

§ La visualización de datos es un punto fundamental en ciencia de datos.


§ Es importante entender la data
§ Es importante tener claro la historia que podemos contar
con la data
Taller

§ Hay muchos bibliotecas y paquetes de visualización de datos en Python, pero la


madre de todos es Matplotlib.

Matplotlib: es una biblioteca de Python, que permite realizar cálculos


estadísticos y visualizaciones de datos

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

La función hist() del paquete pyplot, nos coloca


los valores de una lista en un histograma

bins = 10, le estamos pidiendo


que nos agrupe los valores en
en 10 grupos
Aprox 30 min
Ejercicio 14 Ejercicio Grupal, pero que forma parte del portafolio individual
Una pequeña simulación
§ Supongamos que creamos una lista de 100 elementos, todos iniciados en 0.
§ Supongamos que tenemos un dado con valores entre 0 y 99 y que queremos lanzar ese dado muchas veces.
§ Supongamos que queremos contar cuántas veces nos sale cada número. Así, cuando nos salga, por ejemplo, el
número 25, al elemento que se encuentra en la posición 25 de la lista le sumaremos 1.
§ Supongamos que queremos repetir el ejercicio de lanzar el dado 10000 veces, y que luego queremos graficar en
un histograma la lista con la cantidad de repeticiones que cada uno de los 100 elementos obtuvo.
§ ¿Cómo haremos eso?
Visalizando mejor los data points – Función scatter
Histogramas

La función hist() del paquete pyplot, nos


coloca los valores de una lista en un
histograma

bins = 10, le estamos


pidiendo que nos agrupe los
valores en en 10 grupos
DICCIONARIOS DE
DATOS
DICCIONARIOS
¡ Diccionarios son muy útiles en data science, cuando necesitamos manejar datos, cuyas observaciones implican o o
más datos asociados a un identificador único.

¡ 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

Acá es donde entran en juego los Diccionarios de Datos


DICCIONARIOS
§ Los diccionarios son objetos del tipo dict.
§ La estructura del diccionario se encierra en brackets tipo { } y se compone de varios elementos, los cuales a su
vez tienen un key único y un valor asociado a ese key. Así, se puede pensar en los diccionarios como un conjuto
de pares de keys y valores.

§ Por ejmplos supongamos que queremos construir un diccionario de datos con los países y sus respectivas poblaciones:

Datos_banco_mundial = { “Afganistan” : 34413603.0, “Albania” : 2880703.0, “Argelia” : 39728025.0, “Andorra” : 78011.0 ,


“Angola” : 27884381.0, “Antigua y Barbuda” : 93566.0, “Argentina” : 43131966.0, …}

§ Así, si queremos acceder al valor asociado a un país en particular:


>>>Datos_banco_mundial [“Andorra”]
Noten que en lugar de acceder mediante un índice, en
78011.0 los diccionarios accedemos mediante un key único
DICCIONARIOS
¡ Su uso es similar al de las listas excepto que el acceso se da mediante keys únicos.
¡ Los keys o llaves deben ser únicos.

¡ Los keys son inmutables, lo que quiere decir que los key no se pueden alterar. Lo único que puede alterarse son los
valores.

Ejemplos de keys válidos


Datos_banco_mundial = { “Afganistan” : 34413603.0, “Albania” : 2880703.0, “Argelia” : 39728025.0, “Andorra” : 78011.0 ,
“Angola” : 27884381.0, “Antigua y Barbuda” : 93566.0, “Argentina” : 43131966.0, … }

Numeros_ingles= { 0 : “Zero”, 1: “One”, 2 : “Two”, 3: “Three” , 4 : “Four”, 5: “Five”, 6: “Six”, … }


UTILIZANDO DICCIONARIOS
§ Convirtiendo la estructura de listas en un estructura de diccionario
¡ 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, ...]

Datos_banco_mundial = { “Afganistan” : [34413603.0, 578.5, 1.5],


“Albania” : [2880703.0, 3952.5, 2.2], Noten que los keys siguen siendo los nombres
de los países.
“Argelia” : [39728025.0, 4187.5, 3.7],
Sin embargo, ahora tenemos múltiples valores,
“Andorra” : [78011.0, 35762.5, 1.4],
por lo que debemos almacenarlos en listas
“Angola” : [27884381.0, 4167.0, 0.9 ],
“Antigua y Barbuda” : [93566.0, 14286.1, 3.8],
“Argentina” : [43131966.0, 13789.1, 2.7] }

§ 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

¡ Los diccionarios utilizan una estructura de datos llamada Tablas de Hash.

¡ Las Tablas de Hash tienen como propiedad el permitir localizar un registro


mediante un key y no mediante un índice (como en el caso de las listas).

¡ 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

Supongamos que tenemos el siguiente 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

Eso lo corregimos forzándolo a Eso lo corregimos forzándolo a


convertirse en una lista, mediante list( ) convertirse en una lista, mediante list( )
Buscando elementos en un diccionario: El operador in
¡ Es en las búsquedas de datos, donde los diccionarios más pueden lucir su algoritmo de Hash Tables.

¡ Podemos buscar tanto keys como valores mediante el operador in

Supongamos que tenemos el


siguiente diccionario con el registro
de la notas de un curso:

Preguntando si un key pertenece al diccionario Preguntando si un valor pertenece al diccionario


DICCIONARIOS – AGREGANDO ELEMENTOS
Supongamos que trabajamos en el Banco Mundial, y que
somos un ferviente nacionalista escocés a favor de la
independencia. Y queremos agregar a Escocia como país
independiente a la lista de países.

Agregando una nueva entrada


Simplemente indicamos la nueva entrada, escribiendo en [ ] el nuevo key, en este caso, “Scotland” y asignándole los valores correspondientes

El diccionario modificado con la nueva entrada

Así, cuando volvemos a invocar en Python al


diccionario, la nueva entrada nos aparece al final
MODIFICANDO LOS VALORES DE UN DICCIONARIO
¡ Por definición, los keys no se pueden modificar, pero los valores sí

¡ 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

¡ Así, cuando invocamos de nuevo al diccionario, el valor ha sido modificado


ELIMINANDO UNA ENTRADA DEL DICCIONARIO
¡ Resulta que en el Banco Mundial aún no aceptan a Escocia como país independiente, así que nos han pedido elminar ese
registro.
¡ Para eliminar un registro del diccionario, simplemente recurrimos a la función del(dict[key]), de la siguiente manera

¡ Así, cuando invocamos de nuevo al diccionario, el registro correspondiente a “Scotland” ya no existe


RECORRIENDO UN DICCIONARIO

Recorremos un diccionario mediante un ciclo for

También podría gustarte