0% encontró este documento útil (0 votos)
31 vistas29 páginas

Tutorial Python

El documento proporciona una introducción al lenguaje de programación Python, cubriendo temas como tipos de datos, estructuras de control, y optimización en logística mediante modelos matemáticos. Se incluyen ejemplos prácticos, como el modelo de Wilson para la gestión de almacenes y el uso de funciones y estructuras de datos. Además, se discuten conceptos fundamentales como la indentación, operaciones, y precedencia de operadores en Python.

Cargado por

Juan Martinez
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)
31 vistas29 páginas

Tutorial Python

El documento proporciona una introducción al lenguaje de programación Python, cubriendo temas como tipos de datos, estructuras de control, y optimización en logística mediante modelos matemáticos. Se incluyen ejemplos prácticos, como el modelo de Wilson para la gestión de almacenes y el uso de funciones y estructuras de datos. Además, se discuten conceptos fundamentales como la indentación, operaciones, y precedencia de operadores en Python.

Cargado por

Juan Martinez
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

Python Language

Programming
Optimization & Logistics

1
Python Language Programming
Optimization & Logistics
Marco A. Pinto Orellana

marcoapintoo@[Link]

2
Outline
1. Introducción al lenguaje Python:
1. Tipos de datos
2. Estructuras de control
3. Vectores y matrices
4. Clases y objetos?
2. Optimización aplicada a logística:

3
Outline
2. Optimización aplicada a logística:
1. Modelos matemáticos
2. Problema de los dos hospitales
3. Problema de las p-medianas
4. Problema del cajero viajant
5. Problema de ruteamiento de vehículos
3. Q & A

4
¿Qué es Python?
Python es un lenguaje de programación de alto nivel: Podemos
escribir programas de forma que no nos preocupamos con el
hardware o con configuraciones específicas del computador.

Python es un lenguaje interpretado: No necesitaremos "compilar" el


programa cada que vayamos a ejecutarlo.

Python es un lenguaje orientado a objetos.

5
Instalación de Anaconda
En este tutorial vamos a usar Python 3.8
(aunque cualquier versión mayor a 3.2 será util)
Anaconda 3.8
[Link]
Windows-x86_64.exe
Descripción paso a paso
[Link]

6
Modelo de Wilson
2Cp V
Q=

Ca
​ ​

Ca : Costo de mantener cada unidad


Cp : Costo de un pedido

V : Ventas o demanda
Q: Tamaño óptimo de pedido

7
Modelo de Wilson
2Cp V
Q=

Ca
​ ​

# Modelo de Wilson de Gestión de almacenes:


Ca = 10 #coste de mantener cada unidad
Cp = 2 #coste de un pedido
V = 4 #ventas o demanda
Q = (Cp * V * 2 / Ca) ** 0.5 #Tamano optimo de pedido
print("El tamano optimo es:", Q)

8
Variables
Son espacios de memoria donde se almacenan algún valor

x = 42
print(x) #"print" nos muestra el resultado en pantalla.

Pueden modificarse durante la ejecución del programa:

x = 42
x = 3
print(x)

9
Operaciones
a = 7
b = 43
x4 = a // 2 # División entera
# Cuál es la diferencia entre "/" y "//"?
print(x4)
x5 = a ** 2 # Potenciación: a al cuadrado
print(x5)
x_6 = b ** 0.5 # Potenciación: raíz cuadrada de b
print(x_6)
x_7 = b ** a # Potenciación: b elevado a la "a"
print(x_7)

10
Operaciones (cont.)
a = 7
b = 43
x4 = a // 2 # División entera
# Cuál es la diferencia entre "/" y "//"?
print(x4)
x5 = a ** 2 # Potenciación: a al cuadrado
print(x5)
x_6 = b ** 0.5 # Potenciación: raíz cuadrada de b
print(x_6)
x_7 = b ** a # Potenciación: b elevado a la "a"
print(x_7)

11
Tipos de datos
nombre = "Jorge Antonio" #Tipo: cadena de caracteres: str
edad = 25 #Tipo: valor entero: int
altura = 1.75 #Tipo: valor real: float
num_imaginario = 1j #Tipo: valor complejos: complex
#... si, Python permite usar
# números imaginarios
print("Nombre:", nombre)
print("Edad:", edad)
print("Altura:", altura)

12
Indentación
Python reconoce los espacios al inicio de cada palabra

Este código funcionará perfectamente:

#Farenheit a Celcius
T_celcius = 26
T_farenheit = 9 / 5 * T_celcius
T_farenheit = T_farenheit + 32
print(T_celcius, "°C son", T_farenheit, "°F.")

13
Indentación
Sin embargo, si agregamos algunos espacios al inicio. El código deja
de funcionar:

#Farenheit a Celcius
T_celcius = 26
T_farenheit = 9 / 5 * T_celcius
T_farenheit = T_farenheit + 32
print(T_celcius, "°C son", T_farenheit, "°F.")

Al ejecutar el programa aparecerá un mensaje de "IndentationError:


unexpected indent" que significa que se encontró espacios adicionales
inesperados al inicio de una línea de código
14
Cadenas de escape
Existen ciertos tipos de cadenas que tienen un significado especial
para representar cosas como saltos de línea ("\n") y tabuladores ("\t")
entre otros. Estos símbolos se conocen como "cadenas de escape" y
en Python comienzan con un slash ("").

mensaje = 'Es\ta cadena \no saldrá en una sóla linea'


print(mensaje)
#Si queremos ver la barra, debemos reemplazar \ con \\
mensaje = 'Es\\ta cadena \\no saldrá en una sóla linea'
print(mensaje)

15
Precedencia de operadores
x = 3 + 12 / 6 - 2 ** 1
print(x)

x = 16 / 2 * 8
print(x)

16
Precedencia de operadores
El orden de prioridad es el siguiente:
1. Paréntesis
2. Potenciación,
3. Multiplicación/división,
4. Suma/resta.

Cuando dos operadores tienen la misma


prioridad (* y /), se resuelve la operación de izquierda a derecha.

17
Series finitas
x3 x5 x7 x9
sin (x) = x − + − +
6 120 5040 362880
​ ​ ​ ​

x = 3.14159 * 0.5 # veremos el valor en 90°


sin_x = x
sin_x = sin_x - (x**3 / 6)
sin_x = sin_x + (x**5 / 120)
sin_x = sin_x - (x**7 / 5040)
sin_x = sin_x + (x**9 / 362880)
print("sin(",x,")=",sin_x)

18
Series finitas
1 2 1 3 1 4
ln(x) = x − 1 − ⋅ (x − 1) + ⋅ (x − 1) − ⋅ (x − 1)
2 3 4
​ ​ ​

x = 3.0 # Logaritmo neperiano de 3


logaritmo = 0
#Complete el código aquí
print("ln(",x,")=",logaritmo)

19
Librerías: import
#Nuestra aproximación
import math #Importamos la librería math
x = [Link] * 0.5 # Reemplazamos 3.14159 con [Link]
sin_x = x
sin_x = sin_x - (x**3 / 6)
sin_x = sin_x + (x**5 / 120)
sin_x = sin_x - (x**7 / 5040)
sin_x = sin_x + (x**9 / 362880)
print("sin_approx(",x,")=",sin_x)
#Ahora la versión de Python
sin_x = [Link](x)
print("sin_py(",x,")=",sin_x)

20
Batteries included
[Link]

21
Funciones
¿Cómo encapsular el modelo de Wilson?

# Modelo de Wilson de Gestión de almacenes:


Ca = 10 #coste de mantener cada unidad
Cp = 2 #coste de un pedido
V = 4 #ventas o demanda
Q = (Cp * V * 2 / Ca) ** 0.5 #Tamano optimo de pedido
print("El tamano optimo es:", Q)

22
Funciones
def modelo_wilson(Ca, Cp, V): #Definición de la función
Q = (Cp * V * 2 / Ca) ** 0.5 #Tamano optimo de pedido
print("El tamano optimo del caso 1 es:", Q)

#Como usamos la función?


modelo_wilson(10, 2, 4) # Podemos llamar a la función
# usando los parámetros
modelo_wilson(Ca=20, Cp=5, V=15) # Podemos llamar a la
# función usando los nombres de
# los parámetros.

23
Estructuras de datos: list
x1 = 1
x2 = 2
x3 = 3
x = [1, 2, 3]

24
Estructuras de datos: tuple
x = [1, 2, 3]
y = (1, 2, 3)
print(x[0])
print(y[0])
x[0] = 1
print(x[0])
y[0] = 1
print(y[0])

25
Estructuras de datos: dict
x = {
"valor1": 1,
"valor2": 2,
"valor3": 3,
}

26
Estructuras de control: if
if [condicion]: #No olvidar los dos puntos
[comando 1] #Siempre 4 espacios más a la derecha para
[comando 2] # mostrar que el código está "dentro" de if
else: #No olvidar los dos puntos
[comando 1] #Siempre 4 espacios más a la derecha para
[comando 2] # mostrar que el código está "dentro" de if

27
Estructuras de control: while
while [condicion]: #No olvidar los dos puntos
[comando 1] #Siempre 4 espacios más a la derecha para
[comando 2] # mostrar que el código está "dentro" de while

28
Estructuras de control: for
for [variable] in [lista]: #No olvidar los dos puntos
[comando 1] #Siempre 4 espacios más a la derecha para
[comando 2] # mostrar que el código está "dentro" de while

29

También podría gustarte