¡Extra!
Listas
Esto es algo que se llevaría su propio tutorial… pero muchas cosas hasta ahora son así, así veamos un ligero abreboca de lo que son las «listas» en Python.
Una lista es básicamente una variable que puede guardar un conjunto de elementos, se declaran en el código así:
init:
$ cosas = []
[] indica que la variable es una lista, si quisiéramos añadirle valores basta con colocarlos separados con comas. Las listas pueden guardar strings, numeros o flags.
$ cosas = ["a", "b", "c"]
Si luego quisiéramos añadirle un nuevo valor decimos…
$ cosas.append("d")
Eso haría que la lista fuera ahora
$ cosas = ["a", "b", "c", "d"]
Por supuesto las listas son susceptibles a usar un signo = y cambiar todos los valores a los provistos bruscamente.
¿Para que sirve esto? Digamos que tenemos una lista de «propiedades» para nuestro personaje, que las organizamos diciendo nombre, edad, sexo y tipo en ese orden en la lista, algo como:
$ mc = ["Dominguín", "Niño", "Hombre", "Fuego"]
Y queremos que un evento solo ocurra si el personaje es hombre. Sabemos que el sexo está guardado en el tercer elemento, así que escribimos…
if mc[2] == "Hombre":
##Evento
Al usar variable[x] con x accedemos al elemento x de la lista… pero siendo «Hombre» el tercer elemento de la lista escribimos [2], esto es porque el numero de indice cuenta el primer elemento como el 0, así el segundo sería el 1 y el tercero el 2, si quisiéramos verificar el tipo del personaje escribiríamos:
if mc[3] == "Fuego":
##Evento
Para otro uso, digamos que con cada interacción con cada personaje el nombre de ese personaje se añade a la lista, digamos que queremos verificar que la lista tiene un elemento llamado «Graham», pero a diferencia del ejemplo anterior no tenemos ni idea de cual sería su numero de indice porque no sabemos en que orden está, en ese caso escribimos:
for i in interactions:
if i == "Graham":
$ met_graham = True
Si suponemos que interactions es la lista donde se han guardado los nombres de cada uno, con for-in pasamos por cada elemento de la lista y si al menos uno es «Graham», entonces activará el flag met_graham.
Esto también nos sirve por ejemplo si quisiéramos contar cuantas veces te has topado con un personaje. Siguiendo el ejemplo anterior, si decimos…
for i in interactions:
if i == "Graham":
$ graham_count +=1
…entonces por cada «Graham» en la lista interactions se le sumará +1 a la variable graham_count.
En estos ejemplos i es una variable que no es necesario declarar y solo funcionará en el contexto de ese for-in (podríamos tener un for-in posterior y ese i no nos afectaría). Así pues, i pasará por cada elemento de la lista, testeando o haciendo las acciones provistas hasta llegar al final de la lista. En el ejemplo anterior es como si i se volviera igual al primer valor de la lista y corriera por los bloques if, luego fuera igual al segundo valor de la lista y corriera por los ifs y así hasta llegar al final corriendo por las acciones que se le den en cada ocasión (En este caso sumar +1 cada vez que se tope con «Graham»), no tiene que ser necesariamente «i», podríamos también decir for shamalamadingdong in interactions… pero eso sería menos practico.
Hay más en este tema, pero dejemoslo hasta acá por el momento.