Python, Generalidades
Python, Generalidades
Generalidades de Python
Python es un lenguaje de muy alto nivel que
permite expresar algoritmos de forma casi
directa (ha llegado a considerarse
pseudocdigo ejecutable).
Se trata de un lenguaje particularmente
adecuado para la enseanza de la
programacin.
Generalidades de Python
Aprender Python antes que C permite estudiar
las estructuras de control y de datos bsicas
con un alto nivel de abstraccin.
Operadores
Operadores aritmticos
Operadores para expresiones aritmticas. El nivel de
precedencia 1 es el de mayor prioridad y el 3 el de
menor.
Operadores
Operadores aritmticos (cont.)
Ejercicios
Calcule:
a) 2 + 3 + 1 + 2
b) 2 + 3 * 1 + 2
c) (2 + 3) * 1 + 2
d) (2 + 3) * (1 + 2)
Operadores
Operadores aritmticos (cont.)
Ejercicios
Traduzca las siguientes expresiones matemticas a Python y evalalas.
Trata de utilizar el menor nmero de parntesis posible.
a) 2 + (3 (6/2))
b)
4+6
2+3
c) (4/2)5
d) (4/2)5+1
e) (3)2
f) (32)
Tipos de datos
Enteros y flotantes
Cada valor utilizado por Python es de un tipo
determinado.
Cuando se efecta una operacin, Python tiene en
cuenta el tipo de los operandos a la hora de producir el
resultado.
Tipos de datos
Enteros y flotantes (cont.)
>>> 3 / 2
1
Si deseamos obtener resultados de tipo real, deberemos usar
operandos reales. Los operandos reales deben llevar, en
principio, una parte decimal, aunque sta sea nula.
>>> 3.0 / 2.0
1.5
Tipos de datos
Enteros y flotantes (cont.)
Hay diferencias entre enteros y reales en Python ms all
de que los primeros no tengan decimales y los segundos
s.
El nmero 3 y el nmero 3.0, por ejemplo, son
indistinguibles en matemticas, pero s son diferentes en
Python. Qu diferencias hay?
Los enteros suelen ocupar menos memoria.
Las operaciones entre enteros son, generalmente,
ms rpidas.
Tipos de datos
Enteros y flotantes (cont.)
Un nmero flotante debe especificarse siguiendo ciertas
reglas.
En principio, consta de dos partes: mantisa y exponente.
El exponente se separa de la mantisa con la letra e o E.
Por ejemplo, el nmero flotante 2e3 (o 2E3) tiene
mantisa 2 y exponente 3, y representa al nmero 2 103,
es decir, 2000.
Tipos de datos
Enteros y flotantes (cont.)
El exponente puede ser negativo: 3.2e-3 es 3.2 103, o sea, 0.0032. Si un
nmero flotante no lleva exponente debe llevar parte fraccionaria.
Adems: si la parte entera del nmero es nula, el flotante puede empezar
directamente con un punto, y si la parte fraccionaria es nula, puede
acabar con un punto.
Veamos un par de ejemplos:
el nmero 0.1 se puede escribir tambin como .1;
por otra parte, el nmero 2.0 puede escribirse como 2., es decir, en ambos casos
el cero es opcional
Tipos de datos
Enteros y flotantes (cont.)
Es posible mezclar en una misma expresin datos de
tipos distintos.
Tipos de datos
Enteros y flotantes (cont.)
Python sigue una regla sencilla: si hay datos de tipos
distintos, el resultado es del tipo ms general. Los
flotantes son de tipo ms general que los enteros.
>>> 1 + 2 + 3 + 4 + 5 + 6 + 0.5
21.5
>>> 1 + 2 + 3 + 4 + 5 + 6 + 0.0
21.0
Tipos de datos
Enteros y flotantes (cont.)
Pero, atencin!, puede parecer que la regla no se
observa en este ejemplo:
>>> 1.0 + 3 / 2
2.0
El resultado debiera haber sido 2.5, y no 2.0. Qu ha
pasado? Python evala la expresin paso a paso.
Analicemos el rbol sintctico de esa expresin:
Tipos de datos
Enteros y flotantes (cont.)
Analicemos el rbol sintctico de esa expresin:
Tipos de datos
Enteros y flotantes (cont.)
La divisin es prioritaria frente a la suma, por lo que sta
se lleva a cabo en primer lugar.
La divisin tiene dos operandos, ambos de tipo entero,
as que produce un resultado de tipo entero: el valor 1.
La suma recibe, pues, un operando flotante (el de su
izquierda) de valor 1.0, y otro entero (el que resulta de la
divisin), de valor 1.
El resultado es un flotante y su valor es 2.0.
Tipos de datos
Enteros y flotantes (cont.)
Qu pasara si ejecutramos 1 + 3 / 2.0?
>>> 1 + 3 / 2.0 _
2.5
As pues, la divisin proporciona un resultado
flotante, 1.5, que al ser sumado al entero 1 de la
izquierda proporciona un nuevo flotante: 2.5.
Tipos de datos
Enteros y flotantes (cont.)
Ejercicios
Qu resultar de evaluar las siguientes expresiones?
a) 1 / 2 / 4.0
b) 1 / 2.0 / 4.0
c) 1 / 2.0 / 4
d) 1.0 / 2 / 4
e) 4 ** .5
f) 4.0 ** (1 / 2)
g) 4.0 ** (1 / 2) + 1 / 2
h) 4.0 ** (1.0 / 2) + 1 / 2.0
i) 3e3 / 10
j) 10 / 5e-3
k) 10 / 5e-3 + 1
l) 3 / 2 + 1
Tipos de datos
Valores lgicos
Desde la versin 2.3, Python ofrece un tipo de datos especial
que permite expresar slo dos valores: cierto y falso.
Operadores
Operadores lgicos
Hay tres operadores lgicos en Python: la y
lgica o conjuncin (and), la o lgica o
disyuncin (or) y el no lgico o negacin (not).
Operadores
Operadores relacionales (de comparacin)
Operadores
Operadores relacionales (de comparacin)
>>> 2 == 3
False
>>> 2 == 2
True
Operadores
Operadores relacionales (de comparacin)
>>> True == True
True
>>> True == False
False
Es posible combinar operadores de comparacin y operadores
aritmticos
>>> 2 == 1+1
True
Operadores
Operadores relacionales (de comparacin)
Tambin podemos combinar en una misma expresin
operadores lgicos, aritmticos y de comparacin:
>>> (True or (2 == 1 + 2)) == True
True
>>> 2 < 1
False
Operadores
Operadores relacionales (de comparacin)
>>> 5 > 1
True
>>> 5 >= 1
True
>>> 5 > 5
False
Operadores
Operadores relacionales (de comparacin)
>>> 5 >= 5
True
>>> 1 != 0
True
>>> 1 != 1
False
>>> -2 <= 2
True
Operadores
Variables y asignaciones
>>> pi = 3.14159265359
>>> r = 1.298373 _
>>> 2 * pi * r
8.1579181568392176
>>> pi * r ** 2
5.2960103355249037
Variables y asignaciones
El acto de dar valor a una variable se denomina
asignacin.
Al asignar un valor a una variable que no exista,
Python reserva un espacio en la memoria,
almacena el valor en l y crea una asociacin
entre el nombre de la variable y la direccin de
memoria de dicho espacio.
Variables y asignaciones
Podemos almacenar el resultado de calcular el
permetro y el rea en sendas variables:
>>> pi = 3.14159265359
>>> r = 1.298373
>>> perimetro = 2 * pi * r
>>> area = pi * r**2
Variables y asignaciones
As pues, para asignar valor a una variable basta
ejecutar una sentencia como sta:
variable = expresin
Se debe tener cuidado: el orden es importante.
Hacer expresin = variable no es equivalente.
Variables y asignaciones
Una asignacin no es una ecuacin matemtica, sino una
accin consistente en (por este orden):
1. evaluar la expresin a la derecha del smbolo igual (=), y
2. guardar el valor resultante en la variable indicada a la izquierda
del smbolo igual.
Variables y asignaciones
== no es = (comparar no es asignar)
Al aprender a programar, muchas personas confunden el operador de asignacin, =,
con el operador de comparacin, ==. El primero se usa exclusivamente para asignar un
valor a una variable. El segundo, para comparar valores.
Observe la diferente respuesta que obtienes al usar = y == en el entorno interactivo:
>>> a = 10
>>> a
10
>>> a == 1
False
Variables y asignaciones
>>> a
10
>>> a + 2
3
>>> a = 2
>>> a * a _
4
Variables y asignaciones
Una asignacin no es una ecuacin
Las asignaciones no son ecuaciones matemticas,
por mucho que su aspecto nos recuerde a stas.
>>> x = 3
>>> x = x + 1
>>> x
4
Variables y asignaciones
Una asignacin no es una ecuacin
Las asignaciones no son ecuaciones matemticas,
por mucho que su aspecto nos recuerde a stas.
>>> x = 3
>>> x = x + 1
>>> x
4
Variables y asignaciones
Identificadores
El nombre de una variable es su identificador. Hay unas reglas
precisas para construir identificadores.
Variables y asignaciones
Identificadores (cont.)
Hay una norma ms: un identificador no puede coincidir con una
palabra reservada o palabra clave.
Una palabra reservada es una palabra que tiene un significado
predefinido y es necesaria para expresar ciertas construcciones del
lenguaje.
Aqu tienes una lista con las palabras reservadas de Python:
and, assert, break, class, continue, def, del, elif, else, except, exec,
finally, for, from, global, if, import, in, is, lambda, not, or, pass, print,
raise, return, try, while y yield.
Variables y asignaciones
Identificadores (cont.)
Por ejemplo, los siguientes identificadores son
vlidos:
h, x, Z, velocidad, aceleracion, x, fuerza1, masa_ 2,
_a, a_ , prueba_ 123, desviacion_tipica.
Se debe tener presente que Python distingue entre
maysculas y minsculas, as que area, Area y AREA
son tres identificadores vlidos y diferentes.
Variables y asignaciones
Identificadores (cont.)
Cualquier carcter diferente de una letra, un dgito o el
subrayado es invlido en un identificador, incluyendo el
espacio en blanco.
Variables y asignaciones
Identificadores (cont.)
Escoja siempre nombres que guarden relacin
con los datos del problema.
Si, por ejemplo, se va a utilizar una variable para
almacenar una distancia, llame a la variable
distancia y evite nombres que no signifiquen
nada; de este modo, los programas sern ms
legibles.
Variables y asignaciones
Identificadores (cont.)
Son vlidos los siguientes identificadores?
a) Identificador
b) Indice\dos
c) Dos palabras
d) __
e) 12horas
f) hora12
g) desviacin
h) ao
i) from
j) var!
k) var
l) import_from
Variables y asignaciones
Asignaciones con operador
Observe que i = i + 1: aplica un incremento unitario al
contenido de la variable i.
Variables y asignaciones
Asignaciones con operador (cont)
Puedes incrementar una variable con cualquier cantidad,
incluso con una que resulte de evaluar una expresin:
>>> a = 3
>>> b = 2
>>> a += 4 * b
>>> a
11
Variables y asignaciones
Asignaciones con operador (cont)
Todos los operadores aritmticos tienen su
asignacin con operador asociada.
z += 2
z *= 2
z /= 2
z -= 2
z %= 2
z **= 2
Variables y asignaciones
Asignaciones con operador (cont)
Qu resultar de ejecutar las siguientes sentencias?
>>> z = 2
>>> z += 2
>>> z += 2 - 2
>>> z *= 2
>>> z *= 1 + 1
>>> z /= 2
>>> z %= 3
>>> z /= 3 - 1
>>> z -= 2 + 1
>>> z -= 2
>>> z **= 3
>>> z
Variables y asignaciones
Variables no inicializadas
En Python, la primera operacin sobre una variable debe ser la asignacin de
un valor. No se puede usar una variable a la que no se ha asignado
previamente un valor:
>>> a + 2
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name a is not defined
Como puedes ver, se genera una excepcin NameError, es decir, de error de
nombre.
La asignacin de un valor inicial a una variable se denomina inicializacin de
la variable. En Python no es posible usar variables no inicializadas.
>>> 12 + 12
1212
>>> 12 + 12
24
>>> Hola * 5 _
HolaHolaHolaHolaHola
>>> - * 60 _
------------------------------------------------------------
>>> 60 * - _
------------------------------------------------------------
Funciones predefinidas
Python tambin proporciona funciones que podemos utilizar
en las expresiones. Estas funciones se dice que estn
predefinidas.
La funcin abs, por ejemplo, calcula el valor absoluto de un
nmero. Podemos usarla como en estas expresiones:
>>> abs(-3)
3
>>> abs(3)
3
Funciones predefinidas
El nmero sobre el que se aplica la funcin se denomina
argumento. El argumento de la funcin debe ir encerrado
entre parntesis:
>>> abs(0)
0
>>> abs 0
File "<stdin>", line 1
abs 0
^
SyntaxError: invalid syntax
Funciones predefinidas
Veamos algunas funciones predefinidas.
float: conversin a flotante. Si recibe un nmero entero como argumento, devuelve el
mismo nmero convertido en un flotante equivalente.
>>> float(3)
3.0
La funcin float tambin acepta argumentos de tipo cadena. Cuando se le pasa una
cadena, float la convierte en el nmero flotante que sta representa:
>>> float(3.2)
3.2
>>> float(3.2e10)
32000000000.0
Funciones predefinidas
Pero si la cadena no representa un flotante, se
produce un error de tipo ValueError, es decir, error
de valor:
>>> float(un texto) _
Traceback (innermost last):
File "<stdin>", line 1, in ?
ValueError: invalid literal for float(): un texto
Funciones predefinidas
int: conversin a entero. Si recibe un nmero flotante como argumento,
devuelve el entero que se obtiene eliminando la parte fraccionaria.7
>>> int(2.1) _
2
>>> int(-2.9) _
-2
Tambin la funcin int acepta como argumento una cadena:
>>> int(2) _
2
Si int recibe un argumento entero, devuelve el argumento tal cual.
Funciones predefinidas
str: conversin a cadena. Recibe un nmero y devuelve
una representacin de ste como cadena.
>>> str(2.1)
2.1
>>> str(234E47)
2.34e+49
Funciones predefinidas
round: redondeo. Puede usarse con uno o dos argumentos. Si se usa con un
slo argumento, redondea el nmero al flotante ms prximo cuya parte
decimal sea nula.
>>> round(2.1) _
2.0
>>> round(2.9) _
3.0
>>> round(-2.9) _
-3.0
>>> round(2) _
2.0
El resultado siempre es de tipo flotante!
Funciones predefinidas
Si round recibe dos argumentos, stos deben ir separados
por una coma y el segundo indica el nmero de decimales
que se desea conservar tras el redondeo.
>>> round(2.1451, 2)
2.15
>>> round(2.1451, 3)
2.145
>>> round(2.1451, 0)
2.0
Funciones predefinidas
Estas funciones (y las que se estudiarn ms adelante)
pueden formar parte de expresiones y sus argumentos
pueden, a su vez, ser expresiones. Observa los siguientes
ejemplos:
Funciones predefinidas
Ejercicios
Calcular con una nica expresin el valor absoluto del redondeo de 3.2. (El
resultado es 3.0.)
Convierta (en una nica expresin) a una cadena el resultado de la divisin
5011/10000 redondeado con 3 decimales.
Qu resulta de evaluar estas expresiones?
>>> str(2.1) + str(1.2) _
>>> int(str(2) + str(3)) _
>>> str(int(12.3 + 0 _
>>> int(2+3) _
>>> str(2 + 3) _
>>> str(int(2.1) + float(3)) _
Entrada/Salida
Lectura de datos de teclado
Hay una funcin predefinida, raw_input (en ingls significa
entrada en bruto), que hace lo siguiente: detiene la ejecucin
del programa y espera a que el usuario escriba un texto y pulse
la tecla <enter>; en ese momento prosigue la ejecucin y la
funcin devuelve una cadena con el texto que tecle el usuario.
Esta funcin lee la entrada como cadena de caracteres.
Entrada/Salida
Lectura de datos de teclado
Se la entrada es un nmero, se debe transformar la cadena
devuelta por raw_input en un dato de tipo flotante llamando a la
funcin float o si es entera usar int.
A continuacin un ejemplo de su uso.
Entrada/Salida
Lectura de datos de teclado (cont.)
volumen esfera3.py
Entrada/Salida
Lectura de datos de teclado (cont.)
Esta otra versin es ms breve:
volumen esfera 4.py
Entrada/Salida
Lectura de datos de teclado (cont.)
La funcin raw_input acepta un argumento: una cadena con el mensaje que
debe mostrar.
El programa modificado as:
volumen esfera 5.py
Entrada/Salida
Lectura de datos de teclado (cont.)
Ejercicios
Disee un programa que pida el valor del lado de un
cuadrado y muestre el valor de su permetro y el de
su rea.
Disee un programa que pida el valor de los dos
lados de un rectngulo y muestre el valor de su
permetro y el de su rea.
Entrada/Salida
Lectura de datos de teclado (cont.)
Ejercicios (cont.)
Disee un programa que pida el valor de la base y la altura de
un tringulo y muestre el valor de su rea.
Disee un programa que pida el valor de los tres lados de un
tringulo y calcule el valor de su rea y permetro.
Entrada/Salida
Ms sobre la sentencia print
Ejemplo:
from math import pi
print Programa para el clculo del volumen de una esfera.
radio = float(raw_input(Entre el radio: ))
volumen = 4.0 / 3.0 * pi * radio ** 3
print volumen
print Gracias por utilizar este programa
Bibliografa
MARZAL, Andrs; GRACIA, Isabel. Introduccin
a la programacin con Python. Universitat
Jaume I. 2003