©2012-2013 - Laurent Pointal
Licencia Creative Commons Atribución 2
Mémento v1.2.2
Hoja Resumen de Python 3
enteros, reales, lógicos, textos
Tipos Base
int
float
bool
str
-192
0
0.0
False
783
9.23
True
"Uno\nDos" 'Pa\'mi'
-1.7e-6
10-6
nueva línea
multilínea
cadena inmutable,
secuencia ordenada de letras
' escaped
"""X\tY\tZ
1\t2\t3"""
tabulación
◾ secuencia ordenada, índices rápidos, valores repetibles
list [1,5,9]
tuple (1,5,9)
["x",11,8.9] ["texto"] []
("texto",) ()
11,"y",7.4
inmutable
◾ sin orden previo, llave única, índices rápidos ; llaves = tipos base o tuplas
str como secuencia ordenada de caracteres
expresión separada por comas
dict
diccionario
asociaciones llave/valor
{"llave":"valor"}
{1:"uno",3:"tres",2:"dos",3.14:"π"}
{}
set
{"key1","key2"}
{1,9,3,0}
set()
Documentación oficial de Python
http://docs.python.org/py3k
Tipos Contenedores
Identificadores
para variables, funciones,
módulos, clases… nombres
a‥zA‥Z_ seguidos de a‥zA‥Z_0‥9
◽ acentos permitidos pero mejor evitarlos
◽ prohibido usar palabras de python
◽ discrimina minúsculas/MAYÚSCULAS
☺ a toto x7 y_max BigOne
☹ 8y and
Asignación de Variables
x = 1.2+8+sin(0)
valor o expresión calculada
nombre de variable (identificador)
y,z,r = 9.2,-7.6,"bad"
nombre de
variable
x+=3
x-=2
x=None «indefinido» valor constante
contenedor con varios
valores (aquí una tupla)
incrementar
decrementar
type(expresión)
Conversiones
se puede especificar la base en el 2do parámetro
int("15")
int(15.56) trunca la parte decimal (round(15.56) para redondear)
float("-11.24e8")
str(78.3)
y la representación literal
repr("Texto")
ver el reverso para mayor control al representar textos
use comparadores (con ==, !=, <, >, …), resultado lógico, valor de verdad
bool
list("abc")
use cada elemento
de una secuencia
dict([(3,"tres"),(1,"uno")])
set(["uno","dos"])
use cada elemento
de una secuencia
":".join(['toto','12','pswd'])
secuencia de textos
unir textos
"textos y espacios".split()
"1,4,8,2".split(",")
separar textos
['a','b','c']
{1:'uno',3:'tres'}
{'one','dos'}
'toto:12:pswd'
['textos','y','espacios']
['1','4','8','2']
Índices de secuencias
índices negativos
índices positivos
-6
0
-5
1
-4
2
-3
3
-2
4
-1
5
para listas, tuplas, textos, …
6
len(lst)
acceso individual a los valores [índice]
corte positivo
corte negativo
2
-4
0
1
-6 -5
lst=[11, 67, "abc", 3.14, 42, 1968] lst[1]→67
lst[-2]→42
acceso a sub-secuencias via [inicio corte:fin corte:pasos]
lst[1:3]→[67,"abc"]
lst[-3:-1]→[3.14,42]
lst[:3]→[11,67,"abc"]
lst[4:]→[42,1968]
5
-1
lst[:-1]→[11,67,"abc",3.14,42]
lst[1:-1]→[67,"abc",3.14,42]
lst[::2]→[11,"abc",42]
lst[:]→[11,67,"abc",3.14,42,1968]
lst[0]→11
lst[-1]→1968
4
-2
3
-3
6
primer valor
último valor
En secuencias mutables, se puede eliminar elementos con del lst[3:5] y modificar asignando lst[1:4]=['hop',9]
Omitiendo un parámetro de corte → de principio / hasta el fin.
=≥≤
Lógica Booleana
Comparadores: < > <= >= == !=≠
a and b
a or b
not a
True
False
valor constante verdadero
valor constante falso
y lógico
o lógico
no lógico
ambos simultáneamente
uno, el otro, o ambos
Bloques de Setencias
sentencia madre:
bloque de sentencias 1…
⁝
sentencia madre:
bloque de sentencias 2…
⁝
!
a
í
r
g
n
a
s
¡
sentencia siguiente a bloque 1
☝ números reales… valores aproximados!
Operadores: + - * / // % **
ab
resto de ÷
× ÷
÷ enteros
(1+5.3)*2→12.6
abs(-3.2)→3.2
round(3.57,1)→3.6
ángulos en radianes
Matemáticas
from math import sin,pi…
sin(pi/4)→0.707…
cos(2*pi/3)→-0.4999…
acos(0.5)→1.0471…
sqrt(81)→9.0 √
log(e**2)→2.0
etc. (cf doc)
Sentencias Condicionales
bloque de sentencias que
solo se ejecuta si la condición es verdadera
if expresión lógica:
bloque de sentencias
puede tener varios elif, elif... y solo un else al final,
ejemplo:
if x==42:
# solo si la expresión lógica x==42 se cumple
print("realmente verdad")
elif x>0:
# si no, si la expresión lógica x>0 se cumple
print("seamos positivos")
elif tamosListos:
# sino, si la variable lógica tamosListos es verdadera
print("mira, estamos listos")
else:
# en todos los otros casos
print("todo lo demás no fue")
bloque de sentencias que se repite
mientras la condición se cumpla
Sentencia Bucle Condicional
bloque de sentencias ejecutadas
para cada ítem de un contenedor o iterador
Sentencia Bucle Iterador
Control de Bucles
break
salir inmediatamente
continue
siguiente iteración
while expresión lógica:
bloque de sentencias
s = 0
i = 1
inicializaciones antes del bucle
condición con al menos un valor variable (aquí i)
while i <= 100:
# sentencias se ejecutan mientras i ≤ 100
s = s + i**2
i = i + 1
☝ cambiamos el valor condicional
i=100
s= ∑
i=1
i2
print("suma:",s)
resultado computado luego del bucle
☝ ¡ cuidado con hacer bucles infinitos !
print("v=",3,"cm :",x,",",y+4)
Entrada / Salida
ítemes a imprimir: valores literales, variables, expresiones
parámetros de print:
◽ sep=" " (separador de ítemes, espacio por omisión)
◽ end="\n" (caracter final, por omisión nueva línea)
◽ file=f (escribir a archivo, por omisión salida estándar)
s = input("Instrucciones:")
☝ input siempre retorna un texto, convertir a tipo requerido
(revisar Conversiones al reverso).
for variable in secuencia:
bloque de sentencias
recorre los valores de la secuencia
s = "un texto"
cnt = 0
inicializamos antes del bucle
variable de bucle, valor manejado por la sentencia for
for c in s:
if c == "t":
cnt = cnt + 1
print("encontramos",cnt,"'t'")
Contamos cantidad
de letras t en el texto
recorrer un dict/set = recorrer la secuencia de llaves
use cortes para recorrer una subsecuencia
Recorrer lo índices de una secuencia
◽ modificar el ítem correspondiente al índice
◽ accesar ítemes alrededor del índice (antes/después)
lst = [11,18,9,12,23,4,17]
perdidos = []
for idx in range(len(lst)):
val = lst[idx]
if val > 15:
perdidos.append(val)
lst[idx] = 15
print("modif:",lst,"-perd:",perdidos)
Recorrer simultáneamente los índices y valores de una secuencia:
for idx,val in enumerate(lst):
Limita los valores
mayores a 15, guarda
los valores perdidos.
uso frecuente en
bucles iterativos for
Generador de Secuencias de Enteros
por omisión 0
no inclusivo
range([inicio,]fin [,paso])
range(5)
range(3,8)
range(2,12,3)
0 1 2 3 4
3 4 5 6 7
2 5 8 11
range retorna un « generador », convertir a lista para ver
los valores, por ejemplo:
print(list(range(4)))
nombre de función (identificador)
Definir Funciones
parámetros nombrados
def nombfunc(p_x,p_y,p_z):
"""documentación"""
# bloque de sentencias, calcula result., etc.
return res
☝ parámetros y variables sólo
existen dentro del bloque y durante
la llamada a la función ("caja negra")
valor resultado.
si no hay resultado, se
retorna: return None
Invocar Funciones
r = nombfunc(3,i+2,2*i)
obtener el valor de retorno (opcional)
un argumento por parámetro
Formato de Textos
valores a formatear
directivas de formato
"model {} {} {}".format(x,y,r)
"{selección:formato!conversión}"
◽ Selection :
2
x
0.nombre
4[llave]
0[2]
◽ Formating :
relleno alineación signo anchomin.precisión~anchomax tipo
"{:+2.3f}".format(45.7273)
→'+45.727'
"{1:>10s}".format(8,"toto")
→' toto'
"{!r}".format("I'm")
→'"I\'m"'
s
o
l
p
m
e
j
E
str
+ - espacio
0 al inicio para rellenar con 0
< > ^ =
enteros: b binario, c caracter, d decimal (omisión), o octal, x or X hexa…
reales: e o E exponencial, f or F punto fijo, g or G general (omisión),
cadenas: s …
◽ Conversión : s (texto legible) or r (representación literal)
% porcentaje
Traducción al Castellano, 2014 – Sebastian Silva
→ cuenta ítemes
→ copia ordenada
Operaciones sobre Contenedores
len(c)
Nota: Para diccionarios y conjuntos, las
min(c) max(c) sum(c)
operaciones son sobre las llaves.
sorted(c)
valor in c → lógico, operador de membresía in (de ausencia, not in)
enumerate(c)→ iterador sobre (índice,valor)
Especial para contenedores de secuencias (listas, tuplas, textos) :
reversed(c)
c.index(val)
c*5 → duplicados c+c2 → concadenar
c.count(val)
→ iterador inverso
→ posición
→ cuenta ocurrencias
Operaciones sobre Listas
☝ modificar lista original
lst.append(item)
lst.extend(seq)
lst.insert(idx,val)
lst.remove(val)
lst.pop(idx)
lst.sort() lst.reverse()
añadir ítem al final
añadir secuencia de ítemes al final
insertar ítem en un determinado índice
elimina el primer ítem con determinado valor
elimina determinado ítem y retorna su valor
ordena / invierte la lista original
Operaciones en Diccionarios Operaciones en Conjuntos
d[llave]=valor
d.clear()
d[llave]→valor del d[llave]
d.update(d2) actualiza/añade
d.keys()
d.values() ver las llaves, valores
d.items()
d.pop(llave)
Operadores:
| → unión (caracter barra vertical)
& → intersección
- ^ → diferencia/diferencia simétrica
< <= > >= → relaciones de inclusión
s.update(s2)
s.remove(llave)
s.discard(llave)
y asociaciones
asociaciones
s.add(valor)
Archivos
guardar datos a disco, volver a leerlos
f = open("doc.txt","w",encoding="utf8")
codificación de
caracteres en
archivo:
utf8 ascii
latin1 …
lectura
variable para
operaciones
nombre de
archivo
(+ruta…)
modo de apertura
◽ 'r' lectura
◽ 'w' escritura
◽ 'a' añadir…
consulte funciones en los módulos os y os.path
escritura
vacía si llegamos al fin
f.write("hola")
☝ text file → lee / escribe solo
textos, convierte convertir al tipo
requerido.
f.close() ☝ no olvider cerrar el archivo al final
leer la siguiente
línea
s = f.read(4)
s = f.readline()
si se omite cuantos
caracteres, se lee
todo el archivo
Cerrado automático pytónico : with open(…) as f:
muy común: bucle iterativo para leer las líneas de un archivo de textos
for linea in f :
# bloque que procesa cada línea
Comentarios de: Hoja Resumen de Python 3 (1)