Variables en Python
Contents
Variables en Python#
En algunos lenguajes de programación, las variables se pueden entender como "cajas" en las que se guardan los datos, pero en Python las variables son "etiquetas" que permiten hacer referencia a los datos (que se guardan en unas "cajas" llamadas objetos).
Python es un lenguaje de programación orientado a objetos y su modelo de datos también está basado en objetos. Para cada dato que aparece en un programa, Python crea un objeto que lo contiene. Cada objeto tiene:
Un identificador único (un número entero, distinto para cada objeto). El identificador permite a Python referirse al objeto sin ambigüedades. un tipo de datos (entero, decimal, cadena de caracteres, etc.). El tipo de datos permite saber a Python qué operaciones pueden hacerse con el dato. un valor (el propio dato).
Así, las variables en Python no guardan los datos, sino que son simples nombres para poder hacer referencia a esos objetos. Si escribimos la instrucción
a = 2
Python: crea el objeto "2". Ese objeto tendrá un identificador único que se asigna en el momento de la creación y se conserva a lo largo del programa. En este caso, el objeto creado será de tipo número entero y guardará el valor "2" asocia el nombre a al objeto número entero 2 creado. Así, al describir la instrucción anterior no habría que decir 'la variable a almacena el número entero 2', sino que habría que decir 'podemos llamar a al objeto número entero 2'. La variable a es como una etiqueta que nos permite hacer referencia al objeto "2", más cómoda de recordar y utilizar que el identificador del objeto.
Por otro lado, en Python se distingue entre objetos mutables y objetos inmutables:
Los objetos inmutables son objetos que no se pueden modificar. Por ejemplo, los números, las cadenas y las tuplas son objetos inmutables
Los objetos mutables son objetos que se pueden modificar. Por ejemplo, las listas y los diccionarios son objetos mutables. En el caso de los objetos inmutables (como los números) no hay mucha diferencia entre considerar la variable como una caja o como una etiqueta, pero en el caso de los objetos mutables (como las listas) pensar en las variables como cajas puede llevar a error.
Por economía del lenguaje, en estos apuntes se utilizan expresiones como "guardar un valor en una variable" en vez de "guardar el valor en un objeto y asociar una variable al objeto", pero el alumno debe tener presente lo que ocurre en realidad en Python.
##Variable Entera o Integer (int)
Los tipos enteros o int en Python permiten almacenar un valor numérico no decimal ya sea positivo o negativo de cualquier valor.
print(type (5))
<class 'int'>
Declaramos las variables ‘a’ y ‘b’ luego le asignamos los valores de 3 y 4, finalmente sumamos ambas variables posteriormente imprimimos el valor.
a = 3
b = 4
c = a + b
# print(c)
# print(type (c))
print(a+b)
7
Valores que contienen valores decimales se pueden convertir a números enteros de la siguiente manera:
pi = 3.1415
a = int (pi)
# int?
print(a)
print(type (a))
3
<class 'int'>
Variables Flotantes o Float (float)#
El tipo numérico float permite representar un número positivo negativo con decimales , es decir, números reales.
print(type (5.1))
<class 'float'>
Declaramos las variables ‘a’ y ‘b’ luego le asignamos los valores de 3.5 y 4.5, finalmente sumamos ambas variables imprimimos el valor.
a = 3.5
b = 4.5
c = a + b
d = 1.0
# print( type (d))
# print(c)
print( a + b )
print(type (c))
8.0
<class 'float'>
Declaramos las variables ‘a’ y ‘b’ luego le asignamos los valores de 3 y 4.5, finalmente sumamos ambas variables imprimimos el valor.
a = 3
b = 4.5
c = a + b
print(c)
print(type (c))
7.5
<class 'float'>
Variable Booleana o bool (bool)#
print (1 == 1)
print( 2 == 1)
# print(type ('a' == 'b'))
# print('a' == 'b')
True
False
a = 1
b = 1
print(type (a == b))
print (a == b)
<class 'bool'>
True
a = 5
b = 10
print(a == b)
print(a != b)
print(a > b)
print(a < b)
print(a <= b)
False
True
False
True
True
a = int (True)
b = int (False)
print(a)
print(b)
print(True + True)
1
0
2
Variables Cadena o String (str)#
Las cadenas en Python o strings son un tipo inmutable que permite almacenar secuencias de caracteres.
También te hemos dicho que las cadenas de Python son inmutables. Esta es una característica muy importante. ¿Qué significa?
Esto significa principalmente que la similitud de cadenas y listas es limitada. No todo lo que puede hacerse con una lista puede hacerse con una cadena.
La primera diferencia importante no te permite usar la instrucción del para eliminar cualquier cosa de una cadena.
El ejemplo siguiente no funcionará:
alfabeto = 'abcdefghijklmnñopqrstuvwxyz123456789'
# cadena = "GADEST"
# print(cadena)
# del alfabeto[0]
# print(alfabeto [1])
print(type (alfabeto))
<class 'str'>
a = 'GADEST'
print(type (a))
print(type ('GADEST'))
<class 'str'>
<class 'str'>
print("I'm learning")
I'm learning
Realizando un salto de línea#
print('Hola\nMundo')
Hola
Mundo
En caso de que no queramos que \n sea reconocido como un salto de línea.
print(r'Hola\nMundo')
Hola\nMundo
En caso de que queramos imprimir varias líneas podemos usar las comillas triples.
print("""GADEST
GRUPO
DE
ANÁLISIS
Y
DISEÑO
ESTRUCTURAL""")
GADEST
GRUPO
DE
ANÁLISIS
Y
DISEÑO
ESTRUCTURAL
Realizando operaciones con Strings#
a = '5'
print(type (a))
print(10*a)
<class 'str'>
5555555555
print('Debo hacer mis trabajos con tiempo\n'*10)
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Debo hacer mis trabajos con tiempo
Definir una entrada por usuario#
nombre = input('¿Cuál es tu nombre? ')
print(type (nombre))
# print('Hola ' + nombre)
print('Hola {0}'.format(nombre))
---------------------------------------------------------------------------
StdinNotImplementedError Traceback (most recent call last)
Input In [19], in <cell line: 1>()
----> 1 nombre = input('¿Cuál es tu nombre? ')
2 print(type (nombre))
3 # print('Hola ' + nombre)
File C:\Miniconda3\envs\tesis\lib\site-packages\ipykernel\kernelbase.py:1158, in Kernel.raw_input(self, prompt)
1151 """Forward raw_input to frontends
1152
1153 Raises
1154 ------
1155 StdinNotImplementedError if active frontend doesn't support stdin.
1156 """
1157 if not self._allow_stdin:
-> 1158 raise StdinNotImplementedError(
1159 "raw_input was called, but this frontend does not support input requests."
1160 )
1161 return self._input_request(
1162 str(prompt),
1163 self._parent_ident["shell"],
1164 self.get_parent("shell"),
1165 password=False,
1166 )
StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.
nombre = input('¿Cuál es tu nombre? ')
edad = int (input('¿Que edad tienes? '))
# print('Tu nombre es '+ nombre +' y tu edad es ' + str (edad))
print ('Tu nombre es {0} y tu edad es {1}'.format(nombre, edad))
¿Cuál es tu nombre? enrrique
¿Que edad tienes? 26
Tu nombre es enrrique y tu edad es 26
Veamos algunos de los modos más usados con los que un archivo puede ser abierto en Python:
open(filename, mode)
El parámetro filename es el nombre del archivo que queremos abrir. El parámetro mode es el modo en que queremos abrir el archivo.
El modo de abrir un archivo puede ser:
- 'r' (read) : Abre un archivo solo para lectura. El puntero al archivo esta localizado al comienzo del archivo. Este es el modo predeterminado de la función.
- 'w' (write) : Abre un archivo solo para escritura. Sobreescribe el archivo si este ya existe. Si el archivo no existe, crea un nuevo archivo para escritura.
- 'a' (append) : Abre un archivo para anexo. El puntero del archivo esta al final del archivo si este existe. Es decir, el archivo está en modo anexo. Si el archivo no existe, crea un nuevo archivo para escritura.
- 'r+' (read and write) : Abre un archivo para escritura y lectura. El puntero del archivo está localizado al comienzo del archivo.
file = open('archivoPrueba.txt', 'r')
file_2 = open('archivoPrueba_generado.txt', 'w')
for i in file:
print(i)
file_2.write('Hola\n')
file.close()
file_2.close()
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-21-b29e8e730301> in <module>()
----> 1 file = open('archivoPrueba.txt', 'r')
2 file_2 = open('archivoPrueba_generado.txt', 'w')
3 for i in file:
4 print(i)
5 file_2.write('Hola\n')
FileNotFoundError: [Errno 2] No such file or directory: 'archivoPrueba.txt'
file_2 = open('archivoPrueba_generado.txt', 'r')
for i in file_2:
print(i.strip())
file_2.close()