Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Departamento de Ciencias de la
Computación e Inteligencia Artificial
Indice
1Código “pythónico”: Explícito es mejor que implícito; Simple es mejor que complejo; La legibilidad cuenta; Ahora es
mejor que nunca; Aunque nunca es a menudo mejor que ya mismo; Los casos especiales no son tan especiales como
para quebrantar las reglas; Etc… (https://es.wikipedia.org/wiki/Python#Filosof.C3.ADa)
¿Por qué Python 3.x?
Programming
sep-17 sep-16 Ratings Change
Language
Java 1 1 12687% -5.55%
C 2 2 7382% -3.57%
C++ 3 3 5565% -1.09%
C# 4 4 4779% -0.71%
Python 5 5 2983% -1.32%
PHP 6 7 2210% -0.64%
Programming
2017 2012 2007 2002 1997 1992
Language
Java 1 2 1 1 15 -
C 2 1 2 2 1 1
C++ 3 3 3 3 2 2
C# 4 4 7 13 - -
Python 5 7 6 11 27 -
Visual Basic .NET 6 17 - - - -
2017 postings that contained Third quarter plot for 2017, TIOBE Index 2017, September.
Python from Indeed.com. June 8. Figure from http://redmonk.com/ Figure from https://www.tiobe.com/
Based on the number of skilled engineers world-
Figure from http://www.codingdojo.com/
Global numerical ranking: wide, courses and third party vendors
1 JavaScript, 2 Java, 3 Python, 4 PHP, …
¿Por qué Python 3.x?
Es software libre, de código abierto y gratuito2, con licencia BSD
(permisiva para empresas).
Multiplataforma:Windows, MacOS, Linux, etc.
Multiparadigma: Varios estilos de programación compatibles
(imperativo, orientado a objetos, funcional)
Integración con otros lenguajes C/C++/R… en ambos sentidos
Indentación obligatoria (legibilidad, legibilidad, legibilidad…
→ reusabilidad)
2 Es importante no confundir software libre con software gratis, porque la libertad asociada al software libre de copiar, modificar y
redistribuir, no siempre implica gratuidad (https://www.informatica-hoy.com.ar/software-libre-gnu/Tipos-de-licencia-de-Software.php)
¿Por qué Python 3.x?
Núcleo del lenguaje relativamente pequeño y disponibilidad de un amplio
espectro de magníficas librerías, desarrolladas y continuamente
actualizadas por una comunidad grande y activa, la gran mayoría
disponibles vía repositorios (disponibilidad inmediata online)
Aunque Python 2.73 ha sido la versión más utilizada, usaremos Python 3.6
ya que no es que sea el futuro, sino que ya es el presente. No son
compatibles, pero prácticamente todas las librerías ya están
portadas y disponibles para Python 3.x
3 El fin del ciclo de vida de Python 2.7, The End Of Life date (EOL, sunset date), está programado para 2020. Python 2.7 dejará de
tener soporte (incluidas las librerías), y los productos desarrollados a partir de dicha fecha ya no tendrán por qué funcionar en Python 2.7.
Cientos de librerías relacionadas con la
In [1]: 3 + 5 <ENTER>
Out[1]: 8
Expresiones:
Mostrar resultados desde un programa
Una breve introducción a ‘print’
In [1]: 3 + sqrt(25)
NameError: name 'sqrt' is not defined
Expresiones: Uso de funciones
1. import module
module.fun() #(para usar la función fun en el programa)
2. from module import *
fun() #(para usar la función fun en el programa)
3. from module import fun1, fun2 #(sólo importaría esas dos)
sqrt(-1)
cmath.sqrt(-1)
Out[4]: 1j
Expresiones: Uso de funciones
Recomendación: No usar cmath si no es para cálculo con números complejos. Usar
math respecto a numpy si se va a trabajar con escalares, y numpy respecto a math si con
vectores. Cada una es más mucho más rápida que la otra en dichos casos. Incluso puede
interesar usar ambas (como en el ejemplo 1 de la transparencia anterior) según el tipo de
cálculo a realizar.
Función Descripción / Librería Ejemplo (import math as mt)
abs(x) Valor absoluto In [1]: abs(-35)
Propia del lenguaje Out [1]: 35
sqrt(x) Raíz cuadrada de un número In [1]: mt.sqrt(81)
math, cmath, numpy Out [1]: 9.0
Ejemplo:
29
Expresiones: Precisión de los resultados
Material complementario - http://www.techkrowd.com/articulo.php?codigo=39 (Vídeo explicando los tipos
básicos, los problemas de precisión y posibles soluciones: tipos importados Decimal y Fraction)
In [2]: kwlist
Out[2]: ['False', 'None', 'True', 'and', 'as', 'assert', 'break',
'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for',
'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not',
'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
In [3]: sin = 8
In [4]: sin(3.1416)
In [3]: sin #comprobación
Out[3]: <function math.sin>
TypeError: 'int' object is not callable
In [5]: mt.sin = 8
In [4]: mt.sin #comprobación
Out[4]: <function math.sin>
In [6]: mt.sin(3.1416)
TypeError: 'int' object is not callable
In [4]: sen #comprobación
NameError: name 'sen' is not defined
Definición de variable
Una variable es de un tipo de dato concreto
◦ Un número (entero, real, etc.)
◦ Una cadena de caracteres o texto
◦ Un dato Booleano
◦ Una lista
◦ …
In [1]: resultado = 3 + 5
In [2]: cuadrado = resultado ** 2
In [3]: resultado, cuadrado #para ver los valores en Ipython
Out[3]: (8, 64)
Operación de Asignación
Antes de usar una variable, es necesario darle
algún valor. Es decir "inicializarla".
La forma más directa es mediante una sentencia
de asignación.
nro = 45
LADO DERECHO:
una variable, un literal o
LADO IZQUIERDO: Operador de una expresión compleja.
una variable Asignación
Ejemplo:
In [1]: a, b, c = abs(-3.2), 88, 0.147
In [2]: a
Out[2]: 3.2
¡¡¡Cuidado con la legibilidad !!!
In [3]: b
Out[3]: 88
In [4]: c
Out[4]: 0.147
Regla de Asignación
Una variable en el lado derecho de una sentencia
de asignación debe estar definida (existir) antes de
que la sentencia de asignación se ejecute. Hasta
que un programa le da un valor a una variable, esa
variable no tiene valor.
La variable x no tiene ningún valor. No se
sabe qué hacer y se produce el siguiente
Ejemplo: ERROR!!!
y = x + 1 NameError: name 'x' is not defined
Memoria
In [1]: num1 = 45
In [2]: num2 = 11 num1 45
In [3]: suma = num1 + num2
In [4]: suma num2 11
Out[4]: 56
suma 56
Regla de Asignación
In [1]: a = 4 In [7]: a = 21
In [2]: b = 5 En la instrucción In[5] In [8]: id(a)
In [3]: id(a) se destruye el objeto 5
Out [8]: 1672670288
Out[3]: 1672669744 In [9]: id(b)
In [4]: id(b) Out [9]: 1672669744
Out[4]: 1672669776 In [10]: b
In [5]: b = 4 Out[10]: 4
In [6]: id(b) En realidad son el mismo
Out[6]: 1672669744 objeto. Python reutiliza
En la instrucción In[7] no se destruye el objeto 4
los objetos ya existentes
para ahorrar memoria.
Variables: Construcción de Expresiones
Las variables pueden ser usadas para construir
expresiones teniendo en cuenta el valor que hay en
ellas al igual que vimos para los valores numéricos en
anteriormente
(haciendo uso de operadores aritméticos, relacionales, etc.)
In [1]: x = 2**3 In [6]: x = 10
In [2]: x In [7]: a = 3.25
Out[2]: 8 In [8]: b = 3
In [1]: a = 2 * 3 In [9]: y = a*x + b
In [3]: a In [10]: y
Out[3]: 6 Out[10]: 35.5
In [4]: y = a / x
In [5]: y
Out[5]: 0.75
Variables: Construcción de Expresiones
También se pueden utilizar como argumentos
de las funciones.
In [1]: import math as mt
In [2]: x = 2.18
In [3]: y = mt.sin(x) * mt.cos(mt.pi * x)
In [4]: y
Out[4]: 0.6924366647911679
Ejemplo:
In [1]: print('Resultado 1/3 - ' + str(1/3) + ' - valor real\n\tTexto tabulado')
Resultado 1/3 - 0.3333333333333333 - valor real
Texto tabulado
O incluso usar el formateo del texto str.format()
d número decimal
Ejemplos: f número real
In [1]: print('Resultado 1/3 – {} – Resultado – {}'.format(1/3, 1/5))
Resultado 1/3 – 0.3333333333333333 – Resultado – 0.2
48
Comentarios
• Comienzan por un carácter #: #Comentario en línea
49
Python: Primeros programas y Ejemplos
50
Ejemplos de uso
Ejemplo (asumimos import math as mt):
sen-1(1).
print(mt.asin(1))
Al ejecutarlo
1.5707963267948966 51
Ejemplo de uso
Ejemplo (asumimos import math as mt):
• cos(45º)
print(mt.cos(45*mt.pi/180))
Al ejecutarlo
0.7071067811865476
print(mt.cos(mt.radians(45)))
Al ejecutarlo
0.7071067811865476
52
Ejemplo: Temperaturas
Enunciado:
Un objeto con una temperatura inicial T0 se introduce
en el instante t dentro de una cámara que tiene una
temperatura constante Ts. El objeto experimenta un
cambio de temperatura que se corresponde con la
ecuación:
− kt
T = Ts + (To − Ts )e ,
donde T es la temperatura final en Fahrenheit del objeto
en el instante t en horas y k una constante
53
Ejemplo: Temperaturas
Enunciado (continuación):
• Una lata de un refresco olvidada en un coche a una temperatura de
120ºF. Se introduce en una despensa que tiene en su interior una
temperatura de 38ºF. Calcular la temperatura de la lata después de
tres horas considerando k=0.45, redondeando el resultado al grado
más próximo.
import math as mt
Al ejecutarlo
Distacia (x0,y0) a la recta Ax+By+C
Coordenada x0: 2
Coordenada y0: -3
Termino A: 3
Termino B: 5
Termino C: -6
Distancia entre (2.0, -3.0) y la recta 3.0x + 5.0y + -6.0: 2.5724787771376323
Ejemplo: Energías
Enunciado:
La energía emitida por un terremoto de escala M en la Escala Richter viene dada por:
3
M
E = E0 e 2
E0 = 10**4.4;
m1 = float(input('Magnitud del primer terremoto: '))
m2 = float(input('Magnitud del segundo terremoto: '))
E1 = E0 * mt.exp(3/2 * m1)
E2 = E0 * mt.exp(3/2 * m2)
print('La proporción existente entre el primer y segundo terremoto es:', E1/E2)
input('Pulse enter para terminar...')
Al ejecutarlo
Magnitud del primer terremoto: 7.2
Magnitud del segundo terremoto: 5.3
La proporción existente entre el primer y segundo terremoto es: 17.287781840567664
Ejemplo: Materia
Enunciado:
El sol irradia 385 x 1024 J/s, los cuales se generan mediante reacciones
nucleares que convierten la materia en energía. Dado que E= mC2 y que C,
la velocidad de la luz es 3.0 x 108 m/s, calcula cuánta materia se debe
convertir en energía para producir la cantidad de radiación
correspondiente a un día.
import math as mt
Al ejecutarlo
Indique el número de días para el cálculo: 1
En 1.0 dia/s se transforma la siguiente cantidad de materia: 369600000000000.0