Programación de alto nivel con python
Dr. Luis Gerardo de la Fraga
E-mail:
[email protected]
http://cs.cinvestav.mx/~fraga
Departamento de Computación
Cinvestav
27 de septiembre, 2016
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
1/63
Contenido
1. ¿Por qué python?
2. Una breve introducción a Unix
3. Programando en python
4. Resolviendo problemas con python
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
2/63
¿Porqué aprender python?
Es un lenguaje de alto nivel
Es fácil construir programas rápidamente
Es uno de los lenguajes más usandos
Es el lenguaje sugerido para programar en RaspBerryPi
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
3/63
Lenguajes de alto nivel
C es un lenguaje de nivel medio
Los leguajes de alto nivel son interpretados
No se definen tipos de datos
Tienen una máquina de tiempo de ejecución (para uso de
memoria con un recolector de basura)
Se puede empotrar funciones en C dentro de Python si se
necesita eficiencia.
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
4/63
Prototipado rápido
Son ideales para realizar programas que procesan texto y
generan texto
Para generación dinámica de páginas WEB
Si se tiene una idea, puede obtenerse un programa funcional
en minutos u horas
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
5/63
Índice de Popularidad de los Lenguajes de Programación
PYPL PopularitY of Programming Language index
http://pypl.github.io/PYPL.html
Posición Cambio
Lenguaje
1
2
3
4
5
6
7
8
9
10
↑
↓
↑↑
↓
↓
↑
↑
Java
Python
PHP
C#
Javascript
C++
C
C-Objectivo
R
Swift
Porción Tendencia
23.9 %
12.8 %
10.5 %
8.8 %
7.7 %
7.2 %
7.1 %
4.7 %
3.1 %
3.0 %
-0.5 %
+2.1 %
-0.8 %
-0.5 %
+0.6 %
-0.4 %
-0.1 %
-0.6 %
+0.5 %
+0.4 %
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
6/63
PYPL PopularitY of Programming Language index https://sites.google.com/
site/pydatalog/pypl/PyPL-PopularitY-of-Programming-Language
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
7/63
PYPL PopularitY of Programming Language index
http://pypl.github.io/PYPL.html
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
8/63
http://www.raspberrypi.org/
Se puede comprar en www.newark.com.mx
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
9/63
Python no lo recomendado para cómputo intensivo
Comparacion de un programa intensivo en punto flotante en
tres versiones, python, perl y C.
$ time python chuaBinX.py 0.1 1000 12 > secPy
3m1.915s
3m1.869s
real
user
sys 0m0.048s
$ time perl chuaBinX.pl 0.1 1000 12 > secPl
3m31.458s
3m31.408s
real
user
sys 0m0.050s
$ time ./chuaBinX 0.1 1000 12 > secC
real
user
sys 0m0.003s
0m0.982s
0m0.968s
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
10/63
Si se ejecutase 1000 veces el trabajo anterior:
Python Perl
3’31"
211
^
|
C
1"
1
1000" = 16’40"
Tiempos de ejecucion 3’2"
Veces más
Si fuesen 10^6 bits
10^6/10^3 = 10^3
182
^
|
|
un poco más de 58 horas y media
50 horas y media
Moraleja: No usar lenguajes interpretados en cómputo intensivo
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
11/63
Lenguaje
Mapa caótico
Tiempo (seg)
C
Corrimiento de Bernoulli
Mapa casa de campaña
Mapa Zigzag
Python
Corrimiento de Bernoulli
Mapa casa de campaña
Mapa Zigzag
Matlab
Corrimiento de Bernoulli
Mapa casa de campaña
Mapa Zigzag
0.24
0.40
0.48
7.68
9.81
10.84
37.73
38.7
38.55
Tiempos medidos por Esteban Torres en su trabajo de licenciatura
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
12/63
Una muy breve introducción a Unix
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
13/63
Algunos comandos básicos de Unix
1. ls – lista el contenido del directorio
2. ls -l – listado largo del contenido del directorio
3. mkdir nombre – crea el directorio nombre
4. rmdir nombre – borra el directorio nombre
5. cd nombre – se cambia al directorio nombre
6. touch documento – crea un archivo vacío llamado
documento
7. mv documento doc1.txt – cambia de nombre el archivo
documento a doc1.txt
8. file doc1.txt – identifica el archivo doc1.txt
9. rm doc1.txt – borra el archivo doc1.txt
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
14/63
Hay que ser ordenados para trabajar
Hay que crear siempre un espacio de trabajo, por ejemplo:
cd
mkdir CursoPython
cd CursoPython
ls -l
nano hola.py
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
15/63
Mi primer programa en python
print "Hola mundo!"
El programa se ejecuta en la línea de comandos como:
$ python hola.py
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
16/63
Programando en python
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
17/63
Variables en python
x = 123
x = 123L
x = 3.14
x = "hola"
x = [0,1,2]
x = (0,1,2)
x = open(’hello.py’, ’r’)
# un entero
# un entero largo
# un real en doble precisión
# una cadena
# una lista
# una tupla
# un archivo
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
18/63
Sentencia “if”
x = 4
if x < 5 :
print "x es menor que cinco"
else :
print "x es mayor o igual que cinco"
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
19/63
Sentencia “if”
x = 4
if x == 0 :
print "x es igual a cero"
elif x < 5 :
print "x es menor que cinco"
else :
print "x es mayor que cinco"
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
20/63
# Una línea de comentarios comienza con un ’#’
a = 90
print a
"""
Varias líneas
de comentarios
Fraga 24/03/2014
"""
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
21/63
Ciclos
Se puede usar la sentencia ’for’,
o también la sentencia ’while’
La sentencia ’for’ se usa para iterar en listas
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
22/63
# Un ejemplo de uso del ’while’
#
i=0
while i<10 :
print i
i = i + 1
# coding: utf-8
#
# El mismo programa anterior pero con
# una modificación en el ’print’:
#
i=0
while i<10 :
print i,
i = i + 1
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
23/63
# Un ejemplo del uso del ’for’
#
lista = [2,3,5,9]
for i in lista :
print i
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
24/63
El comando ’pydoc’
La ayuda sobre cualquier sentencia se puede obtener
con el comando ’pydoc’.
Dar, por ejemplo, ’pydoc if’ en la línea de comandos.
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
25/63
Se pueden definir funciones (1/2):
def suma(a, b) :
return( a+b )
r = suma( 5, 6)
print "5 + 6 =", r
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
26/63
Se pueden definir funciones (2/2):
def f(x) :
return( x*x )
i=0
while i<20 :
y = f(i)
print i, y
i = i+1
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
27/63
Las funciones matemáticas se encuentran en el módulo math:
import math
angulo = math.pi/2
print math.degrees(angulo), math.sin(angulo), \
math.cos(angulo)
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
28/63
El módulo numpy nos permite definir matrices:
# coding: utf-8
import numpy
A = numpy.zeros((3,2))
# ndim es el número de dimensiones
# size es el número total de elementos
# shape
print A.ndim, A.size, A.shape
i=0
while i<3 :
mxn
j=0
while j<2
:
print A[i,j],
j = j+1
print
i = i+1
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
29/63
Debe definirse desde el principio del tamaño de la matriz, o
usar sus métodos asociados ’resize’, ’reshape’, por ejemplo.
import numpy as np
a = np.ones((3,3))
print a
a.resize( (3,4 ) )
print a
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
30/63
Guardando datos en un archivo:
def f(x) :
return( x*x )
arch = open( "salida.txt", ’w’ )
i=0
while i<20
:
y = f(i)
arch.write( "{} {}\n".format(i, y) )
i = i+1
arch.close()
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
31/63
Argumentos en la línea de comandos:
# coding: utf-8
import sys
n = len(sys.argv)
print n
if n != 3 :
print "Args: número1 número2"
sys.exit(1)
print sys.argv[1], sys.argv[2]
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
32/63
Excepciones:
# coding: utf-8
import sys
n = len(sys.argv)
if n != 2 :
print "Args: nombre_archivo"
sys.exit(1)
nombre = sys.argv[1]
try:
arch = open( nombre, ’r’ )
except IOError:
print "No pude abrir el archivo", nombre
sys.exit(2)
for linea in arch :
print linea
arch.close()
Dr. Luis Gerardo de la Fraga
CCE 2016, Cinvestav
Programación de alto nivel con python
33/63
Para separar los tokens de una cadena:
# coding: utf-8
a = "Esta es una prueba de una línea de texto"
b = a.split()
for palabra in b:
print palabra
c = b[3]
print "Otro: ", c
n = len(b)
i=0
while i<n :
print b[i]
i = i+1
Dr. Luis Gerardo de la Fraga
Comentarios de: Programación de alto nivel con Python (0)
No hay comentarios