En este video tutorial voy a explicar los conceptos de tipo de datos, variables y expresiones. Python incluye tipos de datos básicos como los números enteros; los números reales, que son números con decimales; los números complejos; los booleanos, que son el verdadero y el falso, y las cadenas de caracteres. Python nos provee la función "type" para saber de qué tipo es un valor o una variable. Veamos algunos ejemplos. "Type(8)", vemos que nos devuelve "int" que es un entero. "Type(10.5)", vemos que nos devuelve "float" que representa los decimales. "Type(True)", vemos que devuelve "bool" que son booleanos, los únicos valores posibles son el "true" y el "false". "Type('hola')", devuelve "str" que representa una cadena de caracteres. Y "type(3+4j)", devuelve "complex" que representa los números complejos. Estos son los tipos de datos básicos que provee el lenguaje. Python también provee tipos que son estructura de datos, como las listas, conjuntos de diccionarios, etcétera, que veremos en detalle más adelante. Veamos ahora el concepto de variable. Una variable es un nombre que se refiere a un valor. Con el operador de asignación se pueden crear nuevas variables y asignarles un valor. Por ejemplo, "número = 4"; ahora, si escribo "número", veo que tiene el valor "4", que es el valor que le asignamos a la variable "número". Python es un lenguaje de programación con tipado dinámico, esto quiere decir que a las variables no les tengo que indicar de qué tipo es al declararla, sino que al hacer la asignación se crea la variable y a partir de ese momento se puede utilizar. En el ejemplo podemos preguntarle de qué tipo es la variable "número", con la función "type", y vemos que me devuelve "int"; pero si, por ejemplo, a "número" le asignamos un "4.5" y le preguntamos el tipo, vemos que me vuelve un "float". Ahora, ¿qué pasa si queremos que una variable represente que no contiene ningún valor? Python, como casi todos los lenguajes, ofrece un valor para representar ese ningún valor; en el caso de Python, se llama "None". Por ejemplo, "nada = None", si le pregunto el tipo, vemos que nos devuelve un "NoneType". Ahora veamos qué nombres de variables se pueden utilizar. Los nombres de variables en Python deben ajustarse a tres reglas. Primero, los nombres de variables son secuencias arbitrariamente largas de letras y dígitos. Segundo, la secuencia debe empezar con una letra. Tercero, además de las letras desde la "a" hasta la "z", tanto minúsculas como mayúsculas, el guión bajo se considera una letra. Veamos algunos ejemplos. "Un_número = 4" es una variable válida. "Número1 = 4" es una variable válida. "1número = 4", vemos que nos da un "SyntaxError" porque no es una variable válida. "Cantidad$ = 5", también nos da un "SyntaxError" porque no es una variable válida. Además, no se pueden utilizar, como nombres de variables, palabras reservadas lenguaje, por ejemplo, "from = 4" nos devuelve "SyntaxError" porque no es un nombre variable válido. Python es un lenguaje "case sensitive", esto quiere decir que no es lo mismo que las letras sean mayúsculas que minúsculas, por ejemplo, "número = 4" y "Número = 5" son variables distintas. Como Python es un lenguaje con tipado dinámico, por ende, no sabemos qué tipo de dato contiene la variable. Es muy aconsejable poner buenos nombres a las variables, indicando qué contiene o qué representa esa variable o para qué se utiliza. Por otro lado, a bajo nivel, una variable es un espacio de memoria reservado para guardar un valor. Python maneja la memoria dinámicamente, con lo cual no tendremos que encargarnos de reservar memoria y devolverla, como sí es necesario hacer en "C" o "C++" o en lenguajes de bajo nivel. Por último, una expresión es una combinación de valores, variables operadores, y llamadas a funciones. Por ejemplo, "1+1" es una expresión que combina dos valores y un operador. Y, en el caso de "número + 1", es una expresión que combina una variable, un operador y un valor. Hemos visto los tipos de datos básicos de Python, y el uso de variables y expresiones.