Beruflich Dokumente
Kultur Dokumente
Objetivo
La participacin es fundamental.
Y estos dos?
Quiz
En realidad,
imaginisseque
parecen
nuestras
mucho
fiestas
ms
son
a esto
algo as
Wednesday, March 7, 2012
Evaluaciones
Evaluaciones
Y ahora, explicado en el lenguaje del siglo XXI
NosotrosNosotros
Vosotros
A Granada
Wednesday, March 7, 2012
Python
como calculadora
Aritmtica bsica
>>> 2 + 2
4
Wednesday, March 7, 2012
Aritmtica bsica
Aritmtica bsica
>>> 8 - 5
3
Wednesday, March 7, 2012
Aritmtica bsica
>>> 3 * 4
12
Wednesday, March 7, 2012
Aritmtica bsica
>>> 9 / 3
3
Wednesday, March 7, 2012
Aritmtica bsica
>>> 3 / 4
0
Por qu?
Wednesday, March 7, 2012
Necesitamos nmeros
Pero esto no
>> float(3/4)
float(int)
float(0) = 0.0
Wednesday, March 7, 2012
int() trunca...
>> int(0.49) = 0
>> int(1.50) = 1
>> int(2.9) = 2
Wednesday, March 7, 2012
>> round(0.49) = 0
>> round(1.50) = 2
>> round(2.9) = 3
Wednesday, March 7, 2012
>> 1 / 4
0.25
>> 4 / 7
0.5714285714285714
Wednesday, March 7, 2012
Python 2.7
Aritmtica bsica
>>> 7 % 2
1
Wednesday, March 7, 2012
Aritmtica bsica
>>> 10 ** 2
1024
Wednesday, March 7, 2012
Aritmtica bsica
>>> (1 + 3) * 4 + 2
18
Wednesday, March 7, 2012
Long integers
>> 1024 ** 2 ** 2
1099511627776L
Y esa L?
Long integers
Enteros normales utilizan al menos 32 bits
(mximo entero positivo representable
2,147,483,647; en el caso de 64 bits:
9,223,372,036,854,775,807)
Variables
>>> x = 8.5
>>> x
8.5
Wednesday, March 7, 2012
Variables
>>> x = 1
>>> y = 2
>>> x + y
3
Wednesday, March 7, 2012
Variables
int x;
double y;
Variables
int x;
x = 5.6;
Variables
>>> xx == 6.6
5
>>>
>>>
>>> xx ++ 22
8.6
7
Wednesday, March 7, 2012
Asignacin mltiple
>>> x, y = 5, 3
>>> x + y
8
Wednesday, March 7, 2012
Asignacin mltiple
>>> x = y = 3
>>> x
3
Wednesday, March 7, 2012
Variables no declaradas
>>> x = 1
>>> x + y
NameError: name 'y' is not
defined
Wednesday, March 7, 2012
Operadores de
comparacin
>>> 2 == 3
False
Wednesday, March 7, 2012
Operadores de
comparacin
>>> 2 != 3
True
Wednesday, March 7, 2012
Operadores de
comparacin
>>> 5 < 3
False
Wednesday, March 7, 2012
Operadores de
comparacin
>>> 5 > 5
False
Wednesday, March 7, 2012
Operadores de
comparacin
>>> 5 >= 5
True
Wednesday, March 7, 2012
Operadores lgicos
Operadores lgicos
>>> x = 1.56
>>> x >= 0 and x <= 1
False
Wednesday, March 7, 2012
Operadores lgicos
>>> x = 1.56
>>> x >= 0 or x <= 1
True
Wednesday, March 7, 2012
Operadores lgicos
>>> x = 1.56
>>> 0 <= x <= 1
False
Wednesday, March 7, 2012
int entero
float real
bool lgico
string texto
>>> x = 4.5
>>> type(x)
<type 'float'>
Wednesday, March 7, 2012
Strings
Cadenas de texto:
Hola mundo!
Inmutables
Strings
Strings
>>> frase = Sara dijo hola!
>>> frase
Sara dijo hola!
Strings
Secuencia de escape:
Sara dijo \hola!\
Strings
Triple entrecomillado:
Sara dijo hola!
Slices
a[index]
Devuelve el index-1 elemento
a = Abstulit qui dedit
a[0] = A
a[6] = i
a[-1] = t
Wednesday, March 7, 2012
El primer elemento
tiene ndice = 0
Wednesday, March 7, 2012
Edsger W. Dijkstra
Why numbering should start at zero (1982)
Wednesday, March 7, 2012
a) 1 i < 11
b) 0 < i 10
c) 1 i 10
d) 0 < i < 11
b) nos obliga a utilizar un nmero no natural (cero) para
Tanto
a) como
tienen ladeventaja
de que
la diferencia
determinar
unb)
intervalo
nmeros
naturales.
Poco
entre los lmites del intervalo
elegante.(11-1 y 10-0) es igual al
nmero de elementos de ste
Wednesday, March 7, 2012
a) 1 i < N+1
b) 0 i < N
La opcin b) es ms simple e intuitiva: el lmite superior nos indica
directamente el nmero de elementos en el intervalo
Slices
a[start:end]
Slices
a[start:]
Elementos desde start hasta el final
a = Fabricando fit faber
a[12:] = fit faber
a[-5:] = faber
Wednesday, March 7, 2012
Slices
a[:end]
Elementos desde el comienzo hasta end-1
a = In vino veritas
a[:2] = In
a[:8] = In vino
a[:-5] = In vino ve
Wednesday, March 7, 2012
Slices
a[start:end:step]
De start a end de step en step elementos
Inmutables
>>> nombre = Sara
>>> nombre[0] = M
TypeError: 'str' object
does not support item
assignment
Wednesday, March 7, 2012
Inmutables
>>> nombre = Sara
>>> nombre = Mara
>>> nombre
Mara
Wednesday, March 7, 2012
Concatenacin
>> nombre = Sara
>> nombre = M + nombre[1:]
>> nombre
Mara
Wednesday, March 7, 2012
Subcadenas
>>> ere in sapere aude
True
Subcadenas
>>> sapere aude.find(ere)
3
La subcadena existe y empieza en el elemento
3 (es decir, el cuarto)
Wednesday, March 7, 2012
Subcadenas
>>> flux in et veritas
False
Subcadenas
>>> et veritas.find(flux)
-1
La subcadena no existe
Tamao
>>> len(victoria aut mors)
17
Tamao
>>> comic = V de Vendetta
>>> len(comic)
13
Maysculas
>>> hoygan.upper()
HOYGAN
Minsculas
>>> vocales = AEIOU
>>> vocales.lower()
aeiou
Eliminando espacios
>>> planeta =
Saturno
>>> planeta.lstrip()
Saturno
Eliminando espacios
>>> lugar = En el Sol
Eliminando espacios
>>> apellido = Lee
Ejercicios
Manipulacin de cadenas utilizando el
cadena = Cabeza grande, ojos hermosos
1.
2.
3.
4.
5.
6.
7.
8.
9.
El tamao de la cadena?
Los primeros cinco caracteres de la cadena
Los siete ltimos caracteres.
De los cinco primeros caracteres, los que ocupan posiciones pares.
De los ltimos trece caracteres, los de posiciones impares
En mayscula, los caracteres en posiciones mltiplo de tres
De dos en dos, del caracter en la posicin 4 al de la 17
Est el caracter x en la cadena?
Y o, en mayscula o minscula?
Mdulos
Instrucciones almacenadas en un
fichero y ejecutadas por el
intrprete de Python
Mdulos
x=4
y=5
x ** (y + 1)
Mdulos
python fichero.py
El nombre del mdulo es fichero
(sin la extensin .py)
Mdulos
chmod +x fichero.py
Hacemos el fichero ejecutable
Mdulos
#! /usr/bin/env python
Primera lnea del mdulo: especifica que debe
utilizarse Python para ejecutar el cdigo
contenido en el fichero
Mdulos
Mdulos
print
>>> print Lo siento,
>>> print Dave
Lo siento,
Dave
Aade salto de lnea al final
print
>>> x = 2
>>> y = 3
>>> print x, ^, y, =, 2**3
2^3=8
Formateo de cadenas
Formateo de cadenas
>>> print Numero: %d % 42
Nmero: 42
>>> print Pi: %f % 3.1415927
Pi: 3.141593
>>> print Pi: %.3f % 3.1415927
Pi: 3.142
Wednesday, March 7, 2012
Formateo de cadenas
>>> print %d + %d = %d % (5, 3, 8)
5+3=8
>>> b = 10.4
>>> e = 2
>>> print %f ** %d = %.2d % (b, e, b ** e)
10.400000 ** 2 = 108.16
Comentarios
#
A partir del primer # y hasta el final de la
Comentarios
>>> x = 2
>>> x = x + 1 # incrementa x en uno
>>> x
3
Listas
Listas
>>> v = [1, 2, 3]
>>> v
[1, 2, 3]
Listas
>>> v = [1, 2.0, tres]
>>> print v[1]
2.0
Listas
>>> v = []
>>> v
[]
Asignacin
>>> v = [4, 7, 3, 8]
>>> v[-1] = 0
>>> v
[4, 7, 3, 0]
Wednesday, March 7, 2012
Tamao
>>> v = [1, 2.0, tres]
>>> len(v)
3
Insercin
>>> v = [1, 3, 4]
>>> v.append(5)
>>> v
[1, 2, 3, 5]
Insercin
>>> v = [1, 3, 4]
>>> v.insert(9, 2)
>>> v
[1, 3, 9, 4]
Aade el elemento 9 en la posicin de index = 2
Eliminacin
>>> v = [1, 3, 4]
>>> v.remove(3)
>>> v
[1, 4]
Borrado por valor
Eliminacin
>>> v = [9, 5, 8, 5, 9]
>>> del v[3]
>>> v
[9, 5, 8, 9]
Borrado por posicin
Bsqueda
>>> v = [7, 0, 7]
>>> 7 in v
True
Bsqueda
>>> v = [7, 0, 7]
>>> v.index(7)
0
Bsqueda
>>> v = [7, 0, 7]
>>> 3 in v
False
Bsqueda
>>> v = [7, 0, 7]
>>> 8 not in v
True
Bsqueda
>>> v = [7, 0, 7]
>>> v.index(3)
ValueError: list.index(x): x not in
list
Concatenacin
Concatenacin
>>> x = [1, 2, 3]
>>> x.append([9, 8])
>>> x
[1, 2, 3, [9, 8]]
El cuarto elemento es ahora una lista
Wednesday, March 7, 2012
Mximo
Mnimo
>>> x = [7, 2, 5]
>>> min(x)
2
Wednesday, March 7, 2012
Sumatorio
Listas vacas
>>> x = []
>>> len(x)
0
Wednesday, March 7, 2012
Listas vacas
>>> x = []
>>> bool(x)
False
Las listas vacas evalan a False
Ejercicios
Manipulacin de listas utilizando el
lista = [primero, 2, 3.5, 4.0, ultimo]
1.
2.
3.
4.
5.
6.
7.
8.
El tamao de la lista?
El tamao de la lista multiplicado por su segundo elemento
El producto del segundo elemento de la lista por el tercero
Est 2 en la lista? Y 2.0?
Eliminar el primer elemento de la lista
Eliminar ahora los dos ltimos elementos simultaneamente
Est la lista vaca?
Aadir el elemento nuevo ultimo a la lista.
Entrada de datos
raw_input(mensaje)
Entrada de datos
>>> persona = raw_input(Nombre: )
Nombre: Mr. Marshall
>>> print Bienvenido,, persona
Bienvenido, Mr. Marshall
Entrada de datos
>>> x = raw_input(x: )
x: 57
>>> print 2*x
5757
Entrada de datos
Entrada de datos
int * string concatena string int veces
>>> 3 * adios
adiosadiosadios
De vuelta al ejemplo anterior...
Entrada de datos
>>> x = int(raw_input(x: ))
x: 57
>>> print 2*x
114
Entrada de datos
input(mensaje)
Entrada de datos
>>> numeros = input(Lista: )
Nombre: [7, 8, 9]
>>> del numeros[-1]
>>> numeros
[7, 8]
Entrada de datos
>>> x = [1, 2]
>>> x.append(input())
18
>>> x
[1, 2, 18]
Entrada de datos
>>> x = [7, 8]
>>> x.append(input(elemento: ))
elemento: y
NameError: name 'y' is not defined
La mayor parte del tiempo necesitamos raw_input
Estructuras de control
Necesitamos modificar el flujo de ejecucin del
programa en funcin de los datos
if
for
while
Wednesday, March 7, 2012
if
Evala una condicin y ejecuta un bloque de instrucciones si
es verdadera
>>> if 2 > 1:
...
print obviamente
...
obviamente
Wednesday, March 7, 2012
Bloque
if - else
Evala una condicin y ejecuta un bloque de instrucciones (bloque-if) si
es verdadera. Si no lo es, ejecuta el otro bloque (bloque-else)
>>> if 7 % 2 == 0:
...
print es par
... else:
...
print no par
...
no par
Wednesday, March 7, 2012
if - elif - else
Para elegir entre ms de dos opciones
Python ignora las dems condiciones en cuando
una se cumple
if - elif - else
>>> if 2 < 0:
...
print negativo!
... elif 2 == 0:
...
print nada!
... else:
...
print positivo!
...
positivo!
Wednesday, March 7, 2012
for
Itera sobre los elementos de una secuencia
print i
for
range(n)
Genera una lista de n valores [0, 1, 2 ... n-1]
>> range(7)
[0, 1, 2, 3, 4, 5, 6]
range(start, n)
Genera la lista [start, start+1, ... n-1]
>> range(3, 7)
[3, 4, 5, 6]
range(start, n, step)
Genera la lista [start, start+step, ... n-1]
for
>>> for i in range(3):
...
...
hola
hola
hola
Wednesday, March 7, 2012
print hola
for
for i in range(10):
print i
for
>>> for letra in Sara:
...
...
S
a
r
a
Wednesday, March 7, 2012
print letra
for
Y si dentro del bucle necesitamos conocer el ndice del elemento?
for
>>> numeros = [2, 4, 5]
>>> for i in range(len(numeros)):
...
enumerate(sec)
Permite iterar simultneamente sobre el ndice y
sobre el elemento de una secuencia
while
Ejecuta el bucle mientras la condicin sea cierta
>>> x = 1
>>> while x < 10:
...
x=x+1
... print x
...
10
Wednesday, March 7, 2012
while
>>> x = 5
>>> factorial = 1
>>> while x > 0:
...
factorial = factorial * x
...
x=x-1
while
>>> x = 0
>>> while True:
...
...
Wednesday, March 7, 2012
x=x+1
GOTO?
Edsger W. Dijkstra
Go To Statement Considered Harmful, (1968)
Wednesday, March 7, 2012
break
Abandona el bucle inmediatamente
if i % 2 == 0:
...
break
... print i
...
2
Wednesday, March 7, 2012
break
>>> x = 15
>>> while True:
...
if x % 9 == 0:
...
print x
...
break
...
...
18
Wednesday, March 7, 2012
x=x+1
continue
Salta inmediatamente a la siguiente iteracin
if i % 2 == 0:
...
continue
...
...
1
3
Wednesday, March 7, 2012
print i
continue
>>> while True:
...
x = int(raw_input())
...
if not x % 2 == 0:
...
continue
...
print es par!
Ejercicios
if, for, while y range()
http://www.iaa.es/python/ejercicios