Hola de nuevo. Continuando con los conceptos fundamentales de nuestro curso, hoy hablaremos de una característica muy poderosa de los lenguajes de programación y es que nos permiten guardar valores. En donde se guardan, los llamaremos variables. A una variable se le asigna un valor. Esa es la manera correcta de decirlo. Y la instrucción de asignación es el símbolo que en matemáticas conocemos como "igual", pero cuidado, se parecen mucho, pero son dos cosas diferentes. Veamos cómo se ve una instrucción de asignación. En el ejemplo vemos "pi" asígnele 3,14159265359. Esta instrucción le está dando una orden al computador y la podemos separar en dos partes. En la parte derecha del carácter asignación encontramos un valor de tipo decimal y en la parte izquierda vemos un texto que dice "pi" que no representa ninguno de los tipos de valores que hemos visto. Entonces, representa una variable que no es nada diferente a un espacio en la memoria del computador en el cual se puede almacenar un valor y de donde lo puedo leer mientras el programa esté en ejecución. Hay tres cosas que quisiera resaltar en este punto. Primero, debemos procurar que las variables siempre tengan nombres significativos. Por ejemplo, en el caso de "pi" sabemos que es el nombre de una constante matemática que expresa la relación entre la longitud de una circunferencia y su diámetro. También es importante notar que la asignación es muda, es decir, si en la consola escribo a "pi" asígnele 3,1415, etcétera, no se produce ningún resultado. Lo contrario sucede cuando escribo una expresión como "2*pi*r". Que si produce un resultado, como vemos en el ejemplo. Por último, volvamos al carácter de asignación, que es el que separa la variable de su valor. Debemos tener muy claro que lo que hace es tomar el valor de la derecha y almacenarlo en la variable de la izquierda. Y si queremos ver cuánto vale una variable, es suficiente con escribir su nombre y el intérprete la evaluará y mostrará su valor. Notamos que en el explorador de variables de Spyder podemos ver tanto las variables como los valores que tenemos en un determinado momento. También, podemos asignarle tantos valores a una variable como queramos y solo recordará el último y, por ende, su tipo. Esto se llama tipado dinámico y es propio de Phyton. En otros lenguajes, cuando declaro una variable especifico su tipo y solo le puedo asignar valores de dicho tipo. Por eso, en el ejemplo, la variable "día" empieza haciendo una cadena de caracteres o un "str", como vemos en la línea 22. Pero luego en la asignación que hacemos en la línea 23 y al usar nuevamente la función "type", en la línea 25, tenemos que "día" es una variable de tipo "int". Ya había mencionado que debemos procurar que los nombres de las variables sean significativos. Hablemos un poco más al respecto. Primero, el nombre una variable se conoce como su identificador. Debe estar formado por letras minúsculas, dígitos y el carácter de subrayado, si tiene varias palabras. El primer carácter nunca puede ser un dígito y no puede coincidir con una palabra reservada en el lenguaje, que en Python es un conjunto pequeño como vemos en la tabla. A continuación, vamos a hablar de los errores más comunes para no cometerlos. Primero, y aunque ya lo había mencionado, vale la pena volverlo a hacer, el orden es muy importante. Siempre es igual, es decir, siempre el valor de la derecha se almacena en la variable de la izquierda. Por eso no tiene sentido escribir algo como "a 10 asígnele a" y se producirá un error "Syntaxerror: can't assign to literal". En otras palabras, la instrucción a variable asigna la expresión no es equivalente a expresión asigne la variable. Otro error común es confundir la asignación con la comparación, que en Python y en muchos otros lenguajes de programación se escribe con el doble signo de igual y que significa lo mismo que en matemáticas. Como hemos visto, la asignación se usa exclusivamente para almacenar valor en una variable, mientras que el segundo símbolo se usa para comparar valores. Por eso la línea diez es muda, es una asignación, mientras que la línea 19, nos dice que el resultado de comparar diez, el valor almacenado en "a", no es igual a uno, por eso el resultado de la comparación es "false" o falso. Ya hablaremos de esto. Las asignaciones no son ecuaciones, así se vean muy parecidas. Veamos el ejemplo. Primero asigno el valor tres a la variable "x" y luego, incremento en uno su valor. Eso es lo que significa la expresión "a x asígnele x+1". Es decir, que evaluamos la parte derecha de la expresión, sin tener en cuenta la parte izquierda y se lo asignamos a la variable "x". Una asignación tampoco es una igualdad. Veamos el ejemplo. Primero asignamos el valor diez a la variable "a" y a la variable "b" le asignamos el valor que tiene la variable "a". Cuando verificamos los valores de estas variables, vemos que ambas tienen el valor 10, líneas tres y cuatro, que tiene mucha lógica. Luego modificamos el valor de "a" asignándole 50 y si volvemos a verificar los valores de "a" y "b", pues "a" obtiene el valor 50 y "b" el valor 10. Espero que esto sea muy claro. Es decir, en algún momento a "b" le asignamos el valor de "a". Pero si posteriormente modificamos el valor de "a" nada le pasa a la variable "b". Las instrucciones son secuenciales y además la asignación no es una igualdad. Una cadena de caracteres o un "str" no es un identificador, es decir, no es el nombre de una variable. Veamos, en la línea uno tenemos la variable o identificador "a", mientras que en la línea dos tenemos el "str" que contiene el carácter "a", ¿qué los diferencia? Las comillas, que como ya sabemos pueden ser triples, dobles o simples como en este ejemplo. Y como una cadena de caracteres particular es un literal, si trato de asignarle algo a dicho "str", pues me arrojará el mismo mensaje de error que vimos en el primer caso de errores comunes. En Python siempre la primera operación que hacemos con una variable debe ser asignarle un valor. Si tengo una variable "a" pero no le hemos asignado un valor y tratamos de operarla, por ejemplo, haciendo "a+2" se producirá el error "NameError: name 'a' is not defined". Muy bien, ¿qué les parece si cerramos este tema con una pregunta?