Bueno, al fin y al cabo llegamos al punto fundamental de la programación. Sin fors o ifs, los programas no son nada más que órdenes ejecutadas secuencialmente una después de la otra. Con los loops y las condiciones, uno puede ejecutar bloques de código sólo si ciertas condiciones son verdadres o se cumplen, o podemos ejecutar código "para siempre!
Hoy vamos a cubrir los "condicionales" (incluyendo if, elif y else), los "loops" (he escuchado varias traducciones de "loop" pero ninguna me gusta), incluyendo for, while y algunos términos asociados como break, continue y pass.
In [2]:
x = -15
if x == 0:
print(x, "es cero")
elif x > 0:
print(x, "es positivo")
elif x < 0:
print(x, "es negativo")
else:
print(x, "es algo que ni idea...")
Noten en particular los dos puntos (:) y el espacio para definir los bloques de código. Las instrucciones if-then están en casi todos los lenguajes. Python tambien tiene elif que es una contracción de else if. Los bloques else if son opcionales y pueden incluir todos los que quieran.
In [4]:
for N in [2, 3, 5, 7]:
print(N, end=' ') # imprimir todos en una misma linea
Fíjense las partes del loop: el for, una variable N para mantener estado, el operador de membresía in y la lista misma. Es casi lenguaje natural. En particular, a la derecha (donde está la lista) puede ser cualquier iterador (un objeto que podamos "recorrer"), ver aqui.
In [6]:
for c in "python":
print(c)
Uno de los iteradores más comunes de Python es el objeto range(), que genera una secuencia de números.
In [7]:
for i in range(10):
print(i, end=' ')
Noten que siempre las iteraciones empiezan con 0 y que por convención el último elemento del objeto no se incluye (el número "10" en este caso). El objeto range puede tomar secuencias (rangos, por eso el nombre) más complicados, por ejemplo:
In [9]:
# range de 5 a 10
list(range(5, 10))
Out[9]:
In [8]:
# range de 0 a 10 de a 2
list(range(0, 10, 2))
Out[8]:
El objeto raneg() produce un iterable.
In [10]:
i = 0
while i < 10:
print(i, end=' ')
i += 1
break salta fuera del loop completamentecontinue se salta lo que queda de la iteración y vuelve al for
In [11]:
for n in range(20):
# si el resto es 0, salte lo que queda de la iteración
if n % 2 == 0:
continue
print(n, end=' ')
Por ejemplo while(True) loops para siempre! Se les ocurre un ejemplo de esto?