Introducción a Python

Autor/a

Pamela Cabañas, Gabriela Facio, Lab25

Video

¿Por qué programación?

Actualmente la necesidad de comunicarnos con las computadoras, es enorme. Sin embargo, estas maquinas no pueden escribir los programas por ellas mismas y peor aún, no entienden idioma humano.
Por lo anterior, surge la necesidad de desarrollar lenguajes computadora, para que estas nos entiendad y realicen lo que necesitamos.
Computational Thinking

¿Por qué Python?

Su filosofía enfatiza * Legibilidad del código * Sintaxis

Python busca que lo anterior le permita al programador expresar conceptos en muy pocas líneas de código. Tarea que quizá no sería tan fácil con lenguajes como C++ o Java.
Busca proporcionar programas claros tanto a pequeña como a gran escala.

Print

Esta función nos permite mostrar el output en la consola. Supongamos que quiero mostrar en mi consola el número 5.
¿Cómo lo hago?

```{python}
5
print(10)
```
10

Identificadores

Un identificador es el nombre que le damos a una variable, función o módulo. Los identificadores pueden tener uno o más caracteres en el siguiente formato:

  • Pueden ser la combinación de letras en minúsculas (a-z) o mayúsculas (A-Z).
  • Pueden ser números
  • Puede contener guiones bajos (_).
  • No pueden usar espacios ni símbolos especiales como !, @, #, $, % etc.
  • No pueden empezar con números.

Recomendación
Cuando vayas a usar una constante como el número Pi, alguna fórmula matemática, etc., se recomienda nombres a tu variable con letras mayúsculas.

```{python}
miVariable= "Hola, mundo!"
print(miVariable)
_miVariable="Hola a todos!"
print(_miVariable)

VELOCIDAD_LUZ=299.792,458
```
Hola, mundo!
Hola a todos!

¿Qué es una variable?

Las variables se usan para almacenar la información que será manipulada. Como ya vimos, es el nombre de alguna información mientras que un valor es la información en sí.

Por ejemplo
fecha_de_hoy =

Asignar y cambiar valor a una variable

```{python}
clase_favorita="ACA I"
print(clase_favorita)

clase_favorita="ACA III"
print(clase_favorita)
```
ACA I
ACA III

Asignar un valor a múltiples variables

```{python}
a=b=c=1
#forma 1
print(a)
print(b)
print(c)

#forma 2
print(a,b,c)
```
1
1
1
1 1 1

Asignar múltiples valores a múltiples variables

```{python}
a,b,c = 8, 10.3, "Hola!"

#Forma 1
print(a,b,c)

#Forma 2
print(a)
print(b)
print(c)
```
8 10.3 Hola!
8
10.3
Hola!

Obtener información del usuario

input() es la función que utilizamos para obter información del usuario. Su sintaxis es la siguiente:

nombre_variable = input("Información que quiero como input")

```{python}
#nombre=input("Por favor ingresa tu nombre ")
nombre = "Jon"
print(nombre)

#materia= input("¿Cuál es tu clase favorita?")
materia = "ACA 1"
print(materia)
```
Jon
ACA 1

Tipo de datos

Todo valor en Python tiene un tipo de dato. Podemos usar la función type() para saber el tipo de dato.

Números

En esta categoría entran los números enteros,decimales y complejos. Estos son definidos en Python como int,float y complex respectivamente.

Booleanos (Booleans)

Podrán no parecer muy útiles al principio, pero son esenciales cuando usamos condicionales. Los valores booleanos sólo son dos * True * False

Ojo

True y False son palabras reservadas.

Cadenas de texto (Strings)

Consite en la secuencia de uno o más caracteres, los cuales pueden incluir:
* Letras * Números * Espacios * Otro tipo de caracteres

Python nos permite usar ” “ o ’ ’

Concatenar strings

Se le llama concatenar a la acción de juntar más un strig en uno solo.
Por ejemplo:

```{python}
materia='ACA III'
profesor="Arturo Bouzas"

#Cómo le hago para mandar a imprimir algo que diga "La materia ACA III es 
#impartida por el Doctor Arturo Bouzas"?

print("La materia " + materia+ " es impartida por el Doctor "+ profesor)
```
La materia ACA III es impartida por el Doctor Arturo Bouzas

¿Puedo concatenar otro tipo de datos + un string?

```{python}
#Ejercicio
adjuntas=8
materia='ACA'
aca=3
profesor= "Arturo Bouzas"
```
```{python}
edad=21
miEdad="21"
es_Mayor=2>1
es_Menor=20<10


#Imprimimos
print(edad)
print(miEdad)
print(es_Mayor)
print(es_Menor)
```
21
21
True
False

¿El 21 de edad es igual al 21 de mi Edad?

```{python}
print(type(edad))

print(type(miEdad))
```
<class 'int'>
<class 'str'>

Operadores

Los operadores son símbolos como: * + * - * = * (>)(<)

que realizan ciertas operaciones matemáticas o lógicas que manipulan los valores de los datos y producen un resultado basado en algunas reglas.

Operadores aritméticos

Estos se usan para ejecutar operaciones aritméticas como adición, substracción, división, multiplicación etc.

Adición

Produce una suma

```{python}
#Podemos hacer sumas simples como
print(1+3)
print(10+200)

#O incluso sumar los valores que hay dentro de variables
edad_Gaby=22
edad_Pam=23
edadTotal=edad_Gaby+edad_Pam

print(edadTotal)
```
4
210
45

Substracción

Produce la diferencia de los operandos (resta).

```{python}
# Restas simples
edad= 2021-1998
print(edad)

print(2021-2003)

#Restar los valores que hay dentro de variables
edadTotal=edad_Pam-edad_Gaby
print(edadTotal)
```
23
18
1

Multiplicación

Devuelve el producto de los operandos.

```{python}
#Forma simple
print(500*12)

#Multiplicar los valores que hay dentro de variables
ahorros_1mes=500
ahorros_1año=ahorros_1mes*12
print(ahorros_1año)
```
6000
6000

División

Produce el cociente de sus operandos donde el operando izquierdo es el dividendo y el operando derecho es el divisor.

```{python}
#División simple
#Recuerda el lugar que ocupan los números

print(2/10) #No es lo mismo que
print(10/2)

#Dividir los valores que hay dentro de variables
numero_1=30
numero_2=2

print(numero_1/numero_2)
print(numero_2/numero_1)
```
0.2
5.0
15.0
0.06666666666666667

Módulo

Divide el operando de la izquierda por el operando de la derecha y devuelve el residuo.

```{python}
print(numero_1%numero_2) #el resultado es 15 con residuo 0
print(numero_2%numero_1) #el resultado es .06 con residuo 2
print(7%2) #el resultado es 3 con residuo 1
```
0
2
1

Exponente

Realiza cálculos exponenciales (potencias).

```{python}
p=30
q=4
print(p**q)

pi=3.14
radio=5
#Area del círculo
print(pi*(radio**2))
```
810000
78.5

División entera

Devuelve la parte entera del cociente.

```{python}
print(5/2)
print(5//2)
```
2.5
2

Operadores de comparación

Igual a

Si los valores de dos operandos son iguales, la condición se convierte en true(booleano). Si los valores son diferentes la condición se convierte en false (booleano).

```{python}
#¿El valor en edad_Gaby es igual al valor en edad_Pam?
print(edad_Gaby==edad_Pam)

#¿El valor en edad_Pam es igual al valor en edad_Pam?
print(edad_Pam==edad_Pam)

#¿El valor en edad_Gaby es igual al número 22?
print(edad_Gaby==22)
```
False
True
True

Ojo

No confundir el operador de asignación “=” con el operador igual a “==”

Diferente de

Si los valores de dos operandos no son iguales, la condición se convierte en true (booleano). Si los valores son iguales, la condición se convierte en false (booleano).

```{python}
#¿El valor en edad_Gaby es diferente del valor en edad_Pam?
print(edad_Gaby!= edad_Pam)

#¿El valor en edad_Pam es diferente del calor en edad_Pam?
print(edad_Pam!= edad_Pam)

#¿El valor en edad_Gaby es diferente del número 25?
print(edad_Gaby!= 25)
```
True
False
True

Mayor que

Si el valor del operando izquierdo es mayor que el valor del operando derecho, la condición se convierte en true(booleano). En caso contrario se convierte en false (booleano).

```{python}
#¿El valor en edad_Gaby es mayor que el valor en edad_Pam?
print(edad_Gaby>edad_Pam)

#¿El valor en edad_Pam es mayor que el valor en edad_Gaby?
print(edad_Pam>edad_Gaby)
```
False
True

Menor que

Si el valor del operando izquierdo es menor que el valor del derecho operando, la condición se convierte en true (booleano). En caso contrario se convierte en false (booleano).

```{python}
#¿El valor en edad_Gaby es menor que el valor en edad_Pam?
print(edad_Gaby<edad_Pam)

#¿El valor en edad_Pam es menor que el valor en edad_Gaby?
print(edad_Pam<edad_Gaby)
```
True
False

Mayor o igual que

Si el valor del operando izquierdo es mayor o igual que el valor del operando derecho, la condición se convierte en true (booleano). En caso contrario se convierte en false (booleano).

```{python}
#¿El valor en edad_Pam es mayor o igual que el valor en edad_Pam?
print(edad_Pam>=edad_Pam)

#¿El valor en edad_Gaby es mayor o igual que el valor en edad_Pam?
print(edad_Gaby>=edad_Pam)
```
True
False

Menor o igual que

Si el valor del operando izquierdo es menor o igual que el valor del operando derecho, la condición se convierte en true(booleano). En caso contrario se convierte en false (booleano).

```{python}
#¿El valor en edad_Gaby es menor o igual que el número 22?
print(edad_Gaby<=22)

#¿El número 29 es menor o igual que el valor en edad_Gaby?
print(29<=edad_Gaby)
```
True
False

Operadores lógicos

AND

Regresará true (booleano) si y sólo si los dos operandos son verdaderos.

```{python}
num1=20
num2=400
#Sólo puedo preguntarle si ambos son mayores a 0
print(num1>0 and num2 >0)

#O puedo indicarle que haga algo con esa información
if num1>0 and num2>0:
  print("Los números son mayores a cero")
  #print("Los números " +str(num1)+ " y "+ str(num2)+ " son mayores a cero")
```
True
Los números son mayores a cero

OR

Regresará true (booleano) cuando al menos uno de los operandos sea verdadero.

```{python}
a=78
b=39
#Sólo puedo preguntar si alguno de los dos es mayor a 50
print(a>50 or b>50)

#O puedo indicarle que haga algo con esa información
if a>50 or b>50:
  print("Hay un número mayor a 50")
  #print("El número "+str(a)+ " es mayor a 50")
```
True
Hay un número mayor a 50

NOT

Invierte el valor del operando.

Retomemos el ejemplo con AND. Ahí teníamos que

num1>0 and num2>0 = true

lo que haría el operador NOT sería invertir el booleano y convertirlo en false.

```{python}
z=10
if not num1>0:
  print("El booleano de z es true")

#¿Por qué no me imprimirá?
```

Declaración If

Nos permite evaluar dentro del programa si se cumple una condición y generar una acción en función del resultado de la evaluación.

Generalmente la estructura para el uso de estas declaraciones es la siguiente:

if se cumple la condición 1:

relizar A

elif se cumple la condición 2:

realizar B

elif se cumple la condición 3:

realizar C

elif se cumple la condición 4:

realizar D

else:

realizar E

```{python}
#EjemploEntrada = input ("Selecciona 1 o 2: ")
EjemploEntrada = "1"

if EjemploEntrada == "1":
  print("Las prácticas de ACA son divertidas")
  print("Son muy divertidas")
elif EjemploEntrada == "2":
  print("Python es genial!")
  print("Mi programa favorito")
else:
  print("No se ingresó un número válido")
```
Las prácticas de ACA son divertidas
Son muy divertidas

Ciclo For

Ejecuta un bloque de código de forma repetida, hasta que la condición de la declaración ya no es válida.

En el caso de las iterables, es todo aquello sobre lo cual se pueda realizar un bucle, una cadena o una lista, como en el siguiente ejemplo:

```{python}
flores = ["rosas", "girasoles", "gardenias"]
for jardin in flores:
  print(jardin)
```
rosas
girasoles
gardenias

Si se quisiera enumerar a cada uno de los elementos de la lista, usaríamos:

```{python}
for index, jardin in enumerate (flores):
  print (index, jardin)
```
0 rosas
1 girasoles
2 gardenias

En el caso de una secuencia de números, podemos usar la función range() como se muestra en el ejemplo:

```{python}
for i in range(5):
  print(i)
```
0
1
2
3
4

Ciclo while

Ejecuta de forma repetida las instrucciones dentro de un ciclo, mientras que una determinada condición es válida. Generalmente se tiene la siguiente estructura:

While la condición es verdadera:

realizar A

```{python}
counter = 5

while counter > 0:
  print("Counter = ", counter)
  counter = counter - 1
```
Counter =  5
Counter =  4
Counter =  3
Counter =  2
Counter =  1

Al generar un ciclo while, en ocasiones se requiere primero declarar una variable que funcione como un contador de este ciclo.

Interrumpir un ciclo

Al trabajar con ciclos, en ocasiones es necesario salir de este ciclo cuando se cumple una condición específica, como en el siguiente ejemplo:

```{python}
k = 0
for i in range(5):
  k = k + 2
  print ("i = ", i, ", k = ", k)
  if k == 6:
    break
```
i =  0 , k =  2
i =  1 , k =  4
i =  2 , k =  6

Más funciones útiles para trabajar con ciclos: El caso de continue

```{python}
k = 0
for i in range(5):
  k = k + 2
  print ("\ni = ", i, ", k = ", k)
  if k == 6:
    continue
  print ("Texto generado hasta k == 6")
```

i =  0 , k =  2
Texto generado hasta k == 6

i =  1 , k =  4
Texto generado hasta k == 6

i =  2 , k =  6

i =  3 , k =  8
Texto generado hasta k == 6

i =  4 , k =  10
Texto generado hasta k == 6

Funciones

Podemos definir a una función como el dividir un problema en partes y que se puede reutilizar.

Vamos a generar una función que tome 3 números como parámetros para los cuales va a devolver el valor de la mediana.

Podemos representar el valor de la mediana como el medio de los tres valores cuando se ordenan en orden ascendente.

```{python}
def mediana(a, b, c):
  if a < b and b < c or a > b and b > c:
    return b
  if b < a and a < c or b > a and a > c:
    return a 
  if c < a and b < c or c > a and b > c:
    return c
```
```{python}
mediana(7, 9, 6)
```
7

Un segundo modelo que podemos generar es calcular el valor de la mediana de los tres valores usando funciones de mínimo y máximo. Considerando que la mediana es la suma de los valores, menos el más pequeño, menos el más grande

```{python}
def otramediana(a, b, c):
  return a + b + c - min(a, b, c) - max(a, b, c)
```
```{python}
otramediana(7, 9, 6)
```
7

Una vez que generamos estos dos modelos, podemos crear una función que contenga a ambos:

```{python}
def terceramediana():
   #x = float(input("Ingresa el primer valor: "))
   #h = float(input("Ingresa el segundo valor: "))
   #d = float(input("Ingresa el tercer valor: "))
   x = 3.0
   h = 10.0
   d = 7.5

   print("La mediana es: ", mediana(x, h, d))
   print("Al usar el segundo modelo, la mediana es: ", otramediana(x, h, d))

terceramediana()
```
La mediana es:  7.5
Al usar el segundo modelo, la mediana es:  7.5

Visualización de datos

Decimos que una visualización de datos es exitosa cuando es capaz de comunicar el mensaje correctamente. Para lograr esto, necesitamos tener clara la naturaleza de nuestros datos y las limitaicones y ventajas de cada tipo de gráfico.

Line chart

Presentan los valores numéricos de datos categóricos, cada uno conectado por una línea.

```{python}
import matplotlib.pyplot as plt
#from matplotlib.ticker import MaxNLocator

#Datos
apple=[4000,20000,3500,8700,4300]
microsoft=[19500,3400,2100,7460,9000]
year=[2016,2017,2018,2019,2020]

#Gráfica 1
#Line chart
plt.plot(year,apple, '-g',
         year,microsoft, '-m')
plt.xlabel("Año")
plt.ylabel("Precios")
plt.title("Precios en Apple y Microsoft")
plt.show()
```

```{python}
#Scatter plot
plt.scatter(year,apple)
plt.show()
```

Además de los scatter y line plots, Matplotlib nos permite usar otro tipo de gráficos que nos sirven para otro tipo de datos.

Histograma

Son útiles para estudiar la distribución de nuestros datos(datos continuos). Por ejemplo, podemos trazar datos en un histograma cuando queremos ver algunos grupos de edad distribuidos en una población, la precipitación por mes en una ciudad,etc.

```{python}
import numpy as np

np.random.seed(8)
x=np.random.binomial(100,.5,10000)
plt.hist(x,bins=20,color="pink")
plt.show()
```

Gráfico de barras

Son útiles para comparar niveles absolutos de datos discretos. Las variables son independientes entre si.

```{python}
lenguaje = ['C', 'C++', 'Java', 'Python', 'PHP']
estudiantes = [23,17,35,29,12]
plt.bar(lenguaje,estudiantes,color="green")
plt.show()
```

Tarea

Resuelve los siguientes ejercicios, ingresa el código correspondiente a cada uno debajo de las instrucciones.

Ejercicio 1

Escribe el código que le permita a un usuario ingresar el largo y ancho de un salón de clases. Una vez que se hayan ingresado y leído los valores, el programa deberá calcular y mostar el área del salón.

Especificaciones:

  • Tanto la longitud como el ancho se ingresarán como números de punto flotante
  • Tanto el mensaje de ingreso como el de salida debe indicar que la unidad de medida se encuentra en metros

Tips:

Recuerda que para calcular el área debemos multiplicar el ancho por el largo

Ejercicio 2

Escribe el código de un programa que permita leer una letra del alfabeto del usuario. Por lo que si el usuario ingresa a, e, i, o, u, entonces se deberá mostrar un mensaje que diga que la letra es una vocal.

Si el usuario ingresa la letra y , entonces el programa debe mostrar un mensaje que indique que a veces y es una vocal y en ocasiones una consonante. De lo contrario, el programa debe mostrar un mensaje que indique que la letra es una consonante.

Solución de la Tarea

Aquí encontraras una posible solución a los ejercicios.

Versión Interactiva.

Aquí puedes encontrar la versión donde podras interactuar con el script y poner a prueba lo que has aprendido.