mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-08-05 06:17:36 +02:00
Merge pull request #1073 from fasouto/master
[python/es] Added missing section and fixes some typos
This commit is contained in:
@@ -4,6 +4,7 @@ contributors:
|
|||||||
- ["Louie Dinh", "http://ldinh.ca"]
|
- ["Louie Dinh", "http://ldinh.ca"]
|
||||||
translators:
|
translators:
|
||||||
- ["Camilo Garrido", "http://www.twitter.com/hirohope"]
|
- ["Camilo Garrido", "http://www.twitter.com/hirohope"]
|
||||||
|
- ["Fabio Souto", "http://fabiosouto.me"]
|
||||||
lang: es-es
|
lang: es-es
|
||||||
filename: learnpython-es.py
|
filename: learnpython-es.py
|
||||||
---
|
---
|
||||||
@@ -30,27 +31,47 @@ Nota: Este artículo aplica a Python 2.7 específicamente, pero debería ser apl
|
|||||||
# Tienes números
|
# Tienes números
|
||||||
3 #=> 3
|
3 #=> 3
|
||||||
|
|
||||||
# Matemática es lo que esperarías
|
# Evidentemente puedes realizar operaciones matemáticas
|
||||||
1 + 1 #=> 2
|
1 + 1 #=> 2
|
||||||
8 - 1 #=> 7
|
8 - 1 #=> 7
|
||||||
10 * 2 #=> 20
|
10 * 2 #=> 20
|
||||||
35 / 5 #=> 7
|
35 / 5 #=> 7
|
||||||
|
|
||||||
# La división es un poco complicada. Es división entera y toma la parte entera
|
# La división es un poco complicada. Es división entera y toma la parte entera
|
||||||
# de los resultados automáticamente.
|
# de los resultados automáticamente.
|
||||||
5 / 2 #=> 2
|
5 / 2 #=> 2
|
||||||
|
|
||||||
# Para arreglar la división necesitamos aprender sobre 'floats'
|
# Para arreglar la división necesitamos aprender sobre 'floats'
|
||||||
# (números de coma flotante).
|
# (números de coma flotante).
|
||||||
2.0 # Esto es un 'float'
|
2.0 # Esto es un 'float'
|
||||||
11.0 / 4.0 #=> 2.75 ahhh...mucho mejor
|
11.0 / 4.0 #=> 2.75 ahhh...mucho mejor
|
||||||
|
|
||||||
|
# Resultado de la división de enteros truncada para positivos y negativos
|
||||||
|
5 // 3 # => 1
|
||||||
|
5.0 // 3.0 # => 1.0 # funciona con números en coma flotante
|
||||||
|
-5 // 3 # => -2
|
||||||
|
-5.0 // 3.0 # => -2.0
|
||||||
|
|
||||||
|
# El operador módulo devuelve el resto de una división entre enteros
|
||||||
|
7 % 3 # => 1
|
||||||
|
|
||||||
|
# Exponenciación (x elevado a y)
|
||||||
|
2**4 # => 16
|
||||||
|
|
||||||
# Refuerza la precedencia con paréntesis
|
# Refuerza la precedencia con paréntesis
|
||||||
(1 + 3) * 2 #=> 8
|
(1 + 3) * 2 #=> 8
|
||||||
|
|
||||||
# Valores 'boolean' (booleanos) son primitivos
|
# Operadores booleanos
|
||||||
True
|
# Nota: "and" y "or" son sensibles a mayúsculas
|
||||||
False
|
True and False #=> False
|
||||||
|
False or True #=> True
|
||||||
|
|
||||||
|
# Podemos usar operadores booleanos con números enteros
|
||||||
|
0 and 2 #=> 0
|
||||||
|
-5 or 0 #=> -5
|
||||||
|
0 == False #=> True
|
||||||
|
2 == True #=> False
|
||||||
|
1 == True #=> True
|
||||||
|
|
||||||
# Niega con 'not'
|
# Niega con 'not'
|
||||||
not True #=> False
|
not True #=> False
|
||||||
@@ -90,7 +111,7 @@ not False #=> True
|
|||||||
# Una forma más reciente de formatear strings es el método 'format'.
|
# Una forma más reciente de formatear strings es el método 'format'.
|
||||||
# Este método es la forma preferida
|
# Este método es la forma preferida
|
||||||
"{0} pueden ser {1}".format("strings", "formateados")
|
"{0} pueden ser {1}".format("strings", "formateados")
|
||||||
# Puedes usar palabras claves si no quieres contar.
|
# Puedes usar palabras clave si no quieres contar.
|
||||||
"{nombre} quiere comer {comida}".format(nombre="Bob", comida="lasaña")
|
"{nombre} quiere comer {comida}".format(nombre="Bob", comida="lasaña")
|
||||||
|
|
||||||
# None es un objeto
|
# None es un objeto
|
||||||
@@ -107,8 +128,8 @@ None is None #=> True
|
|||||||
|
|
||||||
# None, 0, y strings/listas vacíos(as) todas se evalúan como False.
|
# None, 0, y strings/listas vacíos(as) todas se evalúan como False.
|
||||||
# Todos los otros valores son True
|
# Todos los otros valores son True
|
||||||
0 == False #=> True
|
bool(0) #=> False
|
||||||
"" == False #=> True
|
bool("") #=> False
|
||||||
|
|
||||||
|
|
||||||
####################################################
|
####################################################
|
||||||
@@ -130,16 +151,16 @@ otra_variable # Levanta un error de nombre
|
|||||||
# 'if' puede ser usado como una expresión
|
# 'if' puede ser usado como una expresión
|
||||||
"yahoo!" if 3 > 2 else 2 #=> "yahoo!"
|
"yahoo!" if 3 > 2 else 2 #=> "yahoo!"
|
||||||
|
|
||||||
# Listas almacenan secuencias
|
# Las listas almacenan secuencias
|
||||||
lista = []
|
lista = []
|
||||||
# Puedes empezar con una lista prellenada
|
# Puedes empezar con una lista prellenada
|
||||||
otra_lista = [4, 5, 6]
|
otra_lista = [4, 5, 6]
|
||||||
|
|
||||||
# Añadir cosas al final de una lista con 'append'
|
# Añadir cosas al final de una lista con 'append'
|
||||||
lista.append(1) #lista ahora es [1]
|
lista.append(1) # lista ahora es [1]
|
||||||
lista.append(2) #lista ahora es [1, 2]
|
lista.append(2) # lista ahora es [1, 2]
|
||||||
lista.append(4) #lista ahora es [1, 2, 4]
|
lista.append(4) # lista ahora es [1, 2, 4]
|
||||||
lista.append(3) #lista ahora es [1, 2, 4, 3]
|
lista.append(3) # lista ahora es [1, 2, 4, 3]
|
||||||
# Remueve del final de la lista con 'pop'
|
# Remueve del final de la lista con 'pop'
|
||||||
lista.pop() #=> 3 y lista ahora es [1, 2, 4]
|
lista.pop() #=> 3 y lista ahora es [1, 2, 4]
|
||||||
# Pongámoslo de vuelta
|
# Pongámoslo de vuelta
|
||||||
@@ -173,11 +194,11 @@ lista.extend(otra_lista) # lista ahora es [1, 2, 3, 4, 5, 6]
|
|||||||
# Chequea la existencia en una lista con
|
# Chequea la existencia en una lista con
|
||||||
1 in lista #=> True
|
1 in lista #=> True
|
||||||
|
|
||||||
# Examina el largo de una lista con 'len'
|
# Examina el tamaño de una lista con 'len'
|
||||||
len(lista) #=> 6
|
len(lista) #=> 6
|
||||||
|
|
||||||
|
|
||||||
# Tuplas son como listas pero son inmutables.
|
# Las tuplas son como las listas, pero son inmutables.
|
||||||
tupla = (1, 2, 3)
|
tupla = (1, 2, 3)
|
||||||
tupla[0] #=> 1
|
tupla[0] #=> 1
|
||||||
tupla[0] = 3 # Levanta un error TypeError
|
tupla[0] = 3 # Levanta un error TypeError
|
||||||
@@ -266,7 +287,7 @@ conjunto_lleno | otro_conjunto #=> {1, 2, 3, 4, 5, 6}
|
|||||||
# Hagamos sólo una variable
|
# Hagamos sólo una variable
|
||||||
una_variable = 5
|
una_variable = 5
|
||||||
|
|
||||||
# Aquí está una declaración de un 'if'. ¡La indentación es significativa en Python!
|
# Aquí está una declaración de un 'if'. ¡La indentación es importante en Python!
|
||||||
# imprime "una_variable es menor que 10"
|
# imprime "una_variable es menor que 10"
|
||||||
if una_variable > 10:
|
if una_variable > 10:
|
||||||
print "una_variable es completamente mas grande que 10."
|
print "una_variable es completamente mas grande que 10."
|
||||||
@@ -400,12 +421,12 @@ class Humano(object):
|
|||||||
# Un atributo de clase es compartido por todas las instancias de esta clase
|
# Un atributo de clase es compartido por todas las instancias de esta clase
|
||||||
especie = "H. sapiens"
|
especie = "H. sapiens"
|
||||||
|
|
||||||
# Constructor basico
|
# Constructor básico, se llama al instanciar la clase.
|
||||||
def __init__(self, nombre):
|
def __init__(self, nombre):
|
||||||
# Asigna el argumento al atributo nombre de la instancia
|
# Asigna el argumento al atributo nombre de la instancia
|
||||||
self.nombre = nombre
|
self.nombre = nombre
|
||||||
|
|
||||||
# Un metodo de instancia. Todos los metodos toman self como primer argumento
|
# Un método de instancia. Todos los metodos toman self como primer argumento
|
||||||
def decir(self, msg):
|
def decir(self, msg):
|
||||||
return "%s: %s" % (self.nombre, msg)
|
return "%s: %s" % (self.nombre, msg)
|
||||||
|
|
||||||
@@ -470,6 +491,56 @@ import math
|
|||||||
dir(math)
|
dir(math)
|
||||||
|
|
||||||
|
|
||||||
|
####################################################
|
||||||
|
## 7. Avanzado
|
||||||
|
####################################################
|
||||||
|
|
||||||
|
# Los generadores permiten evaluación perezosa
|
||||||
|
def duplicar_numeros(iterable):
|
||||||
|
for i in iterable:
|
||||||
|
yield i + i
|
||||||
|
|
||||||
|
# Un generador crea valores sobre la marcha
|
||||||
|
# En vez de generar y devolver todos los valores de una vez, crea un valor
|
||||||
|
# en cada iteración. En este ejemplo los valores mayores que 15 no serán
|
||||||
|
# procesados en duplicar_numeros.
|
||||||
|
# Nota: xrange es un generador que hace lo mismo que range.
|
||||||
|
# Crear una lista de 1 a 900000000 lleva mucho tiempo y ocupa mucho espacio.
|
||||||
|
# xrange crea un generador, mientras que range crea toda la lista.
|
||||||
|
# Añadimos un guion bajo a los nombres de variable que coinciden con palabras
|
||||||
|
# reservadas de python.
|
||||||
|
xrange_ = xrange(1, 900000000)
|
||||||
|
|
||||||
|
# duplica todos los números hasta que encuentra un resultado >= 30
|
||||||
|
for i in duplicar_numeros(xrange_):
|
||||||
|
print i
|
||||||
|
if i >= 30:
|
||||||
|
break
|
||||||
|
|
||||||
|
# Decoradores
|
||||||
|
# en este ejemplo pedir rodea a hablar
|
||||||
|
# Si por_favor es True se cambiará el mensaje.
|
||||||
|
from functools import wraps
|
||||||
|
|
||||||
|
|
||||||
|
def pedir(target_function):
|
||||||
|
@wraps(target_function)
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
msg, por_favor = target_function(*args, **kwargs)
|
||||||
|
if por_favor:
|
||||||
|
return "{} {}".format(msg, "¡Por favor! Soy pobre :(")
|
||||||
|
return msg
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
@pedir
|
||||||
|
def hablar(por_favor=False):
|
||||||
|
msg = "¿Me puedes comprar una cerveza?"
|
||||||
|
return msg, por_favor
|
||||||
|
|
||||||
|
print hablar() # ¿Me puedes comprar una cerveza?
|
||||||
|
print hablar(por_favor=True) # ¿Me puedes comprar una cerveza? ¡Por favor! Soy pobre :(
|
||||||
```
|
```
|
||||||
|
|
||||||
## ¿Listo para más?
|
## ¿Listo para más?
|
||||||
@@ -481,6 +552,7 @@ dir(math)
|
|||||||
* [The Official Docs](http://docs.python.org/2.6/)
|
* [The Official Docs](http://docs.python.org/2.6/)
|
||||||
* [Hitchhiker's Guide to Python](http://docs.python-guide.org/en/latest/)
|
* [Hitchhiker's Guide to Python](http://docs.python-guide.org/en/latest/)
|
||||||
* [Python Module of the Week](http://pymotw.com/2/)
|
* [Python Module of the Week](http://pymotw.com/2/)
|
||||||
|
* [A Crash Course in Python for Scientists](http://nbviewer.ipython.org/5920182)
|
||||||
|
|
||||||
### Encuadernados
|
### Encuadernados
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user