Tema 2: Terminología básica
Contenidos
Referencia: Capítulos 2 y 4 de Severance, C. R. (2016). Python for everybody: Exploring data using Python 3. Ann Arbor, MI: Charles Severance.
Valores y tipos de valores
El valor es la unidad mínima que manejaremos. Pueden ser cadenas (string) de texto o números enteros (int) y decimales. Las cadenas se representan entre comillas simples o dobles y los enteros con dígitos. Para comprobar el tipo de dato que corresponde a un valor, usamos la función type()
.
1print(
2 type('Soy una cadena de texto'),
3 type("Yo también"),
4 type(1),
5 type(123456),
6 type('12345')
7)
<class 'str'> <class 'str'> <class 'int'> <class 'int'> <class 'str'>
Al ejecutar el fragmento anterior vemos que siempre que el valor se encierre entre comillas, será formateado como entero sin importar que su representación sean letras o números. Únicamente las líneas 4 y 5 son enteros.
Para representar números con decímales se utiliza el punto como separador. Observa en el siguiente fragmento cómo se denomina el tipo numérico para designar a los números con decimales.
1print(
2 type(1.5)
3)
<class 'float'>
Variables
Las variables nos dan la capacidad de asignar un nombre a un valor. De igual modo que en las lenguas naturales los nombres nos permiten referirnos a una conjunto de nociones semánticas con una sola palabra, en programación utilizamos las variables para no repetir varias veces la misma secuencia.
En Python asignamos un valor a una variable con el símbolo =
.
1fecha = '15 de septiembre'
2print(cumpleaños)
15 de septiembre
El valor es lo que aparece a la derecha del símbolo =
y la variable a la izquierda.
Asignar el valor 15 de septiembre
a la variable fecha
me permite referirme a 15 de septiembre
en cualquier punto de mi script utilizando el nombre de la variable. Con la función print podemos concatenar varios valores para imprimirlos conjuntamente. Vamos a recordar cuál es la fecha de cumpleaños:
1fecha = '15 de septiembre'
2print('Mi cumpleaños es en', fecha)
Mi cumpleaños es en 15 de septiembre
Es altamente recomendable utilizar nombres con semántica para poder entender rápidamente qué valor representa una variable situada en medio de una porción de código. Las variables de Python deben cumplir las siguientes características:
- Estar formadas SOLO por números, letras sin diacríticos y guiones bajos
- No empezar por números
- Las variables empiezan convencionalmente por minúscula. Las que empiezan con mayúscula representan clases, un tipo de dato avanzado.
El siguiente fragmento de código no arroja ninguna salida por consola porque las variables están bien asignadas.
1miVariable = "Esta es correcta"
2mi_variable = "Esta también"
3miVariable_00 = "Y esta"
4variable00 = "Esta también"
En los siguientes fragmentos vamos a ver cómo nos indica Python que esos nombres de variable son incorrectos.
100mivariable = "Las variables no empiezan por números"
File "<ipython-input-16-e46b249d1ffe>", line 1
00mivariable = "Esta no vale"
^
SyntaxError: invalid syntax
1mi-variable = "Las variables no contienen símbolos"
File "<ipython-input-18-04bc1a071612>", line 1
mi-variable = "Las variables no contienen símbolos"
^
SyntaxError: can't assign to operator
Python se reserva un pequeño grupo de nombres de variable. Se llaman palabras reservadas y corresponden a palabras clave del lenguaje para realizar diferentes acciones. Son las siguientes:
and, del, from, None, True, as, elif, global, nonlocal, try, assert, else, if, not, while, break, except, import, or, with, class, False, in, pass,yield, continue, finally, is, raise, async, def, for, lambda, return, await
Es muy importante tener en cuenta que, como hemos visto, Python permite utilizar mayúsculas y minúsculas. Por lo tanto, miVariable
no es lo mismo que mivariable
:
1miVariable = 'Te encontré'
2print(mivariable)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-29-9ebac806466f> in <module>()
1 miVariable = 'Te encontré'
----> 2 print(mivariable)
NameError: name 'mivariable' is not defined
Hemos visto que los números con decimales se separan con punto. Veamos qué sucede si intentamos separar un número con coma:
1miNumero = 1,000
2print(
3 type(miNumero)
4)
<class 'tuple'>
Python nos indica que el tipo de dato que hemos asignado es una tupla, no de un float, como sería de esperar. Más adelante veremos qué tipo de dato es la tupla.
Operadores
Python incorpora por defecto las operaciones matemáticas básicas. Los espacios entre operadores y operandos no se interpretan. Observa como, a continuación de cada línea, añado texto seguido del símbolo #
y este es de color verde. Se llaman comentarios. En Python, podemos añadir comentarios con el símbolo #
tanto al final de una línea de código como en una línea completa. Cuando añadas el símbolo en una línea, todo lo que aparezca después no será interpretado por Python.
1print(
2 3+5, # Suma
3 5-3, # Resta
4 5*3, # Multiplicación
5 3**2, # Potencia
6 10/7 # División
7)
8 2 15 9 1.4285714285714286
También tiene el operador módulo que permite obtener directamente el resto de una división.
1print(
2 7%3 # Módulo: resto de 7 dividido entre 3
3)
1
Las operaciones matemáticas tienen la precedencia esperada: paréntesis > potencias > multiplicación/división > suma/resta y, para las operaciones con la misma precedencia orden de izquierda a derecha.
Al realizar operaciones es muy importante tener claro con qué tipo de valor estamos operando, puesto que aplicar los operadores a textos pensando que se trata de enteros nos puede dar resultados inesperados. Observa, a continuación, cómo asigno dos valores en la misma orden.
1# Una suma con enteros
2x, y = 5, 3
3print(x + y)
8
1# Una suma con textos
2x, y = '5', '3'
3print(x + y)
53
¿Por qué el último fragmento da 53 como resultado de 5 más 3? Porque no hemos sumado dos números enteros, sino que hemos sumado dos cadenas o, lo que es lo mismo, las hemos concatenado.
Depuración de variables y operaciones
Para prevenir los errores en la ejecución relacionados con la asignación de variables y la aplicación de operaciones, lo más práctico es comprobar si el tipo de dato con el que vamos a operar es el que esperamos antes de aplicarle cualquier operación. Esto se puede hacer, como hemos visto, con la función type()
. Además, Python nos permite la conversión de cadenas en enteros y viceversa con las funciones int()
y str()
. Observa en el siguiente bloque de código cómo podemos solucionar el problema de la concatenación de cadenas.
1x, y = '5', '3'
2x_int = int(x)
3y_int = int(y)
4print(x_int + y_int)
8
Hemos convertido x
e y
en enteros aplicándoles la función int()
, que convierte dígitos en formato cadena a entero. Y lo que hemos sumado son esos enteros.
Expresiones y sentencias
Decimos que una expresión es una combinación de valores, variables y operadores bien formada y que una sentencia es una unidad de código interpretable por Python. Ya conocemos lo que es un script (cf. Tema 1). Podríamos añadir que, normalmente, se compone de varias sentencias.
1# Expresiones
2x = 1
3x + 2
4# Sentencia
5print(x+2)
Funciones
Una función es una secuencia de sentencias que realiza una operación. Cuando se crea una función, se le asigna un nombre a esa secuencia de sentencias. Ese nombre es lo que invocamos en el código. La finalidad de una función es evitar repetir el mismo fragmento de código idéntico una y otra vez. La forma en la que se presenta una función es una palabra clave (el nombre) seguida de unos paréntesis en los que se especifican los argumentos de la función. Los argumentos son los elementos que la función necesita para realizar la operación.
A lo largo de este tema hemos visto principalmente dos funciones: print()
y type()
. Las palabras print y type son el nombre que se le ha asignado en Python a las secuencias de funciones que realizan, respectivamente, la función de mostrar en la terminal una cadena de texto en el formato apropiado y la de hallar e imprimir con formato el tipo de una variable. Para las dos operaciones se requiere un argumento: una cadena que imprimir y una variable que inspeccionar.