Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

El lenguaje Python

Trabajo previo

Lecturas

Severance, D. C. R. (2016). Python for Everybody: Exploring Data in Python 3 (S. Blumenberg & E. Hauser, Eds.). CreateSpace Independent Publishing Platform. https://www.py4e.com/html3/

Downey, Allen B. (2024). Think Python: How to Think Like a Computer Scientist (3rd ed.). O’Reilly Media. https://greenteapress.com/wp/think-python-3rd-edition/

Otros recursos

Tipos de datos

Python puede trabajar con una gran variedad de tipos de datos, entre los que están los siguientes:

NombrePalabra reservadaDescripción
EnterosintNúmeros enteros: 0, 20, -34
Punto flotantefloatNúmeros con punto decimal: 0.1, 35.0, -100.5
BooleanosboolValores lógicos de True (verdadero) o False (falso)
HilerasstrSecuencias ordenadas de caracteres: "Python", "Hola mundo"
ListaslistSecuencias ordenadas de objetos: [1, 2, 3, "cuatro", True, [5, 6, 7]]
TuplastupleSecuencias ordenadas inmutables de objetos: ("tres", [23, 34], -89, False)
ConjuntossetColecciones no ordenadas de objetos: {1, 2, "a", "b"}
DiccionariosdictPares ordenados atributo:valor:

{“nombre”:“Juan”, “apellido”:“Pérez”, “salario”: 800000}

Existen otros tipos de datos más especializados (ej. fechas, horas, enumerados). Todos pueden consultarse en la documentación de la biblioteca estándar de Python.

La función type() retorna el tipo del objeto que recibe como argumento.

type(25)
int
type(3.14)
float
type("Costa Rica")
str
type([1, 2, 3])
list
type(2 > 5)
bool

Variables

Una variable es un nombre que se asigna a un valor en la memoria de una computadora. El valor se asigna mediante el operador =.

# Asignar a la variable x el valor 10
x = 10
# Imprimir el valor de x
print(x)
10
# En un cuaderno de notas, el valor de una variable también puede desplegarse con solo escribirse en una celda
x
10
# Sumar 10 a la variable x
x = x + 10

x
20
# Realizar más operaciones aritméticas
x = x * 10 + 20 / 2

x
210.0
# Asignar a la variable nombre el valor "Marta"
nombre = "Marta"

nombre
Loading...
# A la variable lista_primos se le asigna una lista de números primos
lista_primos = [2, 3, 5, 7, 11, 13, 17]

lista_primos
[2, 3, 5, 7, 11, 13, 17]
# Tipo de lista_primos
type(lista_primos)
list
# Tipo de nombre
type(nombre)
str

Los nombres de las variables deben cumplir con varias condiciones:

  • No pueden empezar con un número (sí pueden usarse números en el resto del nombre).

  • No pueden contener espacios (se sugiere usar el guión bajo: _).

  • No pueden contener ninguno de los siguientes símbolos: '",<>:/?|\!@#%^&*~-+.

  • No deben utilizarse palabras reservadas de Python.

  • Se considera una buena práctica utilizar nombres en minúscula y con guiones bajos, para así mejorar la legibilidad.

  • Es importante utilizar nombres significativos para las variables, que reflejen su propósito.

Comentarios

Los comentarios son textos que se incluyen en el código fuente de un programa, pero que no son instrucciones.

En Python, existen varios tipos de comentarios. Los más usados, comienzan con el símbolo #. Todo lo que esté después de # es ignorado por el interpretador de Python.

# Esto es un comentario
estatura = 1.7  # Esto es otro comentario

Expresiones

Una expresión es una combinación de:

  • Literales: valores constantes de números, hileras, listas, booleanos y otros tipos de datos.

  • Variables.

  • Los dos anteriores combinados mediante operadores o funciones.

Una expresión tiene un valor numérico, textual, booleano o de otro tipo.

Aritméticas

Se utilizan para realizar operaciones matemáticas con números enteros, complejos o de punto flotante.

Operadores aritméticos

OperadorDescripciónEjemplo
+Suma4 + 3 (= 7)
-Resta10 - 5 (= 5)
*Multiplicación3 * 4 (= 12)
/División5 / 2 (= 2.5)
//División entera5 // 2 (= 2)
%Módulo5 % 2 (= 1)
**Exponenciación2 ** 3 (= 8)

Ejemplos

# Literal
0
0
# Variable
peso = 75.7
# Literal, variable, operador aritmético y función
34 + int(peso)
109

Booleanas

Se les llama también expresiones lógicas. Tienen solamente dos posibles valores:

  • True (verdadero)

  • False (falso)

Son muy importantes en Python, ya que permiten que un programa “tome decisiones” mediante estructuras de control como condicionales y ciclos.

Operadores booleanos

OperadorDescripciónEjemplo
andRetorna True si ambos operandos son verdaderos y False en caso contrario(1 < 2) and (4 > 3) [= True]
orRetorna True si al menos uno de los operandos es verdadero y False en caso contrario(10 > 20) or (40 < 30) [= False]
notRetorna True si el operando es falso y False en caso contrarionot (4 > 2) [= False]

Operadores relacionales

Se utilizan para comparar.

OperadorDescripciónEjemplo
==Igual(3 + 1) == (2 ** 2)
!=Diferente0 != 1
>Mayor que3 > 2
<Menor que2 < 3
>=Mayor o igual que3 >= (2 + 1)
<=Menor o igual que2 <= 5

Ejemplos

# Literal
True
True
# Literal y variable
peso == 100
False
# Literal, variable y operador
peso > 100
False
# Literales, variables, operador aritmético y operador relacional
(peso + 45) > 100
True
# Literales, variables, operadores aritméticos, operadores relacionales y operadores lógicos
((peso + 45) > 10) and ((x - 20) <= 0)
False

Cadenas de caracteres (strings)

Hay muchos operadores y funciones para trabajar con cadenas de caracteres. Por ejemplo, el operador + concatena (une) cadenas de caracteres.

# Concatenar cadenas de caracteres
"Manuel" + " " + "Vargas"
Loading...

Listas

Las listas también pueden concatenarse con el operador +.

# Concatenar listas
[1, 2, 3] + ["a", "b", "c"]
[1, 2, 3, 'a', 'b', 'c']

Condicionales

La sentencia if

En Python, los condicionales se implementan a través de la sentencia if. En su forma más básica, tiene la siguiente estructura:

if <condición>:
    <bloque de sentencias>

<condición> es una expresión lógica (que es verdadera o falsa). Si la condición es verdadera, se ejecutará el bloque de sentencias que está luego de los dos puntos (:). En Python, un bloque de instrucciones se identifica por la tabulación a un mismo número de espacios.

Por ejemplo:

print("Inicio del programa.")
print("Este programa indica si una persona es menor de edad.")
print("\n")

edad = 15
if edad < 18:
    print("- La persona es MENOR.")
    print("- No puede votar en las elecciones presidenciales.")
    print("- No puede tener licencia para conducir automóviles.")

print("\n")
print("Fin del programa.")
Inicio del programa.
Este programa indica si una persona es menor de edad.


- La persona es MENOR.
- No puede votar en las elecciones presidenciales.
- No puede tener licencia para conducir automóviles.


Fin del programa.

Después de ejecutar el bloque (si se cumple la condición), el programa continúa ejecutando las instrucciones que están fuera del bloque, si es que las hay.

La cláusula else

Es una cláusula opcional que se utiliza para especificar un bloque alterno que se ejecuta si no se cumple la condición del if. Tiene la siguiente estructura:

if <condición>:
    <bloque de sentencias>
else:
    <bloque de sentencias>

Solamente puede usarse una cláusula else en cada sentencia if. Por ejemplo:

print("Inicio del programa.")
print("Este programa indica si una persona es menor o adulta.")
print("\n")

edad = 22
if edad < 18:
    print("- La persona es MENOR.")
    print("- No puede votar en las elecciones presidenciales.")
    print("- No puede tener licencia para conducir automóviles.")
else:
    print("- La persona es ADULTA.")
    print("- Puede votar en las elecciones presidenciales.")
    print("- Puede tener licencia para conducir automóviles.")

print("\n")
print("Fin del programa.")
Inicio del programa.
Este programa indica si una persona es menor o adulta.


- La persona es ADULTA.
- Puede votar en las elecciones presidenciales.
- Puede tener licencia para conducir automóviles.


Fin del programa.

La cláusula elif

Es una cláusula opcional que permite especificar condiciones adicionales entre las cláusulas if y else.

if <condición>:
    <bloque de sentencias>
elif <condición>:
    <bloque de sentencias>
else:
    <bloque de sentencias>

Puede usarse cualquier cantidad de cláusulas elif. La cláusula elif puede utilizarse sin la cláusula else y viceversa.

Ejemplo:

print("Inicio del programa.")
print("Este programa indica si una persona es menor, adulta o adulta mayor.")
print("\n")

edad = 65
if edad < 18:
    print("- La persona es MENOR.")
    print("- No puede votar en las elecciones presidenciales.")
    print("- No puede tener licencia para conducir automóviles.")
elif edad < 65:
    print("- La persona es ADULTA.")
    print("- Puede votar en las elecciones presidenciales.")
    print("- Puede tener licencia para conducir automóviles.")
else:
    print("- La persona es ADULTA MAYOR.")
    print("- Puede votar en las elecciones presidenciales.")
    print("- Puede tener licencia para conducir automóviles.")
    print("- Tiene acceso gratuito al servicio público de autobuses.")
    print("- Tiene prioridad en las filas de atención en bancos y otros servicios.")

print("\n")
print("Fin del programa.")
Inicio del programa.
Este programa indica si una persona es menor, adulta o adulta mayor.


- La persona es ADULTA MAYOR.
- Puede votar en las elecciones presidenciales.
- Puede tener licencia para conducir automóviles.
- Tiene acceso gratuito al servicio público de autobuses.
- Tiene prioridad en las filas de atención en bancos y otros servicios.


Fin del programa.

Acerca de los bloques de Python

Los bloques son conjuntos de sentencias contiguas que están tabulados con la misma cantidad de espacios. La cantidad de espacios puede ser decidida por el programador, pero se recomienda usar cuatro espacios.

NOTA: deben utilizarse espacios y NO TABULADORES. Si se mezclan espacios y tabuladores, el programa puede comportarse de forma errónea.

Ejercicios

Cálculo del Índice de Masa Corporal (IMC)

Desarrolle un programa que calcule el Índice de Masa Corporal (IMC) de una persona. El IMC se calcula mediante la fórmula:

IMC=pesoestatura2\text{IMC} = \frac{\text{peso}}{\text{estatura}^2}

El peso se expresa en kilogramos y la estatura en metros. El valor del IMC se categoriza de acuerdo con la siguiente tabla:

CategoríaRango de IMC
Peso bajoMenor que 18.5
Peso normalMayor o igual que 18.5 y menor que 25
SobrepesoMayor o igual que 25

Por ejemplo, si una persona pesa 70 kg y mide 1.75 m, su IMC es:

22.9=701.752\text{22.9} = \frac{\text{70}}{\text{1.75}^2}

Y corresponde a peso normal.

Solución

# ENTRADA
peso = 70
estatura = 1.71


# PROCESAMIENTO
# Cálculo del IMC
imc = peso / (estatura ** 2)

# Determinación de la categoría del IMC
if imc < 18.5:
    categoria = "peso bajo"
elif imc < 25:
    categoria = "peso normal"
else:
    categoria = "sobrepeso"


# SALIDA
print(f"El IMC de la persona es {imc:.1f} y se considera {categoria}.")
El IMC de la persona es 23.9 y se considera peso normal.

Note el empleo del modelo Entrada - Procesamiento - Salida para estructurar la solución:

  • Se reciben datos de entrada (ej. números).

  • Se procesan (ej. con cálculos aritméticos).

  • Se generan salidas (resultados de los cálculos).

Cálculo de coordenadas en grados decimales

Calcule la longitud y la latitud en grados decimales a partir de su equivalente en grados, minutos y segundos. Para estructurar la solución, utilice el modelo Entrada - Procesamiento - Salida.

Excepciones

Las excepciones son un mecanismo que provee Python para manejar errores o situaciones inesperadas que se producen durante la ejecución de los programas. Mediante este mecanismo, el curso de ejecución del programa se interrumpe cuando ocurre un error y una excepción es “levantada” (raised). El control pasa entonces a otro bloque de instrucciones, el cual se encarga de manejar el error.

Las sentencias try y except

Las sentencias try y except son las que implementan el manejo de excepciones en Python. En el bloque try se coloca el código que puede ocasionar que se levante la excepción y en el bloque except se ubica el código que maneja la excepción.

La estructura básica es la siguiente:

try:
    <bloque de sentencias que puede generar un error>
except:
    <bloque de sentencias que maneja el error>

Por ejemplo, un llamado a la función float(), que convierte una hilera de texto a un número en punto flotante (i.e. decimal), puede ocasionar un error si la hilera de entrada no corresponde a un número.

x = float("8,5")
x
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[1], line 1
----> 1 x = float("8,5")
      2 x

ValueError: could not convert string to float: '8,5'

El siguiente bloque de código maneja el error mediante un bloque try except y evita el mensaje de error que genera el interpretador de Python, sustituyéndolo por uno más amigable.

try:
    x = float("8,5")
except:
    print("Por favor utilice un número")

El siguiente ejemplo maneja el mismo tipo de error. En este caso, la función input() se utiliza para leer un número desde el teclado.

fahr_hilera = input('Ingrese la temperatura en grados Fahrenheit: ')

try:
    fahr = float(fahr_hilera)
    celsius = (fahr - 32.0) * 5.0 / 9.0
    print("El equivalente el grados Celsius es: ", celsius)
except:
    print('Por favor ingrese un número.')

Ejercicios

Modificación del programa que calcula el IMC

Modifique el programa que calcula el IMC y maneje las excepciones que puedan producirse.

Ciclos

Los ciclos son bloques de instrucciones que se ejecutan varias veces. Para manejar ciclos, Python provee dos mecanismos: la sentencia while y la sentencia for.

La sentencia while

La sentencia while se utiliza para ejecutar repetidamente un bloque de instrucciones mientras que una condición sea verdadera. Su estructura básica es:

while <condicion>:
    <bloque de sentencias>

Típicamente, en el bloque hay instrucciones que provocan que la condición se vuelva falsa eventualmente y el ciclo termine. De lo contrario, se producirá un ciclo infinito. Nótese que si la condición ya es falsa cuando el flujo del programa llega al while, el bloque no se ejecutará nunca.

Ejemplos:

# Contador de números en orden ascendente

n = 1
while n <= 5:
    print(n)
    n = n + 1
1
2
3
4
5
# Contador de números en orden descendente

n = 5
while n >= 1:
    print(n)
    n = n - 1
5
4
3
2
1
# Recorrido de una hilera

texto = "Lorem ipsum"

n = 0
while n < len(texto) :
    print(texto[n])
    n = n + 1
L
o
r
e
m
 
i
p
s
u
m
# Validación de entrada de datos

numero = -1
while not(numero >= 5 and numero <= 10) :
    numero = float(input("\nPor favor ingrese un número entre 5 y 10: "))
    if not(numero >= 5 and numero <= 10) :
        print("El número no está entre 5 y 10, por favor inténtelo de nuevo...")
print("¡Gracias!")

Por favor ingrese un número entre 5 y 10: 9
¡Gracias!

La sentencia for

La sentencia for se utiliza para iterar sobre los elementos de estructuras de datos como secuencias (ej. hilera, lista, tupla). Su sintaxis puede resumirse de la siguiente manera:

for <variable_iteracion> in <secuencia>:
    <bloque de sentencias>

La variable de iteración es una variable que asume el valor del elemento que se procesa en cada iteración.

Ejemplos:

# Recorrido de una lista

alumnos = ['Juan', 'María', 'Pedro']
for alumno in alumnos:
    print("¡Buenos días " + alumno + "!")
¡Buenos días Juan!
¡Buenos días María!
¡Buenos días Pedro!
# Recorrido de un rango de números
# La función range(a, b) crea una secuencia de números entre a y b-1.

for numero in range(1, 11):
    print(numero)
1
2
3
4
5
6
7
8
9
10
# Cálculo de la cantidad de elementos de una lista

lista = [3, 41, 12, 9, 74, 15]
contador = 0

print("Lista: ", lista)

for item in lista :
    contador += 1 # esto es lo mismo que: contador = contador + 1
print("Cantidad de elementos:", contador)
Lista:  [3, 41, 12, 9, 74, 15]
Cantidad de elementos: 6
# Suma de los elementos de una lista

lista = [3, 41, 12, 9, 74, 15]
suma = 0

print("Lista: ", lista)

for item in lista :
    suma += item
print("Suma de los elementos:", suma)
Lista:  [3, 41, 12, 9, 74, 15]
Suma de los elementos: 154

La sentencia break

La sentencia break finaliza un ciclo y pasa el flujo del programa a la instrucción que sigue al bloque del while o del for.

# Busca el primer número de una lista que sea mayor que 20 y sale del ciclo una vez que lo ha encontrado

lista = [3, 41, 12, 9, 74, 15]
print("Lista: ", lista)

for item in lista :
    if item > 20 :
        print("Primer número mayor que 20: ", item)
        break
Lista:  [3, 41, 12, 9, 74, 15]
Primer número mayor que 20:  41

La sentencia continue

La sentencia continue interrumpe la iteración actual de un ciclo y continúa con la siguiente. No sale completamente del ciclo, como la sentencia break.

# Imprime el doble de cada uno de los números mayores que 20 que hay en una lista.
# Si el número de la iteración es menor o igual que 20, utiliza la sentencia continue para "saltarse" esa iteración.

lista = [3, 41, 12, 9, 74, 15]
print("Lista: ", lista)

for item in lista :
    if item <= 20:
        continue
    print(item * 2)
Lista:  [3, 41, 12, 9, 74, 15]
82
148

Ejercicios

Promedio de los elementos de una lista

Escriba un programa que calcule el promedio de los elementos de una lista.

Funciones

Las funciones son conjuntos de sentencias que tienen un nombre y realizan una tarea específica como, por ejemplo, un cálculo matemático o un procesamiento de texto. Por lo general, una función recibe datos de entrada, llamados argumentos, y retorna un valor.

El uso de funciones tiene múltiples ventajas, entre las que pueden mencionarse:

  • Mejoran la legibilidad de los programas: mediante el uso de nombres significativos para las secciones de código que realizan una tarea.

  • Evitan la duplicidad de código fuente: una función se define una vez y luego pueden ser invocada muchas veces en un programa.

  • Facilitan el mantenimiento de los programas: al realizar las modificaciones en el código de una función, se evita la necesidad de realizarlas en múltiples secciones de un programa.

  • Facilitan la reutilización de código: mediante mecanismos como módulos de funciones (archivos con colecciones de funciones).

Funciones predefinidas

Python tiene una lista de funciones predefinidas. Algunas se han utilizado ya en este curso:

# type(): tipo de datos de una expresión
type(20)
int
# int(): convierte una expresión a un número de tipo entero (int)
int("100")
100
# len(): retorna la cantidad de elementos (items) de una hilera, lista
# u otros tipos de secuencias y de colecciones.
provincias = ["Limón", "Guanacaste", "Puntarenas", "Heredia", "Alajuela", "Cartago", "San José"]
len(provincias)
7
# pow(): eleva un número a una potencia
pow(5, 2)
25

Estas funciones predefinidas pueden invocarse en cualquier parte de un programa en Python, con solo escribir su nombre y argumentos.

Funciones definidas en módulos de la biblioteca estándar

La biblioteca estándar de Python es el conjunto de módulos que se incluye con cada distribución de Python, sin necesidad de instalarlos separadamente. Estos módulos proporcionan un conjunto de funciones más especializadas en áreas como matemáticas, multimedios, redes y otras. Para utilizar estas funciones, primero debe importarse el módulo del que forman parte mediante la sentencia import. Por ejemplo:

import math

La instrucción anterior brinda acceso a las funciones del módulo math, que contiene un conjunto de funciones matemáticas. Por ejemplo:

# math.factorial(): retorna el factorial de un número
math.factorial(4)
24
# math.sqrt(): retorna la raíz cuadrada de un número
math.sqrt(9)
3.0

Nótese que para invocar a estas funciones, debe escribirse antes el nombre del módulo y un punto. También puede usarse la siguiente sintaxis.

from math import factorial, sqrt
factorial(4)
24
sqrt(9)
3.0

Funciones definidas en módulos de paquetes externos

No están incluidos en la biblioteca estándar de Python y deben instalarse de acuerdo con el procedimiento definido por sus autores, como por ejemplo con los programas administradores de paquetes pip y Conda.

Muchos de estos paquetes se distribuyen a través de repositorios como el Python Package Index (PyPI), que a la fecha alberga más de 600000 proyectos desarrollados por la comunidad de desarrolladores en Python.

Sintaxis para la definición de nuevas funciones

En Python, el programador puede definir nuevas funciones a través de la palabra reservada def, con la siguiente sintaxis:

def <nombre_funcion>(<arg1>, <arg2>, ..., <argn>):
    <bloque de sentencias>
    return <valor_retorno>
  • El nombre de la función es elegido por el usuario y sigue las mismas reglas y recomendaciones que en el caso de los nombres de las variables.

  • Los argumentos se especifican entre paréntesis y se separan por comas. Si la función no tiene argumentos, deben incluirse paréntesis vacíos.

  • La palabra reservada return especifica el valor de retorno de la función.

Ejemplos:

# Definición de una función
def fahrenheit_a_celsius(grados_fahrenheit):
    grados_celsius = (grados_fahrenheit - 32.0) * 5.0 / 9.0
    return grados_celsius

# Llamados a la función
print(fahrenheit_a_celsius(104))
print(fahrenheit_a_celsius(50))
print(fahrenheit_a_celsius(32))
print(fahrenheit_a_celsius(14))
40.0
10.0
0.0
-10.0

Ejercicios

Cálculo del IMC

Escriba un programa que:

  • Le solicite al usuario su peso y su estatura.

  • Calcule su índice de masa corporal (IMC).

  • Imprima el valor del índice y si este es considerado bajo (menor que 18.5), normal (entre 18.5 y 25) o alto (mayor o igual que 25).

Los detalles del cálculo del índice están en https://www.diabetes.ca/diabetes-and-you/healthy-living-resources/weight-management/body-mass-index-bmi-calculator.

Como parte del programa, defina una función llamada imc() que retorne el IMC a partir del peso y la estatura y otra función llamada imc_interpretacion() que retorne en una hilera si el IMC es bajo, normal o alto.

Programación orientada a objetos

La Programación Orientada a Objetos (POO) es un paradigma de programación basado en el concepto de objeto. En el contexto de la POO, los objetos son entidades que poseen:

  • Estado: implementado con un conjunto de variables llamadas propiedades.

  • Comportamiento: implementado con un conjunto de funciones llamadas métodos.

Los objetos se agrupan en clases. Todos los objetos de una clase contienen los mismos métodos y propiedades. Una clase puede verse como una plantilla a partir de la cual se crean objetos. A un objeto creado a partir de una clase se le llama también una instancia de esa clase.

# Definición de la clase CuentaBancaria
class CuentaBancaria:
    # Propiedades
    propietario = ""
    balance = 0

    # Métodos
    # Constructor de la clase: crea nuevas instancias e inicializa las propiedades
    def __init__(self, propietario, balance):
        self.propietario = propietario
        self.balance = balance

    # Método para realizar depósitos
    def depositar(self, monto):
        self.balance = self.balance + monto

    # Método para realizar retiros
    def retirar(self, monto):
        self.balance = self.balance - monto

    # Método para imprimir información
    def imprimir_informacion(self):
        print("Propietario: " + self.propietario + ", Balance: " + str(self.balance))

Una vez definida una clase, pueden declararse objetos o instancias de esta. Las instancias pueden invocar métodos de la clase mediante la notación:

    <instancia>.<método>

A continuación, se presentan algunos ejemplos de instancias de la clase CuentaBancaria y de llamados a sus métodos.

# Instancia cuenta01
cuenta01 = CuentaBancaria("Juan Pérez", 1000)
cuenta01.depositar(5000)
cuenta01.imprimir_informacion()
# Instancia cuenta02
cuenta02 = CuentaBancaria("María Pérez", 10000)
cuenta02.depositar(15000)
cuenta02.retirar(24000)
cuenta02.imprimir_informacion()

Objetos y clases predefinidas de Python

Todos los datos de un programa en Python se representan mediante objetos o por relaciones entre objetos. Los tipos de datos corresponden a las clases de los objetos.

# Clase int
print(type(234))
<class 'int'>
# Clase float
print(type(10.3))
<class 'float'>
# Clase bool
print(type(True))
<class 'bool'>
# Clase list
print(type([True, 23, 20.6, (1, 2, 3)]))
<class 'list'>

El que un dato sea un objeto, implica que además de su valor tiene un conjunto de operaciones asociadas (métodos) que se aplican mediante operadores (ej. +, -, *, %) o funciones (ej. len(), type()). Tanto los operadores como las funciones pueden aplicarse en varias clases. Por ejemplo, el operador + se usa para int, float, str, list y otras clases; len() se usa también en varios tipos de datos.

Estructuras de datos: cadenas de caracteres, listas y diccionarios

La clase str

Como ya se ha explicado, la clase str se utiliza para representar datos textuales en Python. Esta clase proporciona un conjunto de métodos, de los que se presentan algunos ejemplos a continuación.

# str.capitalize(): retorna una copia de 'str' con el primer carácter en mayúscula y el resto en minúscula.
'hola'.capitalize()
Loading...
# str.lower(): retorna una copia de 'str' con todos los caracteres en minúscula
'HOLA'.lower()
Loading...
# str.count(sub[, start[, end]]): retorna el número de hileras no traslapadas de la subhilera 'sub'
# en el rango [start, end], el cual es opcional, de 'str'.

cita_socrates = 'Solo sé que no sé nada'

cita_socrates.count('sé') # se cuentan todas las ocurrencias de 'sé'
2
# str.find(sub[, start[, end]]): retorna el índice menor en donde se encuentra 'sub'
# en el rango [start, end] de 'str'

cita_socrates.find('Solo')
0
# str.replace(old, new[, count]): retorna una copia de 'str' con todas las ocurrencias
# de la subhilera 'old' reemplazadas por 'new'.
# Si 'count' es especificado, solo se reemplazan las primeras 'count' ocurrencias de 'old'
cita_socrates.replace("Solo", "Solamente")
Loading...

Formateo de hileras

Se implementa a través del método str.format(). Pueden verse varios ejemplos en https://pyformat.info/.

# Formateo de números enteros
'La suma de 3 + 4 es {} y la resta de 10 - 6 es {}'.format(7, 4)
Loading...
# Formateo de un número en punto flotante (6 caracteres, 4 después del punto decimal)
'La relación entre la longitud de una circunferencia y su diámetro es {:6.4f}'.format(3.141592653589793)
Loading...
# Formateo de fecha y hora
from datetime import datetime
'{:%d/%m/%Y %H:%M}'.format(datetime(2001, 2, 3, 4, 5))
Loading...

El formateo también puede realizarse a través de f-strings.

longitud_centroide_cr = -84.19451
latitud_centroide_cr = 9.972725

# Hilera formateada con f-string
f'El centroide de Costa Rica se ubica aproximadamente en {longitud_centroide_cr} grados de longitud oeste y {latitud_centroide_cr} grados de latitud norte.'
Loading...
# Hilera formateada con f-string para desplegar dos decimales
f'El centroide de Costa Rica se ubica aproximadamente en {longitud_centroide_cr:.2f} grados de longitud oeste y {latitud_centroide_cr:.2f} grados de latitud norte.'
Loading...

La clase list

La clase list implementa secuencias mutables (i.e. modificables) de objetos que se especifican como ítems separados por comas y encerrados entre paréntesis cuadrados.

Se presentan a continuación algunos ejemplos de operaciones y métodos de la clase list, los cuales son comunes a todas las clases de secuencias mutables:

# Definición de una lista
lista = [10, 20, 30, 40, 50]
# Borrado de un elemento con base en su posición
del lista[4]
lista
[10, 20, 30, 40]
# list.append(x): agrega 'x' al final de 'list'
lista.append(50)
lista
[10, 20, 30, 40, 50]
# list.insert(i, x): inserta 'x' en la posición 'i'
lista.insert(4, 45)
lista

La clase dict

La clase dict (o diccionario) implementa un conjunto de pares ordenados de la forma llave:valor. Por ejemplo:

# Definición de un diccionario
persona = {"cedula":"408730281", "nombre":"Juan", "apellido":"Pérez"}

Ejemplos de operaciones y métodos de la clase dict:

# Retorno de valor correspondiente a una llave
persona["cedula"]
Loading...
# Asignación de un valor a una llave
persona["nombre"] = "María"
persona
{'cedula': '408730281', 'nombre': 'María', 'apellido': 'Pérez'}
# Verificación de la existencia de una llave
"apellido" in persona
True
# dict.items(): retorna los ítems (pares (llave, valor)) de 'dict'
persona.items()
dict_items([('cedula', '408730281'), ('nombre', 'María'), ('apellido', 'Pérez')])
# dict.keys(): retorna las llaves de 'dict'
persona.keys()
dict_keys(['cedula', 'nombre', 'apellido'])
# dict.values(): retorna los valores de 'dict'
persona.values()
dict_values(['408730281', 'María', 'Pérez'])
# dict.get(key[, default]): retorna el valor de la llave 'key' en 'dict'
persona.get("apellido")
Loading...