M. en C. Erika Vilches

Transcripción

M. en C. Erika Vilches
Python
M. en C. Erika Vilches
Dirección del Tutorial
http://docs.python.org/tut/
Despertando la
Curiosidad
Python es más simple de usar que Java, C o C++
Disponible en Windows, Mac OS X, Linux y
Unix
Facil de usar, pero es un lenguaje de
programación real
Ofrece más chequeo de errores que C
Siendo un lenguaje de muy alto nivel, tiene
tipos de datos de alto nivel built-in (ej: arreglos
flexibles, diccionarios, etc.)
Permite partir el programa en módulos que pueden ser
reutilizados en otros programas Python.
Viene con una gran colección de módulos estándar que se
pueden utilizar como base de programas (ej: file I/O,
system calls, sockets, etc.)
Python es un lenguage interpretado
Ahorro de tiempo al programar
No compilacion, No linking
El interprete se puede utilizar de manera interactiva
Experimentar con características del lenguaje
Escribir programas de prueba
Probar funciones durante el desarrollo de un programa
Calculadora, etc.
Los programas de Python son compactos y legibles
Mucho mas cortos que su equivalente en C, C++ o Java
Los tipos de datos de alto nivel permiten expresar
operaciones complejas en un solo enunciado
La agrupación de enunciados se hace mediante
indentación (en vez de llaves)
No se requiere declarar variables o argumentos
Python es extensible
Se puede añadir una función o módulo en C al interprete
Llevar a cabo funciones criticas a máxima velocidad
Ligar programas en Python a librerías que sólo estén
disponibles en forma binaria
Nombre inspirado en el show de BBC
“Monty Python’s Flying Circus”
Hacer referencias a sketches de Monty
Python en la documentación no solo esta
permitido, sino que se fomenta!!!
Utilizando al
Interprete de Python
Invocando al Interprete
Para iniciar el interprete en Mac / Unix:
python
Windows → Verificar la ruta en la que se instaló y
añadirla al path.
Para terminar al interprete:
Control-D en Mac / Unix, Control-Z en Windows
Si ninguna de las anteriores funciona para
terminar el interprete, typear los
siguientes comandos:
>>> import sys; sys.exit()
Modo Interactivo
Cuando los comandos se leen de una tty, se
dice que el intérprete se encuentra en modo
interactivo.
En este modo, pide el siguiente comando con
el prompt primario, que es >>>
Para líneas de continuación, utiliza el
prompt secundario ... El intérprete imprime la versión y el
copyright antes del primer prompt.
python
Python 2.4.3 (#1, Aug 28 2006, 01:25:34)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on
darwin
Type "help", "copyright", "credits" or "license" for
more information.
>>>
Se requieren líneas de continuación cuando
se utiliza un construct multilínea
Ej:
>>> the_world_is_flat = 1
>>> if the_world_is_flat:
...
print "Be careful not to fall off!"
...
Be careful not to fall off!
Manejo de Errores
Cuando ocurre un error, el intérprete
imprime un mensaje de error y el stack
trace.
En modo interactivo, regresa después al
prompt primario.
Cuando el input proviene de un archivo,
sale con status no cero despues de
imprimir el stack trace.
Utilizar el caracter de interrupción (Ctrl-C
o DEL) en el prompt primario o secundario
→ Regresa al prompt primario
Si utilizamos la interrupción mientras un
comando se esta ejecutando, se genera la
excepción KeyboardInterrupt
Se puede manejar con un try
Scripts Ejecutables
En los ambientes Unix (BSD) los scripts se pueden hacer
directamente ejecutables (como shell scripts) poniendo la
línea
#! /usr/bin/env python
← Line break : Unix \n
al inicio del script y dándole al archivo modo ejecutable.
#! deben ser los primeros dos caracteres del archivo.
Para darle al script el modo ejecutable
$ chmod +x myscript.py
El caracter # se utiliza para iniciar un comentario
Encoding del Código
Fuente
Es posible utilizar encodings diferentes a
ASCII en nuestros códigos fuentes.
La mejor forma de hacerlo es poner un
comentario especial más justo después del #!
para definir el encoding
# -*- coding: encoding -*-
Todos los caracteres en el archivo fuente
serán tratados con ese encoding y permite
escribir Strings en el encoding seleccionado.
Ej: Imprimiendo una ñ en un script
ejecutable.
programa.py
← Editor: TextEdit
Haciéndolo ejecutable:
Ejecutandolo:
Salida
Ej: Imprimiendo una ñ en un script común.
programa2.py
← Editor: TextEdit
Ejecutandolo:
Salida
Otra forma de hacerlo:
Si el editor te permite guardar el archivo
como UTF-8 con UTF-8 byte marker
order (también llamado BOM)
En lugar de la declaración de encoding.
Ej: Line breaks tipo Unix, Encoding UTF-8 con BOM en TextWrangler
Para que no crean que sólo las Macs pueden
hacer esto... :)
IDLE es un GUI para Python que te permite
hacer esto:
http://www.python.org/idle/doc/idle2.html
si la opción
Options/General/Default Source Encoding/UTF-8
esta activada.
Esta opción no se entiende en versiones
viejas de Python (2.2 para atrás)
Utilizar UTF-8 (via signature o declaración
de encoding) se pueden utilizar
simultáneamente caracteres de la mayoría
de los lenguajes del mundo
En Strings y comentarios
NO esta soportado utilizar caracteres
no ASCII en identificadores
Introducción Informal a
Python
En los ejemplos, la entrada y salida se diferencian
por la presencia o ausencia de prompts
Para repetir el ejemplo → Escribir todo lo que se
encuentre despues del prompt
Lineas que no empiezan con prompt → salida del
intérprete
Una línea con un promt secundario por si misma
→ Debes dejar una línea en blanco
Terminar un comando multilínea
Los comentarios inician con un hash # (1 línea)
Comentarios pueden estar:
Al inicio de una línea
Después de espacio en blanco
Después de una línea de código
Comentarios no pueden estar:
Dentro de un string
Un # dentro de un string es solo un #
# this is the first comment
SPAM = 1
# and this is the second
comment
# ... and now a third!
STRING = "# This is not a comment."
Utilizando Python como
una Calculadora
Inicie el interprete y espere el prompt
primario >>>
Números
El intérprete actúa como una calculadora
simple
Escribir una expresión → Escribirá el
valor
Los operadores +. -. * y / funcionan como
en otros lenguajes
Se pueden usar paréntesis para agrupar
>>>
4
>>>
...
4
>>>
4
>>>
5
>>>
...
2
>>>
-3
2+2
# This is a comment
2+2
2+2
# and a comment on the same line as code
(50-5*6)/4
# Integer division returns the floor:
7/3
7/-3
El signo de igual (=) se utiliza para asignar
un valor a una variable
>>> width = 20
>>> height = 5*9
>>> width * height
900
Se puede asignar valor a varias variables
de manera simultánea
>>>
>>>
0
>>>
0
>>>
0
x = y = z = 0
x
y
z
# Zero x, y and z
Hay soporte completo para variables
flotantes
Operadores con operandos de tipo mixto
convierten los enteros a flotantes
>>> 3 * 3.75 / 1.5
7.5
>>> 7.0 / 2
3.5
Los números complejos también son soportados
Los números imaginarios se escriben con un
sufijo “j” o “J”
Números complejos con componente real no cero
se escriben con "(real+imag j)"
También pueden ser creados con la función
"complex(real, imag)"
>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)
Los números complejos se representan
siempre como dos números de punto flotante
La parte real
La parte imaginaria
Para extraer esas partes de un número
complejo z
z.real
z.imag
>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5
Las funciones de conversión a punto
flotante y entero
float()
int()
long()
NO funcionan para números complejos
No hay forma correcta de convertir un
numero complejo a un número real.
Utilice abs(z) para obtener su magnitud
(como un flotante)
Utilize z.real para obtener su parte real
Ejemplos:
>>> a=3.0+4.0j
>>> float(a)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: can't convert complex to float; use abs(z)
>>> a.real
3.0
>>> a.imag
4.0
>>> abs(a) # sqrt(a.real**2 + a.imag**2)
5.0
>>>
En modo interactivo, la última expresión
impresa se asigna al a variable _
Hace mas fácil continuar cálculos si
estamos utilizando a Python como
calculadora
Debe ser tratada como read only
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06
>>>
Strings
Además de números, Python puede
manipular Strings
Se pueden expresar de diversas formas
Pueden tener comillas simples o dobles
>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.
Los strings pueden ocupar varias líneas de
diversas formas:
hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
Note that whitespace at the beginning of the line is\
significant."
print hello
Note que el retorno de línea igual se indica
con \n
Este ejemplo imprimiría lo siguiente:
This is a rather long string containing
several lines of text just as you would do in C.
Note that whitespace at the beginning of the line is significant.
Si hacemos al string “raw”, los \n NO son
convertidos a líneas nuevas, sino que tanto
el backslash al final de la línea como el \n
se incluyen en el string.
El ejemplo:
hello = r"This is a rather long string containing\n\
several lines of text much as you would do in C."
print hello
Imprimiría:
This is a rather long string containing\n\
several lines of text much as you would do in C.
Otra opción es rodear al string con un par
de comillas triples “ “ “ o ‘ ‘ ‘
Cuando usamos comillas triples, no se
necesita escapar el fin de línea y aún así se
incluirá en el string.
print """
Usage: thingy [OPTIONS]
-h
-H hostname
"""
Display this usage message
Hostname to connect to
Imprimirá:
Usage: thingy [OPTIONS]
-h
-H hostname
Display this usage message
Hostname to connect to
Los strings se pueden concatenar con el
operador + y repetir con el operador *
>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '<' + word*5 + '>'
'<HelpAHelpAHelpAHelpAHelpA>'
Dos literales string juntas se concatenan
automáticamente.
Solo funciona con dos strings literales,
no con expresiones de strings
>>> 'str' 'ing'
'string'
>>> 'str'.strip()
'string'
>>> 'str'.strip()
File "<stdin>",
'str'.strip()
#
+ 'ing'
#
<-
'ing'
# <line 1, in ?
'ing'
^
SyntaxError: invalid syntax
<-
This is ok
This is ok
This is invalid
Los caracteres se pueden indexar como en
C.
El primer caracter de un string tiene el
indice 0
No hay tipo caracter → String tamaño 1
Los substrings se pueden especificar con la
notación de rebanada → dos indices
separados por (:) dos puntos
>>> word[4]
'A'
>>> word[0:2]
'He'
>>> word[2:4]
'lp'
Si se omite el primer indice → default 0
Si se omite el segundo indice → default el
tamaño del string
>>> word[:2]
'He'
>>> word[2:]
'lpA'
# The first two characters
# Everything except the first two characters
A diferencia de C, los strings no pueden
cambiarse:
>>> word[0] = 'x'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: object doesn't support item assignment
>>> word[:1] = 'Splat'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: object doesn't support slice assignment
Sin embargo, crear un nuevo string con el
contenido combinado es fácil y eficiente
>>> 'x' + word[1:]
'xelpA'
>>> 'Splat' + word[4]
'SplatA'
Invariant util de las operaciones slice →
s[:i] + s[i:] es igual a s.
>>> word[:2] + word[2:]
'HelpA'
>>> word[:3] + word[3:]
'HelpA'
Rebanadas de indices degenerados →
manejadas con gracia
Indice demasiado largo → Reemplazado
por el tamaño del string
Limite superior menor que el límite
inferior → Regresa un string vacío
>>> word[1:100]
'elpA'
>>> word[10:]
''
>>> word[2:1]
''
Los indices pueden ser números negativos,
para empezar a contar desde la derecha
>>> word[-1]
'A'
>>> word[-2]
'p'
>>> word[-2:]
'pA'
>>> word[:-2]
'Hel'
# The last character
# The last-but-one character
# The last two characters
# Everything except the last two characters
Note que -0 es realmente lo mismo que 0,
asi que NO empieza a contar desde la
derecha.
>>> word[-0]
'H'
# (since -0 equals 0)
Las rebanadas negativas fuera de rango
son truncadas.
NO intentar esto para indices de 1 solo
elemento
>>> word[-100:]
'HelpA'
>>> word[-10]
# error
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IndexError: string index out of range
La función len() devuelve la longitud de un
string
>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34
Strings Unicode
Dede Python 2.0 se tiene un nuevo tipo de
datos → el objeto Unicode
Se puede utilizar para almacenar y
manipular datos Unicode
Se integra bien con los objetos string
existentes.
Autoconversiones donde es necesario
Crear string Unicode es igul de sencillo que
crear strings normales
>>> u'Hello World !'
u'Hello World !'
La u minuscula antes de las comillas indica
que debe crearse un string Unicode
Para incluir caracteres especiales en el
string se puede utilizar el unicode-escape
encoding.
>>> u'Hello\u0020World !'
u'Hello World !
Listas

Documentos relacionados