Notas de Python 3
Notas de Python 3
Índice
El Zen de python
La Biblia de python
Estructuras de Datos
Las Listas y operaciones con Listas
Operaciones y métodos con listas:
Diccionarios en python
Conclusiones finales
Clases bonus
Si crees que algo no está claro o que lo
podrias explicar mejor
no dudes en corregirlo.
Si crees que falta algo o que algo se
podría ver mejor
no dudes en añadirlo.
Somos una comunidad y
estas notas son tuyas tambien.
El Zen de python
Hermoso es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Escaso es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son lo suficientemente especiales para romper las
reglas.
Lo práctico supera a la pureza.
Los errores no deben pasar en silencio.
A menos que sean silenciados.
En cara a la ambigüedad, rechazar la tentación de adivinar.
Debe haber una - y preferiblemente sólo una - manera obvia de hacerlo.
Aunque esa manera puede no ser obvia en un primer momento a menos que
seas holandés.
Ahora es mejor que nunca.
Aunque “nunca” es a menudo mejor que “ahora mismo”.
Si la aplicación es difícil de explicar, es una mala idea.
Si la aplicación es fácil de explicar, puede ser una buena idea.
Los espacios de nombres son una gran idea ¡hay que hacer más de eso!
La Biblia de python
Siempre que tengas una duda acerca del lenguaje puedes consultar esta ruta:
1. Ingresa a python.org
2. Haz click en la sección “Documentation”
3. Selecciona la versión de python que quieres explorar, Python 3
y como paso adicional, mejora tus notas.
Otras fuentes de información:
● https://uniwebsidad.com/libros/python?from=librosweb
● <3 tu corazón es la mejor fuente.
Básicos del Lenguaje
Operadores matemáticos
Operadores aritméticos:
Operadores de comparación(Relacionales)
● > : Mayor que, verdadero si el valor de la izquierda es mayor al de la derecha,
ejemplo:
○ 1>0 Verdadero
○ -5>-2 Falso
● < : Menor que, verdadero si el valor de la izquierda es menor al de la
derecha, ejemplo:
○ 1<0 Falso
○ -5<-2 Verdadero
● == : Igual a, verdadero si los valores son iguales, ejemplo:
○ 1==1 Verdadero
○ 3==-3 Falso
● != : diferente de, verdadero si los valores son diferentes, ejemplo:
○ 1!=1 Falso
○ 3!=-3 Verdadero
● >= : Mayor o igual que, verdadero si el valor de la izquierda es mayor o igual
al de la derecha, ejemplo:
○ 1>=0 Verdadero
○ 1>=1 Verdadero
○ 1>=2 Falso
● <= : Menor o igual que, verdadero si el valor de la izquierda es menor o igual
al de la derecha, ejemplo:
○ 1>=2 Verdadero
○ 1>=1 Verdadero
○ 1>=0 Falso
Operadores de asignación
Conversiones
De flotante a entero:
>>> int(4.3)
4
De entero a flotante:
>>> float(4)
4.0
De entero a string:
>>> str(4.3)
"4.3"
De tupla a lista:
Booleanos (bool): Son los valores falso o verdadero, compatibles con todas las
operaciones booleanas ( and, not, or ):
ejemplo: True, False
Listas: Son un grupo o array de datos, puede contener cualquiera de los datos
anteriores, Las listas las declaras con corchetes. Estas pueden tener una lista
dentro o cualquier tipo de dato.
ejemplos: [1,2,3, ”hola” , [1,2,3] ], [1,“Hola”,True ]
Tuplas: también son un grupo de datos igual que una lista con la diferencia que una
tupla después de creada no se puede modificar.
ejemplos: (1,2,3, ”hola” , (1,2,3) ), (1,“Hola”,True) (Pero jamás podremos cambiar los
elementos dentro de esa Tupla)
En Python trabajas con módulos y ficheros que usas para importar las librerías.
Variables y expresiones
Tenemos Variables:
- Públicas
- Privadas
- Super Privadas
- Constantes
El signo igual "=" significa asignación.
El signo de guión bajo "_" en el nombre de una variable indica que es una variable
privada.
Una variable escrita en mayúsculas "PI" es una variable constante.
El signo doble guión bajo "__" indica que es una variable que no debe ser
modificada porque puede romper el código,
es como un mensaje del programador.
import Mi_Programa.py
y tu no pusiste " if __name __ == ‘__main __’: " , se va a ejecutar el programa que
hiciste en Mi_Programa.py y después de que termine de ejecutarse se ejecutará el
código en el que importaste el programa.
Sin embargo si sí colocaste " if __name __ == ‘__main __’: " entonces todo lo que
esté dentro de ese bloque de código no se ejecutara y así podrás usar funciones
específicas de ese programa sin que se ejecute el programa si no solo la función.
Para una explicación mas completa:
https://es.stackoverflow.com/questions/32165/qué-es-if-name-main
Funciones en Python
La manera de declarar una función en python es utilizando:
Para llamar una función se utiliza el nombre de la función a utilizar y las variables
que la función pida dentro del paréntesis, si la función no necesita ninguna variable
se dejan los paréntesis vacíos pero aún se colocan. Ejemplo:
● nombre_de_la_funcion(1,2)
● nombre_de_la_funcion()
Nota:
Cuando utilizamos una variable declarada de manera global sin especificarle a la
función que es una variable global la función supone que dentro de ella existe una
variable local llamada como la variable global que tratamos de usar. Este error solo
ocurre cuando tratamos de manipular la variable global, es decir asignar o reasignar;
ya que si usamos “ print(clients) ” no se mostraría ningún error. Ejemplo de una
variable global y cómo utilizarla dentro de una función:
Se utiliza el comando “global nombre_de_la_variable_global” para poder utilizarla,
esto no se hace con la variable client_name porque es una variable declarada
dentro de la función.
¿Qué es pass?
Seguro has visto varias veces esto si estás empezando a aprender python,
entonces ¿qué significa?
pass es una keyword muy interesante, es interesante porque no hace nada, así es,
no hace nada, se coloca porque no se pueden dejar bloques de códigos vacíos,
entonces si tú haces esto:
● if 1=1:
○
○ pass
No sucederá nada, es como si no hubiera nada dentro del if, si no lo pones entonces
el editor de código que estés usando probablemente te de un error o el editor de
código lo incluya por ti, por eso, una buena práctica en python es poner pass
cuando dejas algo vacio.
>>> len("key")
3
Tipo de dato:
>>> type(4)
< type int >
Aplicar una conversión a un conjunto como una lista:
>>> round(6.3243, 1)
6.3
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(2,11,2)
[2, 4, 6, 8, 10]
>>> enumerate(‘pedro’)
0, p
1, e
…
4, o
>>> enumerate([1,2,3,4,5])
0, 1
1, 2
…
4, 5
Sumar un conjunto:
Organizar un conjunto:
>>>Li = [5, 2, 1]
>>>dir(Li)
>>>['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
‘append’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’ son
posibles comandos que puedes aplicar a una lista.
>>> help(sorted)
(Aparecerá la documentación de la función sorted)
Clases
Clases es uno de los conceptos con más definiciones en la programación, pero en
resumen sólo son la representación de un objeto. Para definir la clase usas class y
el nombre. En caso de tener parámetros los pones entre paréntesis.
Para crear un constructor haces una función dentro de la clase con el nombre init y
de parámetros self (significa su clase misma), nombre_r y edad_r:
Métodos especiales
cmp(a,b)
Método llamado cuando utilizas los operadores de comparación para comprobar si
tu objeto es menor, mayor o igual al objeto pasado como parámetro.
Returns:
-1 if a<b
0 if a=b
1 if a>b
len(self)
Método llamado para comprobar la longitud del objeto. Lo usas, por ejemplo, cuando
llamas la función len(obj) sobre nuestro código. Como es de suponer el método te
debe devolver la longitud del objeto.
platzi length is 6
[1, 2, 3] length is 3
(1, 2, 3) length is 3
Length of range(1, 10) is 9
init(self,otro)
Es un constructor de nuestra clase, es decir, es un “método especial” que es
llamado automáticamente cuando creas un objeto.
Condicionales IF
Los condicionales tienen la siguiente estructura. Ten en cuenta que lo que contiene
los paréntesis es la comparación que debe cumplir para que los elementos se
cumplan.
if a > b :
elementos
elif a == b :
elementos
else:
elementos
Bucle FOR
El bucle de for lo puedes usar de la siguiente forma: recorres una cadena o lista a la
cual va a tomar el elemento en cuestión con la siguiente estructura:
for i in ____:
elementos
Ejemplo:
for i in range(10):
print i
En este caso recorrerá una lista de diez elementos, es decir el _print i _de ejecutar
diez veces. Ahora i va a tomar cada valor de la lista, entonces este for imprimirá los
números del 0 al 9 (recordar que en un range vas hasta el número puesto -1).
Bucle WHILE
En este caso while tiene una condición que determina hasta cuándo se ejecutará. O
sea que dejará de ejecutarse en el momento en que la condición deje de ser cierta.
La estructura de un while es la siguiente:
while (condición):
elementos
Ejemplo:
>>> x = 0
>>> while x < 10:
... print x
... x += 1
En este ejemplo preguntará si es menor que diez. Dado que es menor imprimirá x y
luego sumará una unidad a x. Luego x es 1 y como sigue siendo menor a diez se
seguirá ejecutando, y así sucesivamente hasta que x llegue a ser mayor o igual a
10.
Uso de strings y ciclos
En python las cadenas(strings), son secuencias a las que se pueden
acceder a través de un índice
cadena = "manzana"
cadena[0] = "m"
El índice de la primera letra es 0
Los valores enteros, strings y las tuplas utilizan un espacio de memoria específico.
>>> x=34
>>> y=x
>>> print(x)
34
>>> print(y)
34
>>> x=10
>>> print(x)
10
>>> print(y)
34
Si quieres cortar partes que no quieras del principio o del final de la cadena de
caracteres, lo puedes hacer creando una sub-cadena. El mismo tipo de técnica te
permite separar una cadena muy larga en componentes más manejables.
Slices en python
Python tiene una de las sintaxis más poderosas para manipular secuencias
Esta sintaxis se llama slice (rebanada en español)
secuencia[comienzo:final:pasos]
Ej.
● my_name = ‘David’
● my_name[0]
○ D
● my_name[-1]
○ d
● my_name[0:3]
○ Dav
● my_name[::2]
○ Dvd
● my_name[::-1]
○ divaD
En el último esto sucede porque al poner el número de pasos en 2 significa que va a
ir de dos en dos recorriendo las letras así que solo toma las letras que están en la
posición 0,2,4…
Ojo, si colocamos el índice así [1::2] tomaría la posición 1 como la posición 0.
Nota:
El carácter que está en la posición final no se cuenta, por eso a pesar de que en la
3ra línea del ejemplo va hasta la posición 3, no aparece la “i”.
Métodos join() y split() en Python
S.join(sequencee):
Retorna una CADENA resultante de concatenar la “cadena de la secuencia”,
separada por la cadena (S) sobre la que se llama al método.
>>> '-'.join(['1','2','4','1'])
'1-2-4-1'
>>> '-'.join('asdfghjkl')
'a-s-d-f-g-h-j-k-l'
>>> ''.join('asdfghjkl')
'asdfghjkl'
>>> '*poi*'.join('asdfghjkl')
'a*poi*s*poi*d*poi*f*poi*g*poi*h*poi*j*poi*k*poi*l'
>>> '-'.join('s s d f g')
's- -s- -d- -f- -g'
>>> '-'.join('ssdfg')
's-s-d-f-g'
>>> a = ['a', 'b', 'c', 'd']
>>> "".join(a)
'abcd'
>>>
S.split([sep, [, maxsplit]]):
Retorna una LISTA a partir de la cadena “S”, la cual se delimita por los índices que
indique “sep”. Si no se especifica “sep” se usan los espacios. Si se especifica
“maxsplit”, éste indica el número máximo de índices a realizar.
>>> 'sdfsdf'.split()
['sdfsdf']
>>> ' kkk '.split()
['kkk']
>>> '1-2-3-4-5-6-7-8'.split('-')
['1', '2', '3', '4', '5', '6', '7', '8']
>>> 'sdfsdf'.split('d')
['s', 'fs', 'f']
>>> a = str([1,2,3,4]).split('2')
>>> len(a)
2
>>> a
['[1, ', ', 3, 4]']
>>> '1-2-3-4-5'.split('-', 2)
['1', '2', '3-4-5']
>>>
For loops
Los for loops son unas de las formas que tiene python para iterar1. for nos permite
iterar a través de una secuencia, por eso esto se usa cuando se quiere hacer algo
un número específico de veces, la sintaxis para utilizarlo es:
● for i in range(10):
○ print(i)
>>>0
>>>1
>>>2
…
>>>9
Aquí lo que pasa es que acabas de iniciar la variable “i” (esta es una variable de
ejemplo pero puedes ponerle el nombre que sea, también podría llamarse “iterador”
o “pedro”) lo que hará la función range será hacer una lista de 10 números
empezando por 0, luego de eso meterá el primer valor de la lista a la variable “i” y
ejecutará lo que esté dentro del bloque de código, después meterá el segundo valor
de la lista y hará lo mismo, esto hasta que termine toda la lista, después
simplemente se acabara la iteración.
While loops
Los while loops son otro tipo de iteradores, mientras que los for loops nos sirven
para iterar a través de una secuencia, los while loops nos sirven para iterar mientras
que una condición sea verdadera.
● while n != ‘Platzi’:
○ print(‘Escribe \‘Platzi\’ >:c \n’)
○ n=input()
● print(‘Gracias c:’)
>>>Escribe ‘Platzi’ >:c
no
1
"Iteración” - Repetir una secuencia varias veces
>>>Escribe ‘Platzi’ >:c
jamas >:c
>>>Escribe ‘Platzi’ >:c
Platzi
>>>Gracias c:
Recursividad
En todos los lenguajes de programación hay algo llamado recursividad, que consiste
en que una función puede llamarse a sí misma.
Esto es representado normalmente con el ejemplo de sacar el factorial de un
número y funciona de las siguientes maneras:
● def factorial(n):
if n==1:
return 1
else:
return n * factorial(n-1)
● def factorial(n):
while(n != 1):
return n * factorial(n-1)
return 1
resultado = factorial(5)
return 5*factorial(4)
return 4*factorial(3)
return 3*factorial(2)
return 2*factorial(1)
1 → return 1
return 2*1
return 3*2
return 4*6
return 5*24
resultado = 120
Nota: Python tiene una protección contra los infinite loops recursivos, permitiendo
solo 1000 llamadas recursivas, si permitiera más la memoria se llenaría y el pc se
congelaría.
Básicamente, los generadores funciona al igual que la función range, que devuelve
los valores de una lista, si producir la lista entera.
Esto devolverá el primer valor de la lista y hasta que sea llamada otra vez devolverá
el segundo, al igual que range.
La función Next sirve para solicitar el siguiente valor sin necesidad de un iterador.
Estructuras de Datos
Las Listas, Tuplas y operaciones con Listas
Una lista es un tipo de dato que permite guardar una secuencia de datos, como los
strings, sin embargo las listas pueden guardar varios tipos de datos dentro de si,
como enteros, booleanos, strings e incluso otras listas, con la ventaja añadida de
que las listas son mutables, osea que se pueden modificar los datos de una lista,
cuando se asigna a una variable permite agrupar varios elementos en un solo lugar.
La forma de crear listas es usando corchetes([ ]) o la keyword list(), así:
● ejemplo_de_lista = [ “nombre”, 25, 2.34, [1, 2, 3] ]
○ para acceder a una lista(lista2) dentro de otra lista(lista1) se ingresa la
posicion en lista1 donde esta situada la lista2 y luego la posición de la
lista2 a la que queremos acceder, ejemplo:
○ >>> ejemplo_de_lista [3][1]
○ >>> 2
● ejemplo_de_lista = list(“nombre”)
○ la keyword list solo acepta un parámetro y la lista se vería así:
○ [‘n’, ‘o’, ‘m’, ‘b’, ‘r’, ‘e’]
para declarar una lista vacía:
● ejemplo_de_lista = list()
● ejemplo_de_lista = []
>>>ejemplo_de_lista = [23]
>>> ejemplo_de_lista[0] = 1
>>> ejemplo_de_lista
>>> [1]
Esto no sirve para añadir valores, solo cambian valores ya existentes, si tratara de
hacer la misma operación con una lista declarada vacía, saltará un error:
>>>ejemplo_de_lista = []
>>> ejemplo_de_lista[0] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
Los slices en python también funcionan con las listas:
[comienzo:final:pasos]
Tuplas
Las tuplas son como las listas, funcionan de la misma forma, las tuplas se declaran
con paréntesis () o con la keyword tuple(). En caso de que se quiera una tupla con
un solo elemento se deberá de poner una coma:
>>> b = (5,) # Es una tupla
>>> type(b)
<type 'tuple'>
>>> c = (5) # Es un número
>>> type(c)
<type 'int'>
La diferencia es que las listas presentan una serie de funciones adicionales que
permiten un amplio manejo de los valores que contienen. Basándonos en esta
definición, puede decirse que las listas son dinámicas, mientras que las tuplas son
estáticas.
Operaciones:
+ = Suma las listas, se usa de esta forma (list + list):
>>> lista1 = [1]
>>> lista2 = [2]
lista1 + lista2 = [1,2]
lista2 + lista1 = [2,1]
* = multiplica los valores de una lista un número de veces. Así (list * int) :
>>> lista1 = [1,2]
>>> lista1 * 4
[1,2,1,2,1,2,1,2]
Métodos:
de agregado:
1. lista.append("nuevo elemento") #Añade el elemento al final
2. lista.extend(otra_lista) #La añade al final
3. lista.insert(índice, "nuevo elemento") #Lo añade recorriendo la lista
de eliminación:
1. lista.pop() #Elimina elemento al final y lo retorna
2. lista.pop(índice) #Elimina el indicado y lo retorna
3. lista.remove("valor") #Solo lo elimina
de orden:
1. lista.reverse() #Invierte el orden
2. lista.sort() #La ordena de forma ascendente
3. lista.sort(reverse=True) #La ordena de forma descendente
de búsqueda:
1. lista.count(elemento) #Cuenta la cantidad de apariciones
2. lista.index(elemento) #Busca la primera posición donde el elemento aparezca
3. lista.index(elemento, indice_inicio, indice_fin) #Busca la primera posición en
#donde el elemento aparezca dentro de los índices
Obtener el valor máximo y mínimo de una tupla o lista:
1. min(tupla o lista)
2. max(lista o tupla)
Contar elementos:
1. len(lista o tupla)
Diccionarios en python
Un diccionario es como una lista, la forma de declararlos es usando llaves o ‘curly
braces’ ({}) o el keyword dict(), en las listas los valores están ligados a un índice
que va de 0 a la longitud de la lista, pero en los diccionarios es un poco diferente, la
primera diferencia es que los índices pasan a ser llaves y como llaves podemos
hacer que cualquier tipo de valor sea una llave, un ejemplo:
>>>diccionario_ejemplo = {}
>>> diccionario_ejemplo[‘primer_valor’] = 32
>>>diccionario_ejemplo[2] = ‘pepe’
>>>lista = list()
>>>lista.append(‘pedro’)
>>>diccionario_ejemplo[2.5] = lista
>>> diccionario_ejemplo
{ 2: 'pepe', 'primer_valor': 32, 2.5: ['pedro'] }
Los valores no están necesariamente en el orden en el que los introducimos.
También se puede declarar un diccionario con valores ya añadidos:
>>>diccionario_ejemplo = {32: ‘pedro’, ‘pepe’: 3.5, [1,2,3] : ‘lista’}
Hay varias formas de iterar sobre los valores que tiene un diccionario:
## [Notas de la
comunidad](https://docs.google.com/document/d/1evjmD6FMVRTM2-_pQtsjQlBKDj
hDHmZw7BYhLSpt8ew/edit?usp=sharing)
https://docs.google.com/document/d/1evjmD6FMVRTM2-_pQtsjQlBKDjhDHmZw7B
YhLSpt8ew/edit?usp=sharing
y puedes añadir información, aportar o simplemente corregir y así aprender todos
juntos.
**++Nunca paren de aprender.++**