Anda di halaman 1dari 151

Aprendiendo

conceptos basicos de
Python
Python
Python es un lenguaje de alto nivel intencionado para
ser relativamente fcil para las personas de leer y
escribir y para las computadoras de leer y procesar.
La traduccin de lenguaje de programacin cae en dos
categoras: (1) interpretes y (2) compiladores.
Un interprete lee el cdigo fuente del programa tal como fue
escrito por el programador, analiza el cdigo fuente, e
interpreta las instrucciones sobre la marcha. Python es un
interprete y cuando se corre Python interactivamente, se
puede escribir una lnea de Python (una sentencia) y Python la
procesa inmediatamente y podemos continuar con la
siguiente lnea.
Python
Algunas lneas de Python le dicen a Python que se necesita recordar un valor
para ser utilizado posteriormente. Se escoge un nombre para ese valor y
utilizamos ese nombre para regresar ese valor luego. El termino variable se
utiliza como las etiquetas que nos sirven para referenciar el valor
almacenado.

En este ejemplo se le pide a Python recordar


el valor seis y utiliza la etiqueta x de tal
manera que podamos recuperar ese valor
luego. Verificamos que Python ha recordado
ese valor utilizando el comando print. Luego
se le pregunta por el valor x multiplicado por
siete y asignarlo en una nueva variable y.
Luego se le solicita a Python imprimir el valor
actual asignado a y.
Python
Es de naturaleza de un interprete de sostener un conversacin interactiva como se
muestra en la diapositiva anterior. Un compilador necesita ser manejado hacia un
programa entero en un archivo, y luego corre un proceso para traducir del cdigo
fuente de lenguaje de alto nivel en lenguaje de maquina y luego el compilador coloca
el lenguaje de maquina dentro de un archivo para la futura ejecucin. En Windows son
los archivos ejecutables .exe, si se abre con un editor de texto se vera como:
Python
No es fcil leer o escribir lenguaje de maquina, por lo
que es conveniente disponer de interpretes y
compiladores que permiten escribir un lenguaje de alto
nivel como Python o C.
El interprete Python esta escrito en un lenguaje de alto
nivel C. Se puede ver el cdigo fuente de Python en
www.python.org. Por lo que Python es un programa por
si mismo y esta compilado en cdigo de maquina y
cuando se instala en la computadora, se copia el cdigo
fuente de programa Python traducido en el sistema de
la misma.
Python Escribir un programa
Escribir comandos en el interprete Python es una
manera de experimentar caractersticas de Python, pero
no es recomendable para resolver problemas complejos.
Cuando se escribe un programa, utilizamos un editor de
texto para escribir las instrucciones de Python dentro de
un archivo, el cual llamamos script (guion). Por
convencin, los scripts de Python, tienen nombres que
finalizan con .py.
Para ejecutar el script, se puede utilizar desde
command prompt Python hola.py.
Python - programa
La definicin de un programa en su forma bsica es una secuencia de
enunciados de Python que son manipulados para hacer algo. Ejemplo
hola.py.
Con un programa se pueden resolver problemas que realizando
manualmente tomara mucho esfuerzo y tiempo. Por ejemplo determinar
la palabra mayormente mencionada en un prrafo.
Python - programa
Se puede determinar la palabra mayormente mencionada en un
prrafo con el programa words.py de http://www.pythonlearn.com/code
/ si colocamos el prrafo en un archivo de texto nombrearchivo.txt
en el mismo directorio donde esta ubicado el archivo words.py, y
luego corriendo el programa desde el interprete Python.
Python bloques de programa
Hay algunos conceptos de bajo-nivel que se utilizan para
construir un programa desde un lenguaje de alto-nivel:
Entrada: obtener datos desde afuera. Puede ser un archivo
de datos, un sensor como un micrfono o GPS. Al inicio
la entrada proviene de los datos escritos por el usuario
desde el teclado.
Salida: Despliegue de los resultados del programa sobre una
pantalla o almacenaje de los mismos en un archivo o
quizs traducirlos hacia un dispositivo como ser una
bocina para msica.
Ejecucin secuencial: desarrollar enunciados de manera
secuencial uno tras otro en el orden en que son
encontrados en el script.
Ejecucin condicional: revisar ciertas condiciones y
ejecutarlas u omitir una secuencia de enunciados.
Python Tipos de Errores
Errores de syntaxis: Significan que se ha violado alguna
regla de gramatica de python
Errores logicos: se cometen cuando el programa dispone
Buena syntaxis pero hay un error en el orden de los
enunciados o como se realcionan entre si los enunciados
Errores semanticos: un error semantico es cuando la
descripcion de los pasos a tomar esta sintaticamente
perfecta y en el orden correcto, pero simplemente hay
un error en el programa. El programa esta correcto pero
no hace lo que deseamos que haga.
Python - valores
Un valor es bsico para que un programa trabaje, como
una letra (hola mundo) o un numero (23). Estos
valores pertenecen a distintos tipos: 2 es un entero
(integer) y hola mundo es un caracter (string)
Python print()
Cuando se escribe un numero largo, es comun colocar
comas cada tres digitos como ser 1,000,000. Este no es
un entero en Python, pero se puede utilizar para
imprimir tres valores seguidos, Python interpreta
1,000,000 como una secuencia de enteros separados
por una coma :
Python - Variables
Una de las funciones mas importantes en un lenguaje
de programacion es la habilidad de poder manipular
variables. Una variable es un nombre que se refiere a
un valor.
Un enunciado de asigmaniento crea nuevas variables y
les asigna un valor:
Python - Variables
El ejemplo anterior hace tres asginamientos. El primero
asigna caracteres para una nueva variable llamada
mensaje; la segunda asigna el entero 17 a n; el tercero
asigna el valor de a pi.
Python Nombre de Variables y
palabras reservadas
Comumente se utilizan nombres para las variables cuyo
significado este relacionado con lo que almacenan.
Pueden disponer de nombres arbitrariamente largos.
Pueden contener letras y numeros, pero deben
comenzar con una letra. Es legal utilizar letras
mayusculas, pero es mejor idea empezar el nombre de
una variable con letra minuscula.
El signo barra inferior (_) puede aparecer en un nombre
de variable. Se utiliza a menudo para palabras
multiples, como mi_nombre.
Python nombre de variables y
palabras reservadas
76trombones es no permitido
por que no comienza con una
letra
mas@ es no permitido debido
a que contiene un caracter
ilegal @.
Class no se permitido por que
pertenece a una de las
palabras claves de Python
(and as assert break
class continue def del
elif else except exec
finally for from global
Python - Enunciados
Un enunciado es una unidad de codigo que el
interpretador Python puede ejecutar. Cuando se escribe
un enunciado en el modo interactivo, el interpretador la
ejecuta y muestra el enunciado, si lo hay.
Un guion(script) usualmente contiene una secuencia de
enunciados. Si hay mas de un enunciado, el resultado
aparece uno a la vez que se ejecuta el enunciado, por
ejemplo:
Python operadores y operandos
Operadores son simbolos especiales que representan un
calculo como una adicion y multilplicacion. Los valores a
los cuales se aplica el operador son llamados
operandos.
Los operadores +, -, *, / y ** desarrollan suma,
substraccion, multilplicacion, division y exponenciacion,
como en los siguientes ejemplos:
20+32 hora-1 hora*60+minuto minuto/60 5**2
(5+9)*(15-7) / realiza operacion de division
// realiza operacion de division entera
Python - Expresiones
Es una combinacion de valores, variables y operadores.
Un valor por si mismo es considerado una expresion, asi
como una variable, por lo que lo siguiente son
expresiones legales (en el modo interprete):

Pero en un script, una expresion por si misma no hace


nada.
Orden de operaciones
Cuando mas de un operador aparece en un expresion, el orden de
evaluacion depende de las reglas de precedencia. Para operadores
matematicos, Python sigue la convencion matematica. El acronomio
PEMDAS es una manera facil para recordar las reglas:
Parentesis tiene la precedencia mayor y se puede utilizar para evaluar
expresiones en el orden requeriso. 2*(3-1)
Exponenciacion tiene la siguiente mayor precedencia, tal que 2**1 +
1 es 3 y no 4 y 3*1**3 es 3 y no 27.
Multiplicacion y Division tienen el mismo nivel de precedencia, la cual
es mayor que Adicion y Substraccion que tienen el mismo nivel de
precedencia.
Operadores con al misma precedencia son evaluados de izquierda a
derecho. Tal que la expresion 5-3-1 es 1, no 3 por que 5-3 ocurre
primero y luego 1 es substraido de 2. En caso de tener dudas utilizer
parentesis.
Python operador modulo
El operador modulo trabaja sobre enteros y genera el residuo
cuando el operando es dividido por el segundo. En Python, el
operador modulo esta dado por el signo porcentaje (%). La
sintaxis es igual como para otros operadores:

Es muy util ya que con el se puede verificar si un numero es


divisible por otro si x % y es cero, entonces x es divisible por y.
Tambien se puede extraer el digito de la derecha o los digitos de
un numero. Por ejemplo x % 10 genera el digito hacia la derecho
de x (en base 10). De manera similar x % 100 genera los ultimos
dos digitos.
Python operacion de caracteres
El operador + trabaja con caracteres, pero no en el
sentido matematico. En lugar realiza una
concatenacion, la cual significa unir los caracteres
uniendolos de fin a fin. Por ejemplo
Python preguntando al usuario por
una entrada
Algunas veces es deseable tomar un valor para una
variable por el usuario via teclado. Python proporciona
una funcion llamada input para tomar una entrada
desde el teclado. Cuando esta funcion es llamada, el
programa se detiene y espera a que el usuario escriba
algo. Cuando el usuario presiona Enter, el programa
continua e input regresa lo que el usuario escribio como
un character.
Python function input
Tambien se puede preguntar al usuario el tipo de
informacion que interesa le responda. La secuencia \n al
final de la pregunta representa una nueva linea. Por eso
la entrada del usuario aparece debajo de la pregunta.
Python function input
Si se require obtener un entero de un usuario desde el
teclado, se puede utilizar la funcion int()

Pero si el usuarion escribe algo diferente a un entero, se


tiene un error
Python - recomendaciones
A medida un programa se hace mas grande, es dificil de leer o
entender, por es o es conveniente colocar comentarios con el
simbolo #, tambien es recomendable colocar nombre a las
variables que representan lo que significan.
Python

Ejecuciones condicionales
Python Expresiones booleanas
Es una expresion que es verdadera o falsa. El siguiente
ejemplo utiliza el operador ==, el cual compara dos
operandos y produce True si son iguales y False de otra
manera:

True y False son valores especiales que pertenecen al


typo booleano (bool)
Python - Comparadores
El operador == es uno de los operadores comparadores,
los otros son:
Python Operadores logicos
Hay tres operadores logicos: and, or, y not. La
semantica(significado) de estos operadores es similar al
significado en ingles. Por ejemplo
Python Ejecucion condicional
El enunciado condicional da la habilidad de revisar
condiciones y cambiar el comportamiento del programa
de acuerdo a ello.
La forma mas simple es el enunciado if:
X=4

Si
X>0

Print(x es
No positivo)
Python Ejecucion condicional
La expresion booleana luego del enunciado if es llamada la
condicion. Se finaliza el enunciado if con el caracter doble
punto(:) y las lineas luego del enunciado estan indentadas. Si la
condicion logica es verdadera, entonces el enunciado indentado
se ejecuta. Si la condicion logica es falsa, el enunciado
indentado no es llevado a cabo.
El enunciado if tiene la misma estructura como la definicion de
funciones o los lazos for. El enunciado consiste de una linea de
encabezado que finaliza con el caracter doble punto (:) seguido
por un bloque indentado. Enunciados como estos son llamados
enunciados compuestos por que encajan mas de una linea
Python Ejecucion condicional
No hay limite para el numero de enunciados que
puedan aparecer en el cuerpo, pero deben ser los
menos posibles. Ocasionalmente, es util tener un
cuerpo sin condicionales. En tal caso puede escribir el
enunciado pass, la cual no realiza accion alguna.
Python - Ejecucin Alternativa
Una segunda forma del enunciado if es una ejecucin
alternativa, en el cual hay dos posibilidades y la
condicin determina cual es ejecutada.

No Yes
X%2 == 0

Print(x es Print(x es
impar) par)
Python Condiciones encadenas
En algunas ocasiones hay mas de dos posibilidades y se
necesita mas de dos caminos. Una de las maneras de
expresar un calculo como esta es una condicin
encadenada:

Elif es una abreviacin de else if.


Python Condicionales anidados
Un condicional tambin se puede colocar dentro de
otro. Podramos haber escrito el ejemplo anterior como:
Python Capturando excepciones
utilizando Try and except
Al utilizar la function input() puede resultar accidentado si el usuario
coloca un tipo de valor no esperado.

Cuando se coloca lo anterior en el interpretador Python encontramos


como respuesta un error. Al trabajar con un script, al ejecutarlo se
detiene inmediatamente y no continua con el siguiente enunciado en
el.
Python Capturando excepciones
utilizando Try and except
Aqu un programa para convertir una temperatura en
grados Fahrenheit a grados Celsius:

Si ejecutamos este programa y se la da un valor


invalido, simplemente falla y muestra un mensaje de
error:
Python Capturando excepciones
utilizando Try and except
Hay una ejecucin condicional para construir una
estructura dentro de Python para manejar estos tipos
de errores esperados e inesperados llamada
try/except. La idea de try y except es que se sabe que
una secuencia de enunciados podran tener algn
problema y se requiere que algunos enunciados
adicionales se ejecuten si este problema ocurre. Estos
enunciados adicionales (en el bloque de except) son
ignorados si no hay error. El programa anterior se pudo
escribir:
Python Evaluacion tipo breaker
de expresiones logicas
Cuando Python esta procesando expresiones logicas tal
como x >= 2 and (x/y) > 2, lo evalua de izquierda a
derecha. Por la definicion de and, si x is menor que 2, la
expresion x >= 2 es Falsa y la epxresion entera es falsa
sin importar si (x/y) > 2 es verdadera o falsa (True or
False).
Cuando Python detecta que no hay ganancia en evaluar
el resto de una expresion logica, detiene su evaluacion
y no realiza el calculo de la expresion logica restante.
Cuando la evaluacion de una expresion logica se
detiene por que el resultado del todo ya es conocido, es
conocido como la evluacion corto-circuito.
Python Evaluacion tipo breaker
de expresiones logicas
Mientras esto esta bien, es importante como patron guardian. Considere la
secuencia de codigo en el interpretador Python:

El tercer calculo falla por que Python fue evaluado (x/y) y y fue cero el cual causa
un error. Pero en el Segundo ejemplo no falla por que la primer parte de la
expresion x >= 2 evaluada a Falso tal que (x/y) no fue ejecutada debido a la regla
del corto circuito y no hubo error.
Python Evaluacion tipo breaker
de expresiones logicas
Podemos construir la expresion logica para colocar
estrategicamente un evaluacion guardiana justo antes
de la evaluacion que podria causar un error:
Python

FUNCIONES
Python - Funcion
Una funcion es una secuencia nombrada de enunciados que
desarrollan un calculo. Cuando se define una funcion, se especifica
el nombre y la secuencia de enunciados. Luego, puede llamar a
la function por su nombre. Ya se ha visto ejemplos de llamados de
funciones:

El nombre de la funcion es type. La expresion entre parentesis es


llamada argumento de la funcion. El argumento es un valor o
variable que le damos a la funcion como entrada de la function. El
resultado, para la funcion type(), es el typo del argumento.
Es comun decir que una funcion toma un argumento y regresa
un resultado. El resultado es llamado el valor retornado.
Python funciones construidas
dentro de Python
Python proporciona un numero importante de funciones
contruidas en el que podemos utilizar sin la necesidad de
proporcionar la definicion de la funcion. Los creadores de
Python escribieron un conjunto de funciones para
resolver los problemas mas comunes e incluirlas dentro
de Python para que se puedan utilizar.

Las funciones max() y min() nos da los valores mas


grandes y menores en una lista, respectivamente:
Python funciones construidas
dentro de Python
La funcion max() nos dice el mayor caracter en la
cadena (la cual nos regresa la letra u) y la funcion
min() nos muestra el menor caracter el cual nos regresa
un espacio.

Otra funcion comun construida dentro de Python es la


funcion len() la cual nos dice cuantos elementos estan
dentro de su argumento. Si el argumento de len es una
cadena (de caracteres), regresa el numero de caracteres
en la cadena(de caracteres).
Python Funciones de conversion
de tipo
Python tambien proporciona funciones contruidas dentro
que convierten un tipo a otra. La funcion int() toma
cualquier valor y lo convierte a un entero, si se puede, o
da mensaje de error de otra forma.

Int() puede convertir valores flotantes a enteros, pero no


se puede redondear; vota la parte fraccion.
Python Funciones de conversion
de tipo
La function float() convierte enteros y cadenas en
numeros tipo flotantes.

Finalmente, str() convierte su argumento en una


cadena(string):
Python numeros aleatorios
Dada las mismas entradas, la mayoria de los programas de
computadoras generan la misma salida cada vez, de tal manera que se
dicen que son deterministicas. Para algunas aplicaciones, se requiere
que la computadora se impredecible. Juegos de videos son un ejemplo.

Hay programas que generan numeros pseudoaleatorios, que no son


realmente aleatorios, pero que al verlos es dificil distinguirlos de
numeros aleatorios.

El modulo random proporciona funciones que generan numeros


pseudoaleatorios.
Python numeros aleatorios
La funcion random retorna un numero flotante aleatorio
entre 0.0 y 1.0 (incluyendo 0.0 pero no 1.0). Cada vez
que se llama random, se obtiene el siguiente numero a lo
largo de series. Para ver un ejemplo,
Python numeros aleatorios
La funcion random es solamente una de muchas
funciones de las cuales maneja numeros aleatorios. La
function randint toma los parametros inferior y superior y
retorna un numero entero entre inferior y superior
(incluyendo ambos).
Python numeros aleatorios
Para escoger un elemento de una secuencia de manera aleatoria,
se puede utilizar choice().

El modulo random tambien proporciona funciones para generar


valores aleatorios desde distribuciones continuas incluyendo la
Gausiana, exponenecial, gamma y otras mas.
Python funciones matematicas
Python dispone de un modulo matematico que
proporciona las funciones matematicas mas familiares.
Antes de poder utilizar este modulo, se debe importarlo.

Este enunciado crea un modulo objeto llamado math. Si


se da el comando print(math), se obtiene informacion
sobre el modulo.
Python funciones matematicas
El modulo math contiene las funciones y variables
definidas en el. Para acceder a una de las funciones, se
debe especificar el nombre del modulo y el nombre de la
funcion , separado por un punto. Este format es llamado
notacion punto (dot notation).
Python funciones matematicas
El primer ejemplo calcula logaritmo base 10 de la seal
de razon de ruido. El modulo math proporciona la funcion
log() que calcula el logaritmo base e.

La expression math.pi obtiene la variable pi desde el


modulo math. El valor de esta variable es una
aproximacion de , con una presicion de 15 digitos
despues del punto.
Python adicionando nuevas
funciones
Tambien es posible adicionar nuevas funciones. Una
definicion de funcion especifica el nombre de una
nueva funcion y la secuencia de enunciados que ejecuta
cuando la funcion es llamada.
Una vez definamos la funcion, se puede reutilizarla una y
otra vez a lo largo del programa.
Python agregando nuevas
funciones
def es una palabra clave que indica que esta es una definicion de
funcion. El nombre de la funcion es funcion_estudiante. Las reglas
para el nombre de las funciones son las mismas que para las
variables: letras, numeros, y algunas marcas de puntuacion son
legales, pero el primer caracter no puede ser un numero. No se
puede utilizar una de las palabras claves o reservadas de Python
como el nombre de una funcion, y se deberia evitar tener una
variable y una function con el mismo nombre.

El parentesis vacio al final del nombre de la funcion significa que


no toma ningun argumento. Posteriormente se veran funciones
que toman valores como argumentos.
Python agregando funciones
La primer linea de la funcion se llama encabezado; el
resto de la funcion se llama cuerpo. El encabezado
finaliza con un doble punto y el cuerpo debe ser
indentado. Por convencion, la indentacion es siempre
cuatro espacios libres. El cuerpo puede contener
cualquier cantidad de enunciados.

Los caracteres en el enunciado print esta entre comillas.


Se puede utilizar comillas o doble comillas para hacer lo
mismo.
Python agregando funciones

Una vez se define una funcion, se puede utilizar dentro


de otra.
Python - funciones
A fin de asegurarse que una funcion esta definida previo a su
uso, se debe saber el orden en el cual los enunciados son
ejecutados, el cual es llamado flujo de ejecucion.
La ejecucion siempre comienza con el primer enunciado del
programa. Los enunciados son ejecutados uno a la vez, en orden
superior a inferior.
Las definiciones de funciones no alteran el flujo de ejecucion del
programa, pero los enunciados dentro de la funcion no se ejectan
hasta el llamado de la funcion.
Una funcion es un desvio en el flujo de ejecucion. En lugar de ir al
proximo enunciado, el flujo salta el cuerpo de la funcion, ejecuta
todos los enunciados, y luego regresa a continuar donde estaba.
Python- funciones, parametros y
argumentos
Una funcion puede llamar a otra function, por eso es
importante no leer siempre el programa de arriba hacia
abajo, sino que siguiendo el sentido de flujo de ejecucion.

Algunas de las funciones dentro de Python que se han


visto requieren argumentos. Por ejemplo, math.sin tiene
un numero como argumento. Algunas funciones toman
mas de un argumento, por ejemplo math.pow toma dos,
la base y el exponente.
Dentro de la funcion, los argumentos son asignados a
Python- argumentos y parametros

La funcion anterior asigna el argumento a un parametro


llamado bruno. Cuando la funcion es llamada, imprime el
valor del parametro (lo que sea) dos veces.
La funcion trabaja con cualquier valor que se pueda
imprimir.
Python-funciones, parametros y
argumentos
Las mismas reglas de composicion que se aplican a las
funciones construidas dentro de Python tambien aplican
para las funciones definidas por el usuario, de lta manera
que podemos utilizer cualquier tipo de expresion como
argumento para imprimir_dos_veces()

Se puede utilizar una variable como argumento.


Python - funciones
Las funciones pueden retornar un valor como ser
math.sin(numero), si el valor retornado no se almacena
en alguna variable, entonces desvanece.
Las funciones pueden no retornar un valor, se llaman
funciones vacio. Pueden realizer una accion pero no
retornar un valor que podamos almacenar como ser
print()
Python funciones
Para retornar un valor desde una funcion, utilizamos el
enunciado return en la funcion. Por ejemplo,

Cuando el enunciado print se ejecuta, imprime el valor


asignado a la variable x, que es el valor 8 retornado por
la function sumar_dos
Python - funciones
Hay varias razones por las cuales utilizar funciones:
Al crear funciones, se asigna un nombre a un grupo de
enunciados, lo cual hace mas facil de leer, entender, depurar
un programa.
Las funciones pueden hacer un programa mas pequeo al
eliminar codigo repetitive. Si es requerido realizar algun
cambio, solo se realiza una vez.
Dividir programa en funciones, permite depurarlo en partes
por separado y luego reagruparlo.
Las funciones bien elaboradas son comunmente utilizar para
muchos programas, una vez que se escribe y se depura, se
puede reutilizar en diferentes programas.
Python

Iteraciones
Python Actualizando variables
Un patron comun en enunciados de asignamiento es un
asignamiento que actualiza una variable donde el
Nuevo valor de la variable depende del anterior.

Lo anterior significa, tomar el valor actual de x, sumarle


1, y luego actualizar x con el nuevo valor.
Si se actualiza una variable que no existe, se obtiene un
error, por que Python primero evalua el lado derecho y
luego asigna este valor a x:
Python Actualizando variables
Antes de actualizar una variable se debe inicializar,
usualmente con un simple asignamiento.
Python enunciado while
Usualmente se requiere que se realizen tareas repetitivas.
Una forma de iteracion en Python es el enunciado while.

Se puede leer el enunciado while, como si fuera en ingles, Mientras


n sea mayor que 0, despliegue el valor de n y luego reduzca el valor
de n en 1. Cuando llegue a cero, salirse del enunciado while y
despliegue la palabra Despegue!
Python enunciado while
El flujo de ejecucion del enunciado while es:
Evaluar la condicion, generando True o False.
Si la condicion es False, salir del enunciado while y
continuar con la ejecucion del siguiente enunciado.
Si la condicion es True, ejecutar el cuerpo y regresar al
paso 1.

Este tipo de flujo se conoce como lazo(loop) porque el


tercer paso regresa a la cima. Cada vez se ejecuta el
cuerpo del lazo, llamamos a un iteracion. Para el lazo del
Python enunciado while
El cuerpo del lazo deberia cambiar el valor de una o mas
variables tal que eventualmente la condicion llega a ser falsa
y el lazo termina. Se llama a la variable que cambia cada vez
que el lazo se ejecuta y controla la finalizacion del lazo la
variable de iteracion. Si no hay variable de iteracion, el lazo
se repitira para siempre, resultando en un lazo infinito.

Algunas veces no se sabe cuando se debe finalizer un lazo


hasta que se encuentra en el cuerpo del lazo. En ese caso se
puede escribir un lazo infinito a proposito y luego utilizar el
enunciado break para salir del lazo.
Python lazo infinito, break
El siguiente lazo es un lazo infinito por que la expresion del
enunciado while es simplemente una constante logica True.

Si se corre el codigo anterior, ocurrira que nunca terminara y


abra que cerrar la aplicacion Python para poder normalizar. El
programa podria correr hasta que se consuma la energia. Para
hacer util un programa como el anterior, se puede utilizar el
comando break.
Python lazo infinito, break

Es un lazo infinito, hasta que se escribe la palabra hecho.


Cada vez que corre el cuerpo del lazo, compara la entada
line con la cadena hecho, en caso de ser igual finaliza y
continua con los siguientes enunciados, en caso contrario
vuelve a consultar por una palabra.
Python - finalizer iteraciones con
continue
Algunas veces es requerido detener la iteracion actual y
saltar hacia la siguiente.
Python lazos definidos utilizando
for
Algunas veces se require iterar sobre un conjunto de
cosas, como ser una lista de palabras, las lineas de un
archive o una lista de numeros. Cuando se dispone de
una lista de cosas atraves de las cuales iterar, se puede
construir un lazo definido utilizando el enunciado for. Se
llama a while un lazo indefinido por que simplemente
itera hasta que una condicion sea False mientras que el
lazo for itera sobre un conjunto de elementos conocidos,
por lo que hace tantas iteraciones como hay elementos
en el conjunto.
Python-lazo de iteracin definida for
En el ejemplo siguiente la variable de iteracin es
amigo, la variable amigo cambia por cada iteracin del
lazo y controla cuando el ciclo for se completa. La
variable de iteracin da pasos a travs de cada
elemento (cadena de caracteres en este caso)
almacenados en la variable amigos.
Python patrones de lazo
Los ciclos (lazos) for y while son generalmente
constituidos por:
Inicializacion de una o mas variables antes de comenzar
el lazo.
Ejecutar algn tipo de calculo sobre cada tem en el
cuerpo del ciclo, posiblemente las variables en el
cuerpo del lazo.
Revisar las variables resultantes cuando el lazo
concluye.
Python- ciclos de maximos y
minimos
Para encontrar el mayor valor en una lista o secuencia,
se puede contruir el siguiente ciclo:
Python- ciclos de maximos y

Para calcular el menor numero, el codigo es muy similar


con un pequeo cambio:
Python

Caracteres
Python una cadena(string) es una
secuencia
Una cadena es una secuencia de caracteres . Se puede
acceder los caracteres uno a la vez con el operador [].

El Segundo enunciado extrae el caracter en la posicion


de indice 1 de la variable fruta y lo asigna a la variable
letra.
La expresion en los corchetes es llamado indice. El
indice indica cual caracter en la secuencia se quiere (de
ahi el nombre).
Python - String
La primer letra de banano es b y no a. Pero Python, el indice
esta un atrasado con respecto al inicio de la cadena de
carateres y la compensacion de la primer letra es cero.

B A N A N O

[0] [1] [2] [3] [4] [5]

El valor de un indice debe ser un entero


Python - Encontrando la longitude
de una cadena de caracteres
(string) utilizando len
len una funcion construida dentro de Python que retorna
el numero de caracteres en una cadena de
caracteres(string):
Python Recorrido a traves de una
cadena de caracteres con un lazo
Recorrido es llamado al proceso patron en la cual se
realiza calculos sobre caracteres de una cadena de
caracteres, uno a la vez.
Python String, rodajas
Un segemento de una cadena de caracteres es llamado
rodaja(slice). Seleccionando una rodaja es similar a
seleccionar un caracter:

El operador [n:m] retorna la porcion de la cadena de


caracteres desde el caracter en posicion n hasta el
caracter en posicion m, incluyendo el primero pero
Python string, rebanadas (rodajas)
Si se omite el primer indice(antes del doble punto), la
rodaja comienza al inicio de la cadena de caracteres. Si
se omite el segundo indice , la rodaja va al final de la
cadena de caracteres:

Si ambos indices son iguales, el resultado es una cadena


de caracteres vacia.
Python Las cadenas de caracteres
son inmutables
A veces se pretende utilizar el operador [] en lado izquierdo
de una asignacion, con la intencion de cambiar un caracter
de una cadena de caracteres. Por ejemplo:

La razon del error es que las cadenas de caracteres son


inmutables, la cual significa que una cadena de caracteres no
se puede cambiar. Lo mas que se puede hacer es crear una
nueva cadena de caracteres que es una variacion del original
Python ciclos y conteos
El siguiente programa cuenta el numero de veces la letra a aparece en
una cadena de caracteres.

El programa muestra otro patron de calculo llamado contador. La


variable conteo es inicializada con 0 y luego es incrementada cada vez
una a es encontrada. Cuando el ciclo finaliza, conteo contiene el resultado,
el total de numero de a.
Python operador in
La palabra in(en) es un operador booleano que toma dos
cadenas de caracteres y retorna True si el primero
aparece como un subcaracter en el segundo:
Python comparacion de cadena de
caracteres
El operador comparador trabaja sobre cadena de
caracteres. Para ver si dos cadenas de caracteres son
iguales:

Otras operaciones son utiles para colocar palabras en


orden alfabetico:
Python metodos para cadenas de
caracteres
Las cadenas de caracteres (strings) son ejemplos de
objetos de Python. Un objeto contiene ambos datos (la
cadena de caracteres por si misma) asi como metodos,
los cuales son efectivamente funciones las cuales estan
construidas dentro del objeto y estan disponibles para
cualquier instancia del objeto.

Python tiene una funcion llamada dir que enlista los


metodos disponibles para un objeto. La funcion type
muestra el tipo de un objeto y la funcion dir muestra los
metodos disponibles
Python metodos para cadenas de
caracteres
Python metodos para cadena de
caracteres
Llamar un metodo es similar a llamar un function toma
un argumento y retorna un valor pero la sintaxis es
diferente. Se llama al metodo anexando el nombre del
metodo al nombre de la variable utilizando el punto como
delimitador.
Por ejemplo, el metodo upper toma una cadena de
caracteres y retorna una nueva cadena de caracteres con
todas las letras en mayusculas:
En lugar, de la sintaxis de funcion upper(palabra), utiliza
la sintaxis de metodo palabra.upper()
Python Metodos de cadenas de
caractere
Esta forma de notacion especifica el nombre del metodo,
upper, y el nombre de la cadena de caracteres al cual se
aplicara, palabra. El parentesis vacio indica que este
metodo no toma argumento.
El llamado de un metodo se conoce como invocacion;
en este caso, se deberia decir que se esta invocando
upper sobre palabra.

A medida se busca, hay un metodo de cadena de


caracteres llamado find que remarcablemente similar a la
Python Metodos de caracteres
Algunos ejemplos de aplicacin del metodo find() se
muestran a conticuacion:
Python - operador %
El operador %, nos permite construir cadenas de caracteres,
reemplazando partes de la cadena de caracteres con datos almacenados
en variables. Cuando es aplicado a enteros, % es el operador modulo. Pero
cuando el primer operando es una cadena de caracteres, % es el operador
formato.
El primer operando es la cadena de caracteres formato, la cual contiene
uno o mas secuencias de formato que especifica como el segundo
operando es formateado. El resultado es una cadena de caracteres.

Por ejemplo, el formato secuencia %d significa que el segundo operando


debera ser formateado como un entero (d se mantiene para decimal):
Python operador %
Una secuencia de formato puede aparecer en cualquier lugar
dentro de una cadena de caracteres, tal que puede encajar un
valor en una oracion:

El siguiete ejemplo utiliza %d para formatear un entero, %g


para formatear un numero flotante, y %s para formatear una
cadena de caracteres:

Se puede leer mas sobre esta herramienta en


docs.python.org/lib/typesseq-strings.html.
Python

Archivos
Python Abriendo archivos
Cuando se requiere leer o escribir un archivo, primero se
debe abrir el archivo. Al abrir el archivo se comunica con
el Sistema operative el cual sabe donde estan los datos
para cada archivo almacenado. Cuando se abre un
archivo, se pregunta al sistema operativo encontrar el
archive por el nombre y asegurarse que exista. En este
ejemplo, se abre el archivo mbox.txt el cual deberia ser
almacenado en el mismo folder que en el que se empezo
Python.
Python Abriendo archivos
Si open es ejecutado satisfactoriamente, el sistema
operativo retorna un manejador de archivo. El
manejador de archivo no es actualmente los datos
contenidos en el archivo, sino en lugar es un
manejador que se puede utilizer para leer los datos. Se
da un manejador siMel archivo requerido existe y se tiene
open (abrir)
los permisos apropiados
read(leer)
a
n
para leer el archivo.
write(escribir) e
close(cerrar) j
a
d
o
r
Programa
Python Abriendo archivos
Si el archivo no existe, open(abrir) fallara con trazable y
no se obtendra una manejador para acceder al contenido
del archivo.

Se puede utilizar try y except para manejar de mejor


manera con la situacion en la que se intenta abrir un
archivo que no existe.
Python archivos de textos y lineas
Un archivo de texto se puede considerar como una secuencia de lineas, asi como
Python se puede considerar una secuencia de caracteres. Por ejemplo,

From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008Return-Path:


<postmaster@collab.sakaiproject.org>Received: from murder (mail.umich.edu
[141.211.14.90]) by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; Sat, 05
Jan 2008 09:14:16 -0500X-Sieve: CMU Sieve 2.3Received: from murder ([unix socket])
by mail.umich.edu (Cyrus v2.2.12) with LMTPA; Sat, 05 Jan 2008 09:14:16
-0500Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79]
by flawle .

El archivo entero de interaccion de correos esta disponible en


www.py4inf.com/code/mbox.txt y una version corta del archivo en
www.py4inf.com/code/mbox-short.txt. Estos archivos estan en formato estandar
para un archivo conteniendo multiples mensajes.
Python - archivos de textos y lineas
Para romper el archivo en lineas, hay un caracter
especial que representa el final de linea llamado
caracter nuevalinea.
En Python, se representa el caracter nuevalinea con una
barra invertida y el caracter n. Aunque parezca como dos
caracteres, es en realidad un solo caracter.
Python - Lectura de archivos
Mientras el manejador de archivos no contiene los
datos para el archivo, es facil construir un ciclo for para
leer a traves de y contar cada linea en un archivo:
Python lectura de archivos
Si se sabe que el archivo es relativamente pequeo
compara con el tamao de la memoria, se puede leer el
archivo entero como una cadena de caracteres utilizando
el metodo read sobre el manejador de archivo.
Python buscando en un archivo
Cuando se busca en un archivo, se puede leer a traves
de un archivo, ignorando la mayoria de las lineas y
procesando solamente las lineas las cuales cumplen
cierto criterio. Se puede combinar este patron de lectura
para un archivo con metodos de cadenas de caracteres
para construir mecanismos de busqueda.
Python buscando en un archivo
Para hacer que no aparezca el espacio entre lineas, se
puede quitar el ultimo caracter (\n) o tambien utilizar el
metodo rstrip, el cual retira los espacios en blanco hacia
la derecha al final de la linea.
Python escribiendo sobre archivos
Para escribir un archivo, se debe abrir en modo w como
un segundo parametron

Se puede escribir sobre el archivo utilizando el metodo


write
Python

Listas
Python Lista
Asi como una cadena de caracteres, Una lista es una
secuencia de valores. En una cadena de caracteres, los
valores son caracteres; en una lista, pueden ser de
cualquier tipo. Los valores en una lista son llamados
elementos o algunas veces tems.

Hay muchas maneras de crear una nueva lista. La


manera mas simple is encerrando los elementos entre
parentesis []:
Python - listas
La siguiente lista contiene una cadena de caracteres, un
flotante, un entero, y otra lista:

Una lista dentro de otra lista esta anidada.


Una lista que no contiene elementos es llamada una lista
vacia; se puede crear una con parentesis-corchetes
vacios, [].
Python - las listas son mutables
La sintaxis para acceder a los elementos de una lista es
el mismo que para acceder a los caracteres de una
cadena de caracteres - el operador []. La expresion
dentro de los corchetes espercifica el indice. Se debe
recordar que el indice comienza en 0:

A diferencia de cadenas de caracteres, las listas son


mutables por que se puede cambiar el orden de los items
en una lista o reasignar un item en una lista. Cuando el
Python las listas son mutables

El elemento 1th de numeros, el cual era 123, ahora es 5.


Se puede considerar una lista como una relacion entre
indices y elementos. Esta relacion es llamado mapeo;
cada indice mapea a uno de los elmentos.
Python listas, operador in
Los indices de una lista trabajan de la misma manera que
los indices de una cadena de caracteres:
1. Una expresion de un entero puede ser utilizada como
un indice.
2. Si lee o escribe un elemento que no existe, obtiene un
IndexError.
3. Si un indice tiene un valor negativo, cuenta en
retroceso desde el final de la lista.
El operador in tambien trabaja sobre listas.
Python recorrido de una lista
La manera mas comun para recorrer los elementos de
una lista es con un ciclo for. La sintaxis es la misma como
para una cadena de caracteres:

Si se requiere reescribir o actualizar elementos, se


necesitan indices. Una manera comun de hacerlo es
combinar las funciones range y len:
Python recorrido de una lista
El ciclo recorre la lista y actualiza cada elemento. len
retorna el numero de elmentos en la lista. range retorna
una lista de indices desde 0 a n-1, donde n es la
longitude de la lista. Cada iteracion a traves del ciclo el
lazo I obtiene el indice del siguiente elemento. El
enunciado de asignacion en el cuerpo utiliza i para leer el
valor antiguo del elemento y para asignar el nuevo valor.

Un ciclo for sobre una lista vacia nunca ejecuta el cuerpo:


Python listas, operaciones
El operador + concatena listas:

Similarmente el operador * repite una lista un numero de


veces dadas:
Python, Listas, rebanadas
El operador [m:n] tambien funciona sobre listas:

Si se omite el primer indice, la porcion comienza desde el


primer elemento con indice 0. Si se omite el segundo, la
porcion es hasta el final. Por lo que si se omiten ambos la
porcion es una copia de la lista entera.
Python Listas, rebanadas
Un operador [m:n] en el lado izquierdo de una asignacion
pued actualizar multiples elementos:

Antes de hacer lo anterior comumente es conveniente


hacer una copia de la lista original.
Python metodos de listas
Python proporciona metodos que actuan sobre listas. Por
ejemplo, append adiciona un nuevo elemento al final de
una lista:

t2 es inalterado
extend toma una lista como un argumento y adiciona
todos los elmentos:
Python metodos de listas
Sort arregla los elmentos de la lista desde el menor al
mayor:

La mayoria de los metodos de listas son vacios,


modifican la lista y retornan None. Si se escribe
accidentalmente t = t.sort(), t recibe valor None.
Python metodos de listas
Hay varias maneras de borrar elementos de una lista. Si
se sabe el indice del elemento que se quiere, se puede
utilizar pop:

pop modifica la lista y regresa el elemento que fue


removido. Sino se proporciona el indice, borra y retorno
el ultimo elemento. Si no se necesita el valor removido,
se puede utilizar el operador del.
Python metodos de listas
Si se conoce el elemento que se require remover (pero no
el indice), se puede utilizar remove (regresa un valor
None):

Para remover mas de un elemento, se puede utilizar del


con un indice de porcion:
Python listas y funciones
Hay un numero de funciones construidas que se pueden
utilizar sobe listas para que permitan ver rapidamente a
traves de una lista si tener que escribir un ciclo:
Python Listas y funciones
Programa para calcular el promedio sin utilizar una lista:
Python Listas y funciones
Programa de calculo de un promedio utilizando listas
Python listas y cadenas de
caracteres
Una cadena de caracteres es una secuencia de
caractares y una lista es una secuencia de valores, pero
una lista de caracteres no es lo mismo como una cadena
de caracteres. Para convertir desde una cadena de
caracteres a una lista de caracteres, se puede utilizer list:
Python listas y cadenas de
caracteres
La funcion list rompe una cadena de caracteres en letras
individuales. Si se require romper cadenas de caracteres
en palabras, se puede utilizar el metodo split.

Se puede llamar split con un argumento opcional llamado


delimitador que especifica cual de los caracteres utilizar
como separador de palabras. La funcion join hace lo
inverso.
Python

Diccionarios
Python Diccionario
Un diccionario es como una lista, pero mas general. In
una lista, las posiciones (indices) tienen que ser enteros;
en un diccionario los indices pueden ser (casi) cualquier
tipo.
Se puede considerer un diccionario como un mapeo entre
un conjunto de indices ( los cuales son llamados
llaves(keys)) y un conjunto de valores. Cada uno mapea
a un valor. La asociacion de una llave y un valor es
llamado par llave-valor o algunas veces un item.
Como ejemplo, se puede construir un diccionario que
mapea palabras de Ingles a Espaol, de tal manera que
Python - Diccionarios
La funcion dict crea un nuevo diccionario sin items.
Porque dict es el nombre de la funcion construida dentro
de Python, se deberia de evitar utilizarla como nombre
de variable.

Los corchetes {} representan un diccionario vacio. Para


adicionar items al diccionario, se puede utilizar los
corchetes [].

Esta linea crea un item que mapea de la llave one a un


Python - diccionarios
Se puede crear un nuevo diccionario con tres items:

Pero al imprimirlo se observa arreglado en diferente


orden. De hecho, si se vuelve a escribir puede ser que se
obtenga un resultado diferente. En general, el orden de
los items en un diccionario es impredecible.
Esto no representa un problema debido a que los
elementos de un diccionario nunca estan indexados con
indices de numeros enteros. En lugar, se utiliza las llaves
para revisar el valor correspondiente:
Python - diccionarios
La llave two siempre mapea a el valor dos, de tal
manera que el orden de los items no afecta.
Si la llave no esta en el diccionario, se obtiene un error.

La funcion len trabaja sobre diccionarios; retorna el


numero de pares llave-valor:
Python - diccionarios
El operador in trabaja sobre diccionarios; menciona si
algo aparece como una llave en el diccionario.

Para revisar que algo aparece como un valor en un


diccionario, puede utilizer el metodo values, el cual
retorna los valores como una lista, y luego utilizer el
operdor in:
Python Diccionario como un
conjunto de contadores
Suponga se da una cadena de caracteres y se quiere contar cuantas
veces cada letra aparece. Hay varias maneras que se podria hacer:
1. Se podria crear 26 variables, una para cada letra del alfabeto. Luego
recorrer la cadena de caracteres y, para cada caracter, incrementar
el correspondiente contador, probablemente una cadena condicional.
2. Se podria crear una lista de 26 elementos, luego convertir cada
caracter a un numero (utilizando la function ord), utilizer el numero
como un indice dentro de la lista, e incrementar el Contador
apropiado.
3. Se podria crear un diccionario con caracteres como llaves y
contadores como valores correspondientes. La primera vez que se
vea un caracter se puede adicionar un item al diccionario. Luego
incrementar el valor de un item existente.
Python - diccionarios
Una implementacion es una manera de llevar a cabo un calculo;
algunas implementaciones son mejores que otras. Por ejemplo,
un ventaja de la implementacion de un diccionario es que no se
sabe de antemano cual letra aparece en la cadena de caracteres
y solamente se hace el espacio para las letras que aparecen.

Lo anterior se conoce como histograma.


Python - diccionarios
Los diccionarios tiene un metodo llamado get que toma
una llave y un valor por defecto. Si la llave aparece en el
diccionario, get retorna el valor correspondiente; de otra
forma retorna el valor por defecto.

Se puede utilizar get para escribir el ciclo histograma de


manera mas consistente.
Python

Tuples
Python Tuples
Un tuple es una secuencia de valores asi como una lista.
Los valores almacenados en un tuple puede ser de
cualquier tipo, y son indexados por enteros. La diferencia
importante es que los tuples son inmutables. Los tuples
son tambien comparables y hashable de tal manera
que se puede ordenarlos y utilizarlos como llaves en los
diccionarios. Se manticamente es una lista de valores
separados por coma:

Aunque no es necesario, es comun encerrar los tuples


entre parentesis para ayudar a identificarlos cuando se
Python - tuples
Para crear un tuple con un solo elemento, se tiene que
incluir la coma final:

Otra manera de construir un tuple es utilizando la funcion


construida en Python tuple. Si argumento, crea un tuple
vacio:
Python - tuples
Si el argumento es una secuencia (cadena de caracteres,
lista, o tuple), el resultado de llamar tuple es un tuple con
los elementos de la secuencia:

Ya que tuple es el nombre de un constructor, no se


deberia utilizar como nombre de una variable.
La mayoria de los operadores tambien trabajan sobre los
tuples. El operador [indice] indica un elemento:
Python - tuples
Y el operador de porcion selecciona un rango de
elementos.

Pero si se intenta modificar uno de los elementos del


tuple, se encuentra un error:
Python - tuples
No se puede modificar los elementos de un tuple, pero se puede
reemplazar un tuple con otro:

Comparacion de tuples
El operador comparador trabaja con tuples y otras secuencias;
Python comienza por comparar el primer elemento de cada
cadena de caracteres. Si son iguales, va al siguiente elemento, y
asi sucesivamente, hasta encontrar elementos que difieren.
Elementos subsecuentes no son considerados.
Phyton Comparando tuples

La funcion sort trabaja de la misma manera. (La palabra


reverse es para ir en orden decreciente)
Python Tuple, asignamiento
Una de las sintaxis unicas del language Python es la
habilidad de tener un tuple en el lado izquierdo de un
enunciado de asignamiento. Esto permite asignar mas de
una variable a la vez cuando el lado izquierdo es una
secuencia.
Python tuples, asignamiento
Cuando se utiliza en el lado izquierdo del enunciado de
asignamiento, se omite el parentesis, pero el siguiente es
una sintaxis igualmente valida:

Un aplicacion particular de la asignacion de tuple es que


permite permutar los valores de dos variables en un
enunciado:
Python tuple, asignamiento
El numero de variables en el lado izquierdo y el numero
de valores sobre el derecho tiene que ser el iguales.

Mas general, el lado derecho puede ser cualquier tipo de


secuencia (cadena de caracteres, lista, o tuple). Por
ejemplo, para separar una direccin de correo en nombre
de usuario y un dominio, se podra escribir:
Python-Diccionarios y tuples
Los diccionarios tienen metodo llamado items que
returna un lista de tuples, donde cada tuple es un par
llave-valor.

En un diccionario, los items no estan en un orden


particular.
Python tuples, palabras mas
comunes