Conceptos Básicos Python
Conceptos Básicos Python
Ejecución de Código
La ejecución se refiere al proceso por el cual un programa o script es iniciado y llevado a cabo por el ordenador,
siguiendo las instrucciones que ha sido programado para realizar. En Python, esto normalmente se hace a través de
un intérprete que lee y ejecuta el código, línea por línea.
Para ejecutar un script de Python desde la línea de comandos o terminal, primero debes asegurarte de
tener Python instalado en tu computadora. Luego, sigue estos pasos:
Recuerda que el nombre del archivo debe tener la extensión ".py" y que debes tener Python instalado
correctamente para que funcione.
El mensaje de error puede incluir detalles sobre el tipo de error, la línea de código donde ocurrió y una
descripción del problema. Algunos ejemplos comunes de errores incluyen la falta de una variable, la
llamada a una función inexistente o la escritura incorrecta de una sintaxis.
Es importante leer cuidadosamente el mensaje de error para comprender qué causó el problema y
corregirlo en el código. A medida que te familiarices con los mensajes de error, podrás diagnosticar y
solucionar errores más fácilmente.
Sintaxis
La sintaxis se refiere al conjunto de reglas que definen cómo deben estructurarse y escribir las instrucciones en un
lenguaje de programación. Una sintaxis correcta es esencial para que el intérprete o compilador pueda entender y
ejecutar el código.
1 -
● ¿Por qué es importante seguir las reglas de sintaxis en Python?
Es importante seguir las reglas de sintaxis en Python porque el lenguaje está diseñado de manera que el
intérprete pueda entender y ejecutar correctamente el código. Las reglas de sintaxis establecen la
estructura y las reglas gramaticales que deben seguirse para que el código sea válido y funcione
correctamente.
Aquí hay algunas razones por las que es importante seguir las reglas de sintaxis en Python:
1. Legibilidad: Seguir las reglas de sintaxis hace que el código sea más fácil de leer y entender para otros
programadores, incluido tú mismo en el futuro. Esto facilita la colaboración en proyectos y el
mantenimiento del código.
3. Evitar errores: Las reglas de sintaxis están diseñadas para ayudar a evitar errores comunes. Si sigues las
reglas, es menos probable que cometas errores como errores de escritura, mal uso de funciones o
referencias incorrectas de variables.
En resumen, seguir las reglas de sintaxis en Python es importante para garantizar la legibilidad, la
ejecución correcta y evitar errores en tu código.
Si hay un error de sintaxis en tu código, el intérprete de Python mostrará un mensaje de error y no podrá
ejecutar el código. Esto sucede porque el intérprete no puede comprender o interpretar correctamente la
estructura del código debido al error de sintaxis.
El mensaje de error que se muestra generalmente incluirá información sobre el tipo de error de sintaxis y
la ubicación exacta donde se produjo. Puede indicar qué carácter o qué parte del código es problemático.
Es importante prestar atención a los mensajes de error de sintaxis, ya que te ayudarán a identificar y
corregir el error. Algunos ejemplos comunes de errores de sintaxis incluyen:
Para solucionar el error de sintaxis, debes revisar cuidadosamente el código y corregir el error identificado
en el mensaje de error. Una vez que el error de sintaxis se haya corregido, podrás ejecutar el código
correctamente.
● ¿Puede un programa ser sintácticamente correcto, pero aun así no funcionar como se espera?
Sí, es posible que un programa sea sintácticamente correcto, es decir, que cumpla con todas las reglas de
sintaxis de Python, pero aún así no funcione como se espera. Esto se debe a que la sintaxis solo se refiere
a la estructura y la gramática del código, pero no garantiza que la lógica o el resultado sean los deseados.
Aquí hay algunas razones por las que un programa sintácticamente correcto puede no funcionar como se
espera:
1. Error lógico: Puede haber un error en la lógica del programa, lo que significa que la secuencia de
instrucciones no produce los resultados esperados. Esto puede deberse a una mala comprensión del
problema, un error en la secuencia de instrucciones o una lógica incorrecta en las condiciones o bucles.
2 -
2. Error de tiempo de ejecución: Un programa puede tener un error de tiempo de ejecución, que ocurre
durante la ejecución del programa debido a una operación no válida o una excepción que no se maneja
adecuadamente. Estos errores pueden ocurrir incluso si el código está sintácticamente correcto.
3. Error de lógica del programador: El programador puede haber cometido un error al diseñar o
implementar el programa, incluso si el código está sintácticamente correcto. Puede haber una falta de
consideración de casos especiales, falta de validación de datos de entrada o simplemente un mal cálculo
en la solución.
En resumen, un programa sintácticamente correcto puede no funcionar como se espera debido a errores
lógicos, errores de tiempo de ejecución o errores en la lógica del programador. Es importante revisar y
probar cuidadosamente el código para asegurarte de que funcione correctamente, más allá de la
corrección de la sintaxis.
En programación, una instrucción es una unidad de código que realiza una acción específica. Puede ser
una línea de código o un conjunto de líneas de código que se ejecutan de manera secuencial.
Las instrucciones son la forma en que se le indica al programa qué hacer paso a paso. Pueden incluir
operaciones aritméticas, asignaciones de variables, llamadas a funciones, estructuras condicionales (como
if-else), bucles (como for o while), entre otros.
Cada instrucción tiene una sintaxis específica que debe seguirse para que el programa pueda
comprenderla y ejecutarla correctamente. La secuencia en la que se escriben y ejecutan las instrucciones
es importante, ya que determina el flujo del programa y el resultado final.
En resumen, una instrucción en programación es una unidad de código que realiza una acción específica y
se utiliza para construir programas que resuelven problemas y realizan tareas.
Una instrucción es una unidad de código que realiza una acción específica dentro de un programa. Puede
ser una línea de código o un conjunto de líneas de código que se ejecutan secuencialmente. Las
instrucciones son la forma en que se le indica al programa qué hacer paso a paso.
Por otro lado, una función es un bloque de código que se puede llamar desde otras partes del programa
para realizar una tarea específica. Una función puede contener un conjunto de instrucciones y puede
tener parámetros que se utilizan para pasar valores a la función. Una función puede devolver un
resultado, que se conoce como valor de retorno.
La principal diferencia entre una instrucción y una función radica en su reutilización y modularidad. Una
instrucción se ejecuta directamente en el lugar donde se encuentra en el programa, mientras que una
función se define una vez y se puede llamar desde diferentes partes del programa, lo que promueve la
reutilización de código y la modularidad.
En resumen, una instrucción es una unidad de código que realiza una acción específica dentro de un
programa, mientras que una función es un bloque de código que se puede llamar desde otras partes del
programa para realizar una tarea específica y promover la reutilización de código.
3 -
● ¿Qué sucedería si se ejecuta un programa sin instrucciones?
Si ejecutas un programa de Python sin ninguna instrucción, el programa simplemente se ejecutará y luego
terminará. No habrá ninguna salida visible y no ocurrirá ninguna tarea porque no hay código que le
indique al programa qué hacer.
Por ejemplo, si creas un archivo llamado mi_programa.py sin ninguna instrucción dentro, y luego ejecutas
el comando python mi_programa.py en tu terminal o consola, el programa se ejecutará sin hacer nada y
volverá al prompt de comandos.
Es importante tener en cuenta que un programa de Python necesita tener al menos una instrucción (como
una asignación, una operación, una función, etc.) para hacer algo significativo. De lo contrario, no habrá
ninguna acción o salida observable.
Identación
La identación se refiere a los espacios o tabulaciones al comienzo de una línea de código. En muchos lenguajes, la
identificación es estética, pero en Python, determina la estructura del código, especialmente en bloques de código
como bucles o condicionales.
La identación en Python es crítica porque no solo es una cuestión de estilo, sino que es parte de la sintaxis
del lenguaje. Esto significa que la forma en que sangras o "indenta" tu código afecta directamente la
estructura y ejecución del programa.
En otros lenguajes de programación, la identación es una cuestión de estilo y legibilidad del código, pero
no afecta la ejecución. En Python, en cambio, la identación determina los bloques de código y cómo se
agrupan las instrucciones.
Por ejemplo, en un bucle for en Python, el bloque de código que se ejecuta en cada iteración está
determinado por la identación. Aquí hay un ejemplo:
for i in range(5):
print(i)
En este caso, print(i) está indentado, lo que significa que es parte del bucle for. Si no estuviera indentado,
Python generaría un error de sintaxis.
Debido a que Python utiliza la identación en lugar de llaves o palabras clave para definir bloques de
código, esto promueve un código más limpio y legible, pero también significa que la identación adecuada
es crucial para que el programa funcione correctamente.
Si no sigues la identación adecuada, es posible que obtengas errores de sintaxis o que el programa se
comporte de manera inesperada. Por lo tanto, es fundamental prestar atención a la identación al escribir
código en Python.
● ¿Cómo indica la identación que un bloque de código pertenece a una estructura de control específica?
Por ejemplo, considera el siguiente código que incluye un bucle for y una estructura condicional if:
for i in range(5):
if i % 2 == 0:
print(f"{i} es par")
4 -
else:
print(f"{i} es impar")
En este ejemplo:
La línea for i in range(5): comienza el bucle for y se termina con dos puntos :. La siguiente línea (la primera
dentro del bucle) está indentada con cuatro espacios y pertenece al bloque del bucle for.
Dentro del bucle for, hay una estructura condicional if i % 2 == 0:. De nuevo, se termina con dos puntos :.
Las líneas siguientes están indentadas con otros cuatro espacios y pertenecen al bloque del if.
Dentro del if, hay una instrucción print(f"{i} es par") y una instrucción else: que comienza la rama else de
la estructura condicional. Ambas líneas están indentadas con otros cuatro espacios y pertenecen al bloque
del if.
La instrucción print(f"{i} es impar") está indentada al mismo nivel que la instrucción print(f"{i} es par") y
pertenece al bloque del else.
Si se mezclan espacios y tabulaciones en la indentación de un mismo script de Python, esto puede llevar a
errores de indentación y el código podría no funcionar correctamente. Python requiere coherencia en la
forma en que se realiza la indentación.
Por esta razón, es importante elegir un estilo de indentación (ya sea espacios o tabulaciones) y
mantenerlo consistente en todo tu código. La PEP 8, que es la guía de estilo de código para Python,
recomienda usar espacios en lugar de tabulaciones para la indentación.
Si estás utilizando un editor de texto o un entorno de desarrollo que es compatible con Python,
generalmente se configurará automáticamente para usar espacios en lugar de tabulaciones. Además,
muchos editores de texto tienen la opción de convertir las tabulaciones en espacios o viceversa.
Si alguna vez te encuentras con un código que tiene mezcla de espacios y tabulaciones, te recomiendo
corregirlo para que sea coherente antes de ejecutarlo para evitar errores de indentación.
Tipos de Dato
Los tipos de datos se refieren a las diferentes categorías de datos que pueden ser procesados por un lenguaje de
programación. Python, como muchos otros lenguajes, incluye tipos de datos como enteros, flotantes, cadenas y
booleanos, entre otros.
Python tiene varios tipos de datos primitivos comunes que se utilizan para representar diferentes tipos de
información. Los tipos de datos primitivos más comunes en Python incluyen:
5 -
● Booleanos (bool): Representan valores de verdad. Pueden ser True (verdadero) o False (falso).
Se utilizan en expresiones lógicas y de control de flujo, como condicionales y bucles.
● Listas (list): Son colecciones ordenadas de elementos, que pueden ser de diferentes tipos. Se
definen usando corchetes []. Por ejemplo: [1, 2, 3], ['manzana', 'banana', 'cereza'].
● Tuplas (tuple): Son similares a las listas, pero son inmutables, lo que significa que no se pueden
modificar después de su creación. Se definen usando paréntesis (). Por ejemplo: (1, 2, 3), ('rojo',
'verde', 'azul').
● Diccionarios (dict): Son colecciones de pares clave-valor. Cada elemento tiene una clave única
que se utiliza para acceder al valor asociado. Se definen usando llaves {}. Por ejemplo:
{'nombre': 'Juan', 'edad': 30, 'ciudad': 'Buenos Aires'}.
● Conjuntos (set): Son colecciones desordenadas de elementos únicos. Se definen usando llaves {}
o la función set(). Por ejemplo: {1, 2, 3}, {'manzana', 'banana', 'manzana'}.
● Estos son los tipos de datos primitivos más comunes en Python, y cada uno tiene sus propias
características y usos. Python también permite crear tipos de datos personalizados mediante la
definición de clases, lo que amplía la flexibilidad del lenguaje.
En Python, puedes determinar el tipo de datos de una variable usando la función type().
Ejemplo:
x=5
y = "Hola"
z = 3.14
En este ejemplo, se crea una variable x que contiene un entero, y que contiene una cadena y z que
contiene un número de punto flotante. Luego, se utiliza la función type() para imprimir el tipo de cada
variable.
La salida será <class 'int'> para x, <class 'str'> para y y <class 'float'> para z, indicando que x es de tipo
entero, y es de tipo cadena y z es de tipo punto flotante.
Esta función es útil cuando necesitas saber qué tipo de datos está almacenado en una variable, lo cual
puede ser importante en situaciones donde necesitas realizar operaciones específicas o asegurarte de que
los tipos de datos son compatibles.
La conversión de tipos, también conocida como "casting", es el proceso de cambiar el tipo de un valor o
variable en un lenguaje de programación. Esto permite que un valor sea interpretado y utilizado como un
tipo diferente al que originalmente se le asignó.
Operaciones y Cálculos: A veces, necesitas realizar operaciones entre valores de diferentes tipos. Por
ejemplo, sumar un entero y un número de punto flotante. En este caso, necesitarías convertir uno de los
valores para que coincida con el tipo del otro antes de realizar la operación.
x=5
y = 3.14
6 -
resultado = x + y # Esto generaría un error porque los tipos son diferentes
Interacción con Funciones o Bibliotecas: A veces, las funciones o bibliotecas pueden esperar ciertos tipos
de datos como entrada. Si tienes un valor de un tipo diferente, es posible que necesites convertirlo antes
de pasarlo como argumento.
x = "10"
Formateo y Presentación de Datos: Para mostrar datos de una manera específica en una interfaz de
usuario o en un informe, puede ser necesario convertirlos a un formato adecuado.
numero = 3.14159265359
Manipulación de Datos: A veces, los datos se almacenan o se obtienen en un tipo específico, pero
necesitas manipularlos de una manera que requiere un tipo diferente.
edad = "30"
Es importante tener en cuenta que no todas las conversiones de tipos son seguras y pueden llevar a
pérdida de información o errores si se hace de manera incorrecta. Por lo tanto, es esencial comprender
los tipos de datos y cómo se comportan al realizar conversiones.
La terminal o línea de comandos es una interfaz de texto que te permite interactuar con tu computadora
a través de comandos de texto en lugar de una interfaz gráfica de usuario. Aquí te explico algunas de las
principales razones por las que se utiliza la terminal:
Administración de Archivos y Directorios: Puedes navegar por tu sistema de archivos, crear, mover, copiar
y eliminar archivos y directorios fácilmente utilizando comandos en la terminal.
Gestión de Procesos: Puedes ver y administrar los procesos en ejecución, iniciar y detener aplicaciones, y
gestionar recursos del sistema utilizando comandos como ps, kill, top, entre otros.
Instalación y Gestión de Software: Muchos sistemas operativos basados en Unix (como Linux y macOS)
permiten instalar y gestionar software utilizando la línea de comandos. Por ejemplo, en Linux, se utilizan
comandos como apt (en Debian y Ubuntu) o yum (en CentOS y Fedora) para instalar paquetes.
Configuración del Sistema: Puedes configurar y modificar la configuración del sistema operativo, como la
red, la seguridad y otras configuraciones, a través de la línea de comandos.
Desarrollo de Software: Los desarrolladores a menudo utilizan la terminal para compilar, depurar y
administrar proyectos de software. Herramientas de compilación y entornos de desarrollo a menudo
tienen interfaces de línea de comandos.
7 -
Acceso Remoto y Servidores: En entornos de servidor, donde no hay una interfaz gráfica, la terminal es la
principal forma de interactuar con el sistema. También se utiliza para la administración remota a través de
conexiones SSH.
En resumen, la terminal proporciona una forma poderosa y flexible de interactuar con tu sistema
operativo y realizar una amplia variedad de tareas, desde tareas administrativas hasta desarrollo de
software y administración de servidores.
Abre la Terminal: Abre la terminal o línea de comandos en tu sistema operativo. La forma de hacerlo
puede variar según el sistema operativo que estés utilizando. En sistemas basados en Unix (como Linux o
macOS), generalmente puedes encontrar la terminal en el menú de aplicaciones o utilizar un atajo de
teclado como Ctrl + Alt + T. En Windows, puedes buscar "cmd" o "Powershell" en el menú Inicio.
Navega al Directorio del Script (Opcional): Si el script de Python está en un directorio diferente al
directorio en el que te encuentras en la terminal, debes navegar hasta el directorio donde se encuentra el
script. Utiliza los comandos cd (cambiar directorio) para navegar por los directorios.
Por ejemplo, si tu script está en el directorio /ruta/a/mi_script, puedes navegar a ese directorio en la
terminal de la siguiente manera (en sistemas basados en Unix):
cd /ruta/a/mi_script
Ejecuta el Script: Una vez que estés en el directorio correcto o si el script está en el directorio actual,
puedes ejecutar el script utilizando el comando python seguido del nombre de tu archivo de script. Por
ejemplo:
python mi_script.py
Asegúrate de reemplazar mi_script.py con el nombre real de tu archivo de script. Si estás usando Python
3, puedes usar python3 en lugar de python si tienes ambas versiones instaladas y deseas especificar la
versión que deseas utilizar.
Presiona Enter: Después de escribir el comando, presiona la tecla "Enter" para ejecutar el script.
Si el script está escrito correctamente y no contiene errores, se ejecutará y producirá cualquier salida que
hayas especificado en el código, como impresiones en pantalla. Si hay errores en el script, verás mensajes
de error en la terminal que te indicarán qué salió mal. Deberás corregir esos errores antes de que el script
se ejecute correctamente.
Comentarios
son notas o explicaciones en el código que no son ejecutadas por el intérprete. En Python, los comentarios se crean
usando el símbolo #. Son útiles para clarificar y documentar el código.
8 -
En Python, puedes escribir comentarios para proporcionar explicaciones o anotaciones en tu código. Los
comentarios son texto que Python ignora durante la ejecución del programa. Se utilizan para hacer el
código más legible y comprensible para los programadores y para documentar partes del código.
Para escribir un comentario en Python, puedes usar el símbolo # seguido del texto del comentario. Aquí
hay algunos ejemplos:
Es buena práctica utilizar comentarios para explicar el propósito de partes del código, especialmente en
secciones que puedan no ser intuitivas para otros programadores o para ti mismo en el futuro. Esto hace
que el código sea más fácil de entender y mantener.
"""
"""
'''
'''
Ten en cuenta que los comentarios de varias líneas también pueden ser encerrados entre comillas triples,
ya sean comillas simples (''') o comillas dobles ("""). Esto es útil cuando necesitas comentarios que
abarquen varias líneas de código.
Salida de Datos
Se refiere a la manera en que un programa muestra o retorna información al usuario. En Python, la función print()
es comúnmente utilizada para mostrar datos en la terminal o consola.
En Python, se utiliza la función print() para mostrar datos al usuario en la consola o terminal. La función
print() toma uno o más argumentos y los muestra en la salida estándar.
Por ejemplo, si deseas mostrar el texto "Hola, mundo!" en la consola, puedes hacerlo de la siguiente
manera:
print("Hola, mundo!")
x=5
y = "Python"
9 -
print(x) # Esto imprimirá el valor de la variable x
Además de los argumentos que se proporcionan a print(), también puedes usar secuencias de escape,
como \n para una nueva línea y \t para un tabulador.
Por ejemplo:
Esto imprimirá:
Primera línea
Segunda línea
Recuerda que print() es una forma esencial de proporcionar información y resultados a los usuarios de tu
programa, por lo que es importante entender cómo usarlo de manera efectiva.
En Python, hay varias formas de formatear la salida de datos para que se muestre de la manera que
desees. Algunas de las técnicas más comunes son:
Concatenación de Cadenas: Puedes concatenar (unir) cadenas y variables utilizando el operador +. Por
ejemplo:
nombre = "Juan"
edad = 30
print("Mi nombre es " + nombre + " y tengo " + str(edad) + " años.")
Método str.format(): Este método permite incrustar valores dentro de cadenas utilizando llaves {} como
marcadores de posición y luego usar el método format() para llenar esos marcadores con valores. Por
ejemplo:
nombre = "Juan"
edad = 30
F-strings (o fórmulas literales de cadenas): Esta es una característica introducida en Python 3.6 que te
permite incrustar valores directamente en una cadena utilizando la sintaxis f"...". Por ejemplo:
nombre = "Juan"
edad = 30
Método % de formateo de cadenas: Esta es una forma más antigua de formateo de cadenas que utiliza el
operador %. Aunque todavía es compatible, se prefiere el uso de f-strings o el método str.format(). Un
ejemplo sería:
nombre = "Juan"
edad = 30
Estas son algunas de las formas más comunes de formatear la salida de datos en Python. Las f-strings son
particularmente populares debido a su legibilidad y simplicidad, pero cada método tiene sus propias
ventajas y puede ser útil en diferentes situaciones. Elige el método que mejor se adapte a tus necesidades
y preferencias.
10 -
● ¿Qué sucede si intentas mostrar una variable que no ha sido definida?
Si intentas mostrar una variable que no ha sido definida, Python generará un error llamado NameError.
Este error indica que estás intentando acceder a una variable que no existe en el ámbito actual.
Este error te indica que Python no puede encontrar una variable llamada variable_no_definida en el
ámbito actual. Puede haber varias razones para este error, como una ortografía incorrecta del nombre de
la variable o el intento de acceder a una variable antes de haberla definido.
Para corregir este error, asegúrate de que la variable esté definida en el lugar correcto y de que el nombre
de la variable esté escrito correctamente.
Entrada de Datos
Permite a los programas recibir información del usuario. En Python, esto se logra comúnmente con la función
input(), que lee una línea de texto desde la consola y la retorna como una cadena.
La función que se utiliza para recibir datos del usuario a través de la consola es input().
El argumento que le pasas a input() es el mensaje que se mostrará al usuario, pidiéndole que ingrese un
valor. En el ejemplo anterior, el programa imprimirá "Por favor, ingresa tu nombre:" y luego esperará a
que el usuario ingrese algo. Una vez que el usuario presiona Enter, el valor ingresado se almacena en la
variable entrada.
Recuerda siempre manejar los posibles errores que puedan surgir al recibir y convertir la entrada del
usuario para garantizar que tu programa funcione correctamente en todas las situaciones.
Es importante tener en cuenta que input() siempre devuelve una cadena de texto (str), incluso si el
usuario ingresa un número. Si necesitas que el valor sea de un tipo específico, como un número entero o
un número de punto flotante, deberás convertirlo utilizando las funciones int() o float() según
corresponda.
Por ejemplo:
Esta instrucción primero pide al usuario que ingrese su edad, luego convierte la entrada a un número
entero usando int() y lo almacena en la variable edad. Si el usuario ingresa algo que no puede ser
convertido a un número entero, se generará un error.
● ¿Qué sucede si se intenta operar directamente con la salida de la función input() esperando un tipo de
dato numérico?
Si intentas operar directamente con la salida de la función input() sin realizar una conversión de tipo,
Python tratará el valor ingresado como una cadena de texto (str). Si estás esperando un tipo de dato
numérico y tratas de realizar operaciones matemáticas, obtendrás un error de tipo (TypeError) ya que no
se pueden realizar operaciones matemáticas directamente en cadenas de texto.
Para solucionar esto, debes convertir la entrada a un tipo numérico utilizando las funciones int() o float()
según corresponda, como se muestra en el siguiente ejemplo:
11 -
numero = input("Por favor, ingresa un número: ")
resultado = numero + 5
Ahora, si el usuario ingresa el número 10, la operación se realizará correctamente y el resultado tendrá el
valor 15.
Módulo
En Python es un archivo de extensión '.py' que contiene definiciones, funciones, clases y variables, así como código
ejecutable. Los módulos se crean para organizar el código y promover la reutilización.
En Python, un módulo es un archivo que contiene definiciones y declaraciones de Python. Puede contener
funciones, variables y clases, así como ejecutar código que se ejecutará cuando el módulo sea importado.
Los módulos permiten organizar y reutilizar código de manera eficiente.
Organización del Código: Los módulos permiten organizar el código en archivos separados, lo que facilita
la gestión y mantenimiento de proyectos grandes y complejos.
Reutilización de Código: Puedes crear módulos con funciones y clases que puedes reutilizar en diferentes
partes de tu programa o incluso en proyectos diferentes.
División del Trabajo en Equipo: Los módulos permiten a diferentes miembros del equipo trabajar en
diferentes partes del código de manera independiente y luego integrar sus contribuciones.
Facilita la Mantenibilidad: Los módulos bien organizados hacen que sea más fácil mantener y actualizar el
código, ya que cada parte está en su propio archivo.
Facilita la Distribución de Software: Los módulos pueden ser distribuidos como bibliotecas para que otros
programadores los utilicen en sus propios proyectos.
Por ejemplo, si tienes un conjunto de funciones y clases que realizan operaciones matemáticas complejas,
puedes organizarlas en un módulo llamado matematicas.py. Luego, puedes importar este módulo en
otros archivos para utilizar esas funciones y clases sin tener que volver a escribir el código.
# En matematicas.py
return a + b
return a - b
# En otro archivo
import matematicas
resultado_suma = matematicas.suma(5, 3)
Así, los módulos ayudan a mantener el código organizado, promueven la reutilización y facilitan el trabajo
colaborativo en proyectos de programación.
12 -
● ¿Cómo se define un módulo?
Un módulo en Python es simplemente un archivo Python (con extensión .py) que contiene definiciones y
declaraciones de código Python. Puedes crear un módulo siguiendo estos pasos:
Crea un Archivo Python: Abre tu editor de texto o entorno de desarrollo y crea un nuevo archivo con una
extensión .py, por ejemplo, mi_modulo.py.
Escribe Código en el Módulo: Dentro del archivo, puedes escribir código Python, incluyendo definiciones
de funciones, clases, variables y cualquier otra cosa que desees incluir en tu módulo.
python
Copy code
# mi_modulo.py
def saludar(nombre):
print(f"Hola, {nombre}!")
return a + b
return a - b
PI = 3.1416
Un módulo y un script en Python son ambos archivos de código Python, pero se utilizan de manera
diferente y tienen propósitos distintos:
Módulo:
Script:
● Un script es un archivo Python que se puede ejecutar directamente desde la línea de comandos
o desde un entorno de desarrollo.
● Su propósito principal es proporcionar una secuencia de instrucciones que se ejecutan en un
orden específico para llevar a cabo una tarea o resolver un problema particular.
● Los scripts suelen contener un conjunto de instrucciones que se ejecutan de arriba a abajo en el
archivo.
● Los scripts a menudo incluyen un punto de entrada o un bloque de código que se ejecuta
cuando se inicia el script.
● A diferencia de los módulos, los scripts generalmente se ejecutan directamente y no se
importan en otros archivos.
13 -
En resumen, un módulo es un archivo de código Python destinado principalmente a ser importado y
reutilizado en otros programas, mientras que un script es un archivo de código Python que se ejecuta de
manera independiente para realizar una tarea específica.
Importación de Módulo
La importación de módulos en Python permite acceder y usar las funciones, clases y variables definidas en un
módulo. Esto se hace mediante la declaración import. Existen varias formas de importar, ya sea el módulo completo
o partes específicas del mismo.
Para importar un módulo en Python, puedes utilizar la palabra clave import seguida del nombre del
módulo. Aquí hay algunas formas comunes de importar módulos:
import mi_modulo
Esto importa todo el contenido del módulo mi_modulo. Para utilizar las definiciones del módulo,
simplemente precede el nombre con el nombre del módulo, por ejemplo mi_modulo.funcion().
A veces, es útil darle al módulo un alias (un nombre corto) para facilitar su uso:
import mi_modulo as mm
Puedes importar solo ciertas definiciones o variables de un módulo si no necesitas todo su contenido. Esto
se hace utilizando la forma from ... import ....
Ahora puedes usar saludar() directamente sin tener que escribir mi_modulo.saludar().
Puedes importar todas las definiciones de un módulo utilizando from ... import *. Sin embargo, se
recomienda evitar este enfoque en general, ya que puede hacer que sea difícil rastrear de dónde
provienen las definiciones en tu código.
Por ejemplo:
Ahora puedes usar todas las definiciones del módulo sin tener que precederlas con mi_modulo..
Recuerda que para que un módulo sea importable, debe estar en el mismo directorio que el archivo que
lo está importando o en un directorio incluido en el sys.path. También puedes agregar directorios al
sys.path para hacer que los módulos en esos directorios sean importables.
Una vez que hayas importado un módulo, puedes utilizar sus definiciones y funciones en tu código.
14 -
La diferencia principal entre import module y from module import function radica en cómo se accede a las
definiciones del módulo y cómo se utilizan en tu código.
import module:
Cuando importas un módulo usando import module, importas todo el módulo con todas sus definiciones y
variables. Esto significa que el módulo en sí se convierte en un objeto y debes acceder a sus definiciones
utilizando el nombre del módulo como prefijo.
Por ejemplo, si tienes un módulo llamado mi_modulo y deseas usar una función llamada funcion definida
en ese módulo, debes hacerlo de esta manera:
import mi_modulo
resultado = mi_modulo.funcion()
Esto hace que el código sea más explícito y evita conflictos de nombres, ya que todas las definiciones del
módulo se acceden a través del prefijo mi_modulo..
Cuando importas una función específica desde un módulo usando from module import function, importas
solo esa función y puedes utilizarla directamente sin el prefijo del nombre del módulo.
Por ejemplo, si tienes el mismo módulo mi_modulo y deseas usar solo la función funcion, puedes hacerlo
de esta manera:
resultado = funcion()
Esto hace que el código sea más conciso y permite utilizar la función sin el prefijo del nombre del módulo.
La elección entre import module y from module import function depende de tus necesidades y
preferencias:
Si el módulo es grande y solo necesitas unas pocas definiciones de él, es más eficiente importar solo las
definiciones necesarias utilizando from module import function.
Si el módulo es pequeño o planeas utilizar muchas de sus definiciones, es más claro y explícito importar el
módulo completo con import module.
En general, se recomienda usar import module cuando sea posible para evitar conflictos de nombres y
hacer que el código sea más legible, especialmente en proyectos más grandes. Sin embargo, en casos
donde solo necesitas unas pocas funciones o definiciones de un módulo grande, from module import
function puede ser conveniente.
import modulo_inexistente
15 -
Biblioteca Estándar
La biblioteca estándar de Python es un conjunto de módulos que vienen incluidos con cualquier instalación normal
de Python. Estos módulos ofrecen funcionalidades que van desde operaciones matemáticas hasta el manejo de
archivos, facilitando muchas tareas comunes.
La biblioteca estándar de Python se refiere a un conjunto de módulos y paquetes que vienen incluidos con
la instalación estándar de Python. Estos módulos proporcionan una amplia gama de funcionalidades y
herramientas que abarcan áreas como manipulación de archivos, networking, manejo de hilos,
matemáticas, procesamiento de texto, entre muchas otras.
La biblioteca estándar es parte integral de Python y está disponible para su uso inmediato sin necesidad
de instalar nada adicional. Contiene módulos que facilitan el desarrollo de aplicaciones en Python, ya que
proporciona una gran cantidad de código reutilizable que aborda tareas comunes.
La biblioteca estándar es una de las características distintivas de Python y es una de las razones por las
que Python es conocido por su legibilidad, facilidad de uso y rapidez en el desarrollo. Los módulos de la
biblioteca estándar son ampliamente utilizados en la comunidad de Python y forman una parte esencial
del ecosistema de desarrollo de Python.
● Amplia Gama de Funcionalidades: Cubre una amplia variedad de áreas, desde operaciones
básicas hasta tareas más complejas, lo que significa que no tienes que escribir código desde cero
para muchas tareas comunes.
● Eficiencia en el Desarrollo: Proporciona una gran cantidad de código predefinido y probado, lo
que acelera el proceso de desarrollo al reducir la necesidad de escribir código repetitivo o de
bajo nivel.
● Consistencia y Calidad: Los módulos de la biblioteca estándar están escritos y mantenidos por
expertos en Python, lo que garantiza su calidad y coherencia. Además, siguen las convenciones y
estándares de codificación de Python.
● Portabilidad: Al estar incluida en la instalación estándar de Python, la biblioteca estándar está
disponible en todas las plataformas compatibles con Python, lo que garantiza la portabilidad de
tu código entre diferentes sistemas operativos.
● Facilita el Desarrollo de Aplicaciones Complejas: Proporciona herramientas esenciales para
desarrollar aplicaciones complejas, como manipulación de archivos, acceso a bases de datos,
manipulación de fechas y horas, y más.
● Documentación Abundante: Cada módulo de la biblioteca estándar viene con documentación
detallada que describe cómo usarlo y proporciona ejemplos, lo que facilita su aprendizaje y uso.
● Base para Ecosistema de Paquetes y Librerías Externas: Muchas bibliotecas y paquetes de
terceros están construidos sobre la base de la biblioteca estándar, lo que significa que es
esencial para el funcionamiento de muchas aplicaciones y proyectos Python.
● Facilita la Programación Multidisciplinaria: Al cubrir una amplia gama de áreas, desde
matemáticas hasta manipulación de archivos y networking, la biblioteca estándar facilita la
programación en diversos dominios y disciplinas.
● Ahorra Tiempo y Esfuerzo: Al proporcionar funcionalidades listas para usar, la biblioteca
estándar te permite concentrarte en la lógica específica de tu aplicación en lugar de tener que
implementar funcionalidades básicas desde cero.
En resumen, la biblioteca estándar es una de las fortalezas fundamentales de Python y es una razón
importante por la cual Python es una elección popular para una amplia variedad de aplicaciones y
proyectos de desarrollo.
● Menciona módulos que formen parte de la biblioteca estándar y describe brevemente su funcionalidad
16 -
Algunos ejemplos de módulos en la biblioteca estándar incluyen:
● os: Proporciona una interfaz para interactuar con el sistema operativo, permitiendo manipular
archivos, directorios y otros recursos del sistema.
● datetime: Ofrece clases y funciones para trabajar con fechas y horas de manera efectiva.
● math: Contiene funciones matemáticas comunes y constantes.
● urllib: Permite interactuar con URLs y realizar operaciones como descarga de archivos desde la
web.
● random: Proporciona herramientas para la generación de números pseudoaleatorios.
● re: Ofrece herramientas para el procesamiento de expresiones regulares.
● json: Permite la serialización y deserialización de datos en formato JSON
● urllib: Permite interactuar con URLs y realizar operaciones como descarga de archivos desde la
web.
● socket: Proporciona funcionalidades para la programación de sockets, lo que permite la
comunicación entre procesos en una red.
● sqlite3: Proporciona una interfaz de Python para trabajar con bases de datos SQLite.
● collections: Ofrece alternativas a los tipos de datos incorporados de Python, como dict, list,
tuple, etc., proporcionando funcionalidades adicionales.
● csv: Facilita la lectura y escritura de archivos CSV (Comma Separated Values), un formato de
archivo comúnmente utilizado para intercambiar datos tabulares.
● os.path: Este módulo proporciona funciones para manipular rutas de archivo y nombres de
archivo de manera independiente del sistema operativo.
● argparse: Ayuda a analizar los argumentos de línea de comandos de un programa, lo que facilita
la creación de interfaces de usuario basadas en texto.
● threading: Proporciona herramientas para trabajar con hilos de ejecución en Python, lo que
permite la ejecución concurrente de tareas.
● multiprocessing: Ofrece funcionalidades para la creación y gestión de procesos en Python, lo
que permite la ejecución paralela de tareas.
● logging: Facilita la creación y configuración de registros (logs) en Python, lo que es esencial para
el seguimiento y la depuración de aplicaciones.
Estos son solo algunos ejemplos de los muchos módulos que forman parte de la biblioteca estándar de Python.
Cada uno de estos módulos proporciona funcionalidades esenciales que pueden ser utilizadas en una amplia
variedad de aplicaciones y proyectos.
Un Jupyter Notebook es un entorno de desarrollo interactivo que te permite escribir y ejecutar código en
un formato de documento combinado con texto enriquecido, gráficos, ecuaciones y más. Es una
herramienta popular en el ámbito de la ciencia de datos y la investigación, pero también se utiliza en otros
campos de la programación.
● Entorno Interactivo: Permite ejecutar código de manera interactiva, lo que significa que puedes
ejecutar bloques de código uno a la vez y ver los resultados inmediatamente.
● Soporte para Múltiples Lenguajes: Aunque se originó como un entorno para Python, Jupyter
Notebook admite una amplia gama de lenguajes de programación, incluidos Python, R, Julia y
muchos otros.
17 -
● Documentación Integrada: Permite combinar texto explicativo (escrito en Markdown o LaTeX)
con celdas de código, lo que facilita la creación de documentos que incluyan explicaciones,
ecuaciones, gráficos y código ejecutable en un solo lugar.
● Gráficos y Visualizaciones: Puedes generar gráficos, visualizaciones y otros tipos de
representaciones visuales directamente en el notebook, lo que facilita la exploración de datos y
la presentación de resultados.
● Facilidad de Compartir y Exportar: Los notebooks se pueden guardar en un archivo con
extensión .ipynb, lo que facilita su intercambio y colaboración con otros. También se pueden
exportar en otros formatos, como PDF, HTML o presentaciones interactivas.
● Integración con Herramientas de Ciencia de Datos: Se integra bien con herramientas populares
de ciencia de datos y análisis de datos, como pandas, NumPy, matplotlib, seaborn, entre otras.
● Acceso a Recursos del Sistema: Puedes acceder a recursos del sistema, como el sistema de
archivos y servicios del sistema operativo, lo que hace que sea posible realizar tareas más
complejas en un entorno interactivo.
● Widgets Interactivos: Puedes agregar widgets interactivos como deslizadores, botones y cuadros
de texto, lo que permite una interacción más dinámica con tu código.
● Celdas de Texto y Código Ejecutables: Los notebooks están compuestos de celdas, que pueden
ser de texto o de código. Las celdas de texto permiten documentar y explicar el código, mientras
que las celdas de código contienen el código ejecutable.
● Reproducibilidad: Facilita la reproducibilidad de los resultados, ya que todos los pasos desde la
carga de datos hasta la visualización y el análisis están documentados y pueden ser ejecutados
en el mismo entorno.
En resumen, un Jupyter Notebook proporciona una forma interactiva y altamente flexible de escribir y
ejecutar código, lo que lo convierte en una herramienta invaluable para la investigación, el análisis de
datos y el desarrollo de proyectos que requieran una combinación de código y documentación.
Para ejecutar una celda de código en un Jupyter Notebook, sigue estos pasos:
Selecciona la Celda: Haz clic en la celda de código que deseas ejecutar. La celda seleccionada se resaltará.
Ejecuta la Celda:
Utiliza la combinación de teclas Shift + Enter o presiona el botón "Run" (que generalmente se representa
como un triángulo) en la barra de herramientas.
Otra opción es utilizar Ctrl + Enter para ejecutar la celda actual y permanecer en ella, o Alt + Enter para
ejecutar la celda y agregar una nueva celda debajo de ella.
Espera la Ejecución: Durante la ejecución, verás un asterisco [*] a la izquierda de la celda. Una vez que se
completa la ejecución, se mostrará un número [n], donde n es el número de ejecución actual.
Observa el Resultado: Si el código genera una salida, como texto impreso o gráficos, se mostrará debajo
de la celda de código.
Es importante tener en cuenta que las celdas de un Jupyter Notebook se pueden ejecutar en cualquier
orden, lo que permite una flexibilidad y exploración interactiva del código.
Recuerda que las variables y funciones definidas en una celda se mantienen en memoria y pueden ser
utilizadas en celdas posteriores en la misma sesión del notebook.
La principal diferencia entre un archivo .ipynb y un archivo Python .py radica en el formato y el propósito
para el que están diseñados:
18 -
Combina celdas de código ejecutable con celdas de texto enriquecido (escritas en Markdown) en un solo
documento.
Es un entorno de desarrollo interactivo que permite ejecutar código en bloques y ver los resultados
inmediatamente, lo que facilita la exploración de datos y la documentación del proceso.
Puedes incluir gráficos, ecuaciones, texto explicativo y otros elementos multimedia directamente en el
notebook.
Es muy popular en la comunidad de ciencia de datos y análisis de datos, así como en la investigación y
documentación técnica.
Contiene código Python que puede ser ejecutado directamente desde la línea de comandos o desde un
entorno de desarrollo Python.
Los scripts Python se pueden ejecutar de forma no interactiva, es decir, sin necesidad de una interfaz
gráfica como la proporcionada por un Jupyter Notebook.
En resumen, un archivo .ipynb es un entorno interactivo que combina celdas de código ejecutable con
texto enriquecido y otros elementos multimedia, mientras que un archivo Python .py es un script de
código fuente independiente destinado principalmente para la ejecución de código de manera no
interactiva. Ambos tienen usos y aplicaciones específicas en el desarrollo y la programación en Python.
Variables
Variable
Una variable en programación es un espacio en memoria donde se puede almacenar un valor. Este valor puede
cambiar durante la ejecución del programa. Las variables en Python se crean al asignar un valor a un nombre.
Para crear una variable en Python, simplemente necesitas elegir un nombre para la variable y asignarle un
valor. Aquí está la sintaxis básica:
nombre_de_variable = valor
Por ejemplo, si quieres crear una variable llamada edad y asignarle el valor 25, lo harías de la siguiente
manera:
edad = 25
Ahora, la variable edad contiene el valor 25. Python infiere automáticamente el tipo de datos basado en el
valor que asignas.
19 -
Python distingue entre mayúsculas y minúsculas (edad y Edad serían variables diferentes).
No puedes usar palabras clave de Python como nombres de variables (por ejemplo, if, else, for, etc.).
Es una buena práctica usar nombres descriptivos que indiquen el propósito de la variable.
nombre = "Juan"
edad = 30
altura_cm = 175.5
es_estudiante = True
Ahora, has creado cuatro variables: nombre, edad, altura_cm y es_estudiante, cada una con su respectivo
valor y tipo de datos asociado. Estas variables pueden ser utilizadas en tu programa para almacenar y
manipular información.
Si intentas acceder a una variable que no ha sido definida en Python, se generará un error llamado
NameError. Esto indica que Python no puede encontrar ninguna definición para la variable que estás
tratando de utilizar.
En resumen, elegir nombres descriptivos para las variables es una práctica esencial para escribir código
legible, comprensible y fácilmente mantenible. Ayuda a mejorar la calidad y la eficiencia del código, y es
una de las mejores formas de comunicar tus intenciones a través de tu código.
Identificador
También conocido como Nombre de Variable
Un identificador de variables es el nombre que se le da a una variable para identificarla en el código. En Python, un
identificador comienza con una letra (A-Z o a-z) o un guion bajo (_), seguido por letras, números o guiones bajos. No
pueden ser palabras reservadas y son sensibles al caso, lo que significa que Variable y variable serían identificadores
diferentes.
Reglas de Nomenclatura: Los identificadores deben seguir ciertas reglas específicas del lenguaje, como
comenzar con una letra o guión bajo, seguido de letras, dígitos o guiones bajos. Además, los nombres de
identificadores suelen ser sensibles a mayúsculas y minúsculas.
20 -
● ¿Por qué no debemos usar palabras reservadas como identificadores?
Evitar Palabras Reservadas: Los identificadores no deben coincidir con palabras reservadas o palabras
clave del lenguaje, ya que estas tienen significados especiales y están destinadas a ser utilizadas por el
propio lenguaje.
Tipo int
El tipo int (abreviatura de "integer") en Python se refiere a números enteros. Estos pueden ser tanto positivos como
negativos y no tienen una parte decimal. Python maneja automáticamente la asignación de memoria para los
enteros, permitiendo trabajar con números muy grandes sin preocuparse por el desbordamiento.
En programación, el tipo de dato `int` (abreviatura de "entero") se refiere a números enteros, es decir,
números sin parte decimal y sin fracciones. Los valores que representa el tipo de dato `int` son números
enteros positivos, negativos y el cero.
Ejemplos de valores que pueden ser representados como `int` en Python son:
- `-5`
- `0`
- `42`
- `1000`
- `-100`
Los números enteros pueden ser tanto positivos como negativos y pueden abarcar un rango amplio de
valores, dependiendo de la implementación específica del lenguaje de programación y del sistema en el
que se ejecuta. En Python, los números enteros pueden ser de tamaño arbitrario, lo que significa que no
hay un límite fijo en el tamaño de los números enteros que puedes representar.
Por ejemplo, puedes utilizar enteros para contar cosas, representar edades, identificar posiciones en una
lista, realizar operaciones matemáticas y mucho más. Son uno de los tipos de datos fundamentales y
ampliamente utilizados en programación.
En Python, para definir una variable de tipo `int` (entero), simplemente asignas un valor numérico entero
a un nombre de variable. La sintaxis básica es la siguiente:
nombre_de_variable = valor_entero
Por ejemplo, si quieres crear una variable llamada `edad` y asignarle el valor de 25, lo harías de la
siguiente manera:
edad = 25
numero_negativo = -10
Python infiere automáticamente el tipo de dato de la variable basándose en el valor que le asignas. En
este caso, `numero_negativo` también será de tipo `int`.
Si deseas verificar el tipo de dato de una variable, puedes usar la función `type()`:
21 -
print(type(edad)) # Esto imprimirá <class 'int'>
Ten en cuenta que en Python, los números enteros pueden ser de tamaño arbitrario, lo que significa que
no hay un límite fijo en el tamaño de los números enteros que puedes representar. Esto es diferente de
algunos otros lenguajes de programación que tienen límites en el tamaño de los enteros.
En Python, puedes realizar una amplia variedad de operaciones con números enteros. Aquí están algunas
de las operaciones comunes que puedes realizar:
4. **División (`/`)**: Divide un número entero por otro. El resultado siempre es un número de punto
flotante, incluso si la división es exacta.
5. **División Entera (`//`)**: Realiza una división entera y redondea el resultado al número entero más
cercano.
8. **Comparaciones (`==`, `!=`, `<`, `<=`, `>`, `>=`)**: Compara dos enteros y devuelve un valor booleano
que indica si la comparación es verdadera o falsa.
9. **Operaciones de Asignación (`+=`, `-=`, `*=`, `/=`, `//=`, `%=`, `**=`)**: Realiza la operación y actualiza
el valor de la variable.
numero = 10
10. **Operaciones Bit a Bit (`&`, `|`, `^`, `~`, `<<`, `>>`)**: Realiza operaciones a nivel de bits en números
enteros. Esto puede ser útil en situaciones específicas.
Estas son solo algunas de las operaciones comunes que puedes realizar con números enteros en Python.
Python también proporciona funciones y métodos incorporados para realizar operaciones más complejas
y manipulaciones de enteros.
22 -
b = 3 # Representación binaria: 0011
Estas son solo algunas de las operaciones comunes que puedes realizar con números enteros en Python.
Python también proporciona funciones y métodos incorporados para realizar operaciones más complejas
y manipulaciones de enteros.
Tipo float
El tipo float en Python representa números de punto flotante o, en otras palabras, números que tienen una parte
decimal. Se caracterizan por tener un punto decimal en su representación, como 3.14 o -0.001.
El tipo de dato `float` en programación se refiere a números de punto flotante, que son números que
pueden tener una parte decimal. En Python, los números de punto flotante se representan utilizando el
tipo `float`.
Por ejemplo, números como `3.14`, `-0.5`, `2.71828` son ejemplos de números de punto flotante.
La principal diferencia entre los tipos de datos `int` y `float` radica en la presencia o ausencia de una parte
decimal:
- **`int` (Entero)**: Representa números enteros sin parte decimal. Ejemplos incluyen `-5`, `0`, `42`,
`1000`.
- **`float` (Punto Flotante)**: Representa números con parte decimal. Ejemplos incluyen `-3.14`, `0.0`,
`2.71828`.
Además, los números de punto flotante también pueden representar números en notación científica,
como `1.5e2` que representa 150.0.
Es importante tener en cuenta que los números de punto flotante tienen precisión finita, lo que significa
que pueden haber pequeños errores de redondeo en cálculos que involucran números muy grandes o
muy pequeños.
Cuando realizas operaciones con números de punto flotante, es posible que obtengas resultados con
decimales, incluso si las entradas son enteras. Por ejemplo, la división de dos enteros en Python (`10 / 3`)
produce un resultado de punto flotante (`3.333...`).
En resumen, mientras que `int` representa números enteros sin parte decimal, `float` representa números
con parte decimal y la posibilidad de notación científica. Ambos tipos son fundamentales en la
programación y se utilizan en situaciones diferentes dependiendo de los requisitos del problema.
Para definir una variable de tipo `float` en Python, asignas un valor numérico con parte decimal a un
nombre de variable. La sintaxis básica es la siguiente:
nombre_de_variable = valor_decimal
Por ejemplo, si quieres crear una variable llamada `pi` y asignarle el valor de 3.14 (que es una
aproximación de π), lo harías de la siguiente manera:
pi = 3.14
23 -
numero_negativo = -2.5
Python infiere automáticamente el tipo de dato de la variable basándose en el valor que le asignas. En
este caso, `numero_negativo` también será de tipo `float`.
Si deseas verificar el tipo de dato de una variable, puedes usar la función `type()`:
Recuerda que los números de punto flotante tienen precisión finita, lo que significa que pueden haber
pequeños errores de redondeo en cálculos que involucran números muy grandes o muy pequeños. Es
importante tener en cuenta esto al realizar operaciones con `float`.
● ¿Qué precisiones y limitaciones deben considerarse al trabajar con números de punto flotante?
Cuando trabajas con números de punto flotante en cualquier lenguaje de programación, incluido Python,
es importante tener en cuenta varias precisiones y limitaciones:
1. **Precisión Finita**: Los números de punto flotante tienen una precisión finita. Esto significa que no
todos los números reales pueden ser representados exactamente en el sistema de punto flotante, lo que
puede llevar a pequeños errores de redondeo en cálculos.
6. **NaN y Infinito**: Los números de punto flotante pueden representar valores especiales como "NaN"
(Not a Number) y "Inf" (Infinito) que indican resultados no definidos o valores que superan el rango de
representación.
8. **Evitar Comparaciones Directas**: Debido a los errores de redondeo, a menudo es mejor evitar
comparaciones directas entre números de punto flotante. En su lugar, se recomienda usar una tolerancia
aceptable.
Para mitigar estos problemas, es importante comprender las limitaciones de los números de punto
flotante y utilizar técnicas adecuadas, como ajustar la precisión y utilizar algoritmos numéricos robustos,
según las necesidades específicas de tu aplicación.
Tipo bool
El tipo bool en Python representa valores booleanos, que son True (verdadero) y False (falso). Estos valores son
fundamentales para la lógica y las operaciones condicionales en la programación. Se derivan generalmente de
comparaciones o condiciones.
24 -
El tipo de dato `bool` en programación se refiere a un tipo de dato booleano, que puede tener uno de dos
valores: `True` o `False`. Estos valores representan el concepto de verdad o falsedad en lógica booleana.
En Python, `True` se utiliza para representar afirmaciones verdaderas y `False` se utiliza para representar
afirmaciones falsas.
Por ejemplo:
verdadero = True
falso = False
Los valores booleanos son esenciales en programación porque se utilizan en estructuras de control de
flujo (como `if`, `while`, `for`) para tomar decisiones basadas en condiciones. También son utilizados en
expresiones lógicas y operaciones de comparación.
Por ejemplo:
if verdadero:
if not falso:
Estos valores booleanos también pueden ser el resultado de operaciones lógicas o comparaciones. Por
ejemplo:
Los valores booleanos son fundamentales para la toma de decisiones y el control de flujo en cualquier
programa. Permiten que el programa ejecute diferentes bloques de código según las condiciones
establecidas.
Para definir una variable de tipo `bool` (booleano) en Python, asignas el valor `True` o `False` a un nombre
de variable. La sintaxis básica es la siguiente:
Por ejemplo, si quieres crear una variable llamada `es_mayor_de_edad` y asignarle el valor `True` para
indicar que una persona es mayor de edad, lo harías de la siguiente manera:
es_mayor_de_edad = True
Si deseas verificar el tipo de dato de una variable, puedes usar la función `type()`:
Recuerda que los valores booleanos `True` y `False` son palabras clave reservadas en Python y deben
escribirse en mayúsculas al asignarlos a una variable.
En Python, se utilizan varios operadores lógicos para realizar operaciones sobre valores booleanos. Los
operadores lógicos más comunes son:
25 -
Ejemplo:
a = True
b = False
2. **`or`**: Este operador devuelve `True` si al menos una de las condiciones es verdadera.
Ejemplo:
a = True
b = False
3. **`not`**: Este operador niega una condición, es decir, si la condición es `True`, la convierte en `False` y
viceversa
Ejemplo:
a = True
Estos operadores lógicos son fundamentales para la toma de decisiones y la construcción de expresiones
lógicas en Python. Puedes combinarlos para crear condiciones más complejas y controlar el flujo de tu
programa. Por ejemplo, puedes tener múltiples condiciones en una instrucción `if` utilizando operadores
lógicos.
Cadenas de Caracteres
También conocido como Strings
Las cadenas (o "strings" en inglés) en Python son secuencias de caracteres encerradas entre comillas simples (' ') o
dobles (" "). Se utilizan para representar texto y pueden contener letras, números, símbolos y espacios. Python
ofrece una amplia variedad de métodos y operaciones para trabajar y manipular cadenas. Los caracteres pueden ser
letras, números, emojis y otros símbolos.
Una cadena de caracteres, conocida comúnmente como "cadena" o "string" en programación, es una
secuencia de caracteres alfanuméricos, como letras, números, espacios y símbolos. Puedes pensar en una
cadena como una serie de caracteres que forman texto.
En Python, las cadenas se representan utilizando comillas simples (`' '`), comillas dobles (`" "`), o triple
comillas (`''' '''` o `""" """`). Por ejemplo:
varias líneas.'''
Las comillas simples y dobles funcionan de manera similar y puedes elegir cuál usar según tus preferencias
o necesidades. Sin embargo, si necesitas incluir comillas dentro de una cadena, puedes usar comillas del
otro tipo para delimitarla. Por ejemplo:
26 -
cadena_con_comillas_dobles = "Esta es una cadena con 'comillas simples' dentro."
Las triple comillas (`''' '''` o `""" """`) permiten definir cadenas multilinea que pueden abarcar varias líneas
de texto. Esto es útil cuando necesitas trabajar con texto que contiene saltos de línea.
que se extiende
Las cadenas son un tipo de dato fundamental en la programación y se utilizan para representar texto,
nombres, mensajes y mucho más en tus programas.
En Python, puedes acceder a un carácter específico en una cadena utilizando la indexación. La indexación
te permite referenciar un carácter específico en una cadena según su posición.
La indexación en Python comienza desde `0`. Esto significa que el primer carácter de una cadena tiene el
índice `0`, el segundo tiene el índice `1`, y así sucesivamente.
Para acceder a un carácter específico, utilizas corchetes `[]` después de la cadena, indicando el índice del
carácter que deseas.
Ejemplo:
mensaje = "Hola"
También puedes utilizar índices negativos para acceder a los caracteres desde el final de la cadena. `-1`
representa el último carácter, `-2` el penúltimo, y así sucesivamente.
Ejemplo:
Es importante tener en cuenta que las cadenas en Python son inmutables, lo que significa que no puedes
cambiar individualmente un carácter en una cadena existente. Si necesitas modificar una cadena, tendrás
que crear una nueva con los cambios deseados.
Conversión de tipos
La conversión de tipos, también conocida como "casting", se refiere al proceso de cambiar el tipo de dato de un
valor a otro tipo de dato. En Python, esto se puede hacer utilizando funciones predefinidas como int(), float(), y
str(), entre otras.
La conversión de tipos, también conocida como "casting", es el proceso de cambiar el tipo de un valor o
una variable de un tipo de datos a otro en un programa. Esto es necesario en programación porque a
veces necesitas operar con datos de diferentes tipos o adaptarlos para que sean compatibles con ciertas
operaciones.
Hay varias razones por las que la conversión de tipos es necesaria en programación:
27 -
1. **Operaciones entre Tipos Diferentes**: Al realizar operaciones matemáticas o comparaciones, a veces
necesitas asegurarte de que los operandos sean del mismo tipo. Por ejemplo, sumar un número entero y
un número de punto flotante.
2. **Interacción con Funciones**: Al llamar a una función, es importante que los argumentos sean del
tipo correcto que la función espera. Si los tipos no coinciden, es posible que se produzcan errores o
resultados inesperados.
3. **Entrada y Salida de Datos**: Al recibir datos del usuario o de un archivo, a menudo es necesario
convertirlos al tipo correcto antes de usarlos en cálculos o manipulaciones.
4. **Manipulación de Datos**: A veces necesitas realizar operaciones específicas que requieren que los
datos estén en un formato particular. Por ejemplo, formatear una cadena de texto como un número.
numero_entero = 5
En este ejemplo, `float()` convierte el número entero `5` en el número de punto flotante `5.0`. Esto es útil
cuando necesitas realizar cálculos que requieren números de punto flotante en lugar de enteros.
Para convertir un número de punto flotante (`float`) en un número entero (`int`) en Python, puedes
utilizar la función `int()`. Esta función truncará la parte decimal del número y devolverá la parte entera.
numero_entero = int(numero_flotante)
Por ejemplo:
numero_flotante = 3.14
Es importante tener en cuenta que la conversión de `float` a `int` elimina la parte decimal, no redondea.
Por lo tanto, si tienes `3.99`, la conversión a `int` resultará en `3`, no `4`.
También ten en cuenta que si la parte decimal del número flotante es mayor o igual a `0.5`, la conversión
a entero se realizará redondeando hacia arriba.
numero_flotante = 3.99
Recuerda que esta operación puede causar pérdida de información, ya que elimina la parte decimal.
Asegúrate de que esto sea adecuado para tu aplicación antes de realizar la conversión.
● ¿Qué sucede si intentas convertir una cadena que no representa un número a un tipo int o float?
28 -
Si intentas convertir una cadena que no representa un número válido a un tipo `int` o `float` en Python, se
generará un error. Esto se debe a que Python no puede interpretar la cadena como un número y no
puede realizar la conversión.
Por ejemplo, si intentas convertir la cadena `"abc"` a un número, o incluso una cadena con un formato
numérico incorrecto como `"3.14.159"` a un `float`, se generará un error.
Los errores específicos que se generan en estos casos son `ValueError`, que indica que el valor
proporcionado no es válido para la conversión solicitada.
Para evitar este tipo de errores, es importante asegurarse de que la cadena que intentas convertir a un
número contenga representaciones válidas de números. Puedes utilizar funciones y métodos para
verificar si una cadena es numérica antes de intentar la conversión.
Asignación
La asignación en programación se refiere al proceso de dar un valor a una variable. En Python, el operador de
asignación es el signo igual (=). Cuando asignas un valor a una variable, estás reservando espacio en memoria para
almacenar ese valor y referenciarlo con un identificador.
En Python, una asignación se realiza utilizando el operador `=`. Esto le dice a Python que tome el valor a la
derecha del operador y lo guarde en la variable a la izquierda.
nombre_de_variable = valor
Por ejemplo, si quieres asignar el valor `10` a la variable `numero`, lo harías de la siguiente manera:
numero = 10
También puedes asignar el resultado de una expresión o una operación a una variable. Por ejemplo:
Recuerda que en Python, el nombre de la variable está en el lado izquierdo del operador `=`, y el valor o la
expresión que se asigna a la variable está en el lado derecho.
Es importante tener en cuenta que la asignación en Python no es una igualdad matemática, sino una
operación de asignación de valor. Esto significa que el valor a la derecha del operador se evalúa primero y
luego se asigna a la variable a la izquierda.
Cuando asignas un valor a una variable en Python, se llevan a cabo varios pasos en la memoria del
sistema:
29 -
4. **Actualización de Referencias**: Si la variable ya tenía un valor previamente asignado, este valor
puede ser liberado si ya no está siendo referenciado por otras partes del programa. El espacio de
memoria liberado puede ser reutilizado para otras variables.
Es importante destacar que en Python, las variables son referencias a objetos en la memoria, no
contenedores directos de valores. Esto significa que puedes tener múltiples variables que apuntan al
mismo objeto en la memoria.
a = 10
b=a
Ambas `a` y `b` apuntan al mismo objeto `10` en la memoria. Si cambias el valor de `a`, también afectará a
`b`.
a --> 10
b -----^
Cuando se asigna un nuevo valor a una variable, la antigua referencia se pierde y la variable ahora apunta
al nuevo objeto.
a --> 20
b -----^
Estos conceptos son importantes para comprender cómo Python maneja la asignación de valores y la
gestión de memoria.
● ¿Es posible asignar valores a múltiples variables en una sola línea en Python? Si es así, ¿cómo?
Sí, en Python es posible asignar valores a múltiples variables en una sola línea. Esto se conoce como
"asignación múltiple" o "asignación en paralelo". Puedes hacerlo de la siguiente manera:
Por ejemplo:
x, y, z = 10, 20, 30
En este ejemplo, `x` se asigna a `10`, `y` se asigna a `20` y `z` se asigna a `30`.
También puedes realizar asignaciones múltiples utilizando una única expresión en el lado derecho:
a=b=c=0
También es posible intercambiar valores entre variables en una sola línea utilizando asignaciones
múltiples y sin la necesidad de una variable temporal:
x, y = y, x
La asignación múltiple es una herramienta útil para asignar valores a múltiples variables de forma
eficiente y concisa. Puedes usarla para inicializar variables, intercambiar valores o realizar otras
operaciones relacionadas con la asignación de valores.
30 -
Operadores aritméticos
Los operadores aritméticos son símbolos que se utilizan para realizar operaciones matemáticas. En Python, algunos
de los operadores aritméticos más comunes son: + (suma), - (resta), * (multiplicación), / (división), // (división
entera), % (módulo) y ** (exponenciación).
● ¿Qué son los operadores aritméticos y cuáles son los más comunes en Python?
Los operadores aritméticos son símbolos que se utilizan para realizar operaciones matemáticas en Python.
Los operadores aritméticos más comunes en Python son:
Estos son los operadores aritméticos más comunes en Python. Puedes combinarlos y utilizarlos en tus
programas para realizar una amplia variedad de operaciones matemáticas.
La diferencia entre la división (`/`) y la división entera (`//`) en Python radica en el tipo de resultado que
producen.
1. **División (`/`)**:
- El operador de división (`/`) realiza una división regular entre dos números.
- El resultado de la división siempre es un número de punto flotante, incluso si los números son enteros
y la división es exacta.
Ejemplo:
- El operador de división entera (`//`) también realiza una división, pero el resultado se redondea al
número entero más cercano, sin importar si la división es exacta o no.
- Si ambos operandos son enteros, el resultado será un número entero. Si uno o ambos son de punto
flotante, el resultado será de punto flotante.
31 -
La división entera es útil cuando solo te interesa el cociente entero de una división y no te importa el
residuo. Por ejemplo, al calcular cuántas veces cabe un número en otro.
Es importante elegir el operador de división adecuado según tus necesidades específicas en un problema
dado.
Concatenación de cadenas
La concatenación de cadenas es el proceso de unir dos o más cadenas para formar una sola. En Python, esto se
logra utilizando el operador +. También es posible repetir una cadena un número determinado de veces utilizando
el operador *.
La concatenación de cadenas en Python es el proceso de combinar dos o más cadenas de texto en una
sola cadena más larga. Esto te permite construir mensajes, crear texto dinámico y manipular datos de
En Python, puedes realizar la concatenación de cadenas utilizando el operador +. Aquí hay un ejemplo:
saludo = "Hola"
nombre = "Ludmila"
En este ejemplo, se concatenan las cadenas "Hola", ", ", "Ludmila", y "!" para formar la cadena
"Hola, Ludmila!".
separación entre las cadenas concatenadas. Debes incluir los espacios o caracteres de separación
necesarios explícitamente en las cadenas si deseas que aparezcan entre las palabras o frases
concatenadas.
● Si tienes las cadenas "Python" y "Rocks", ¿cómo las concatenarías para formar la cadena "Python Rocks"?
cadena2 = "Rocks"
32 -
● ¿Cómo puedes repetir una cadena, digamos "Hello", 3 veces para obtener "HelloHelloHello"?
Para repetir una cadena en Python, puedes usar el operador de multiplicación `*`. Esto te permite duplicar
la cadena múltiples veces. Por ejemplo, para repetir la cadena "Hello" tres veces y obtener
"HelloHelloHello", puedes hacer lo siguiente:
cadena_original = "Hello"
resultado = cadena_original * 3
El operador `*` toma una cadena y un número entero como operandos y repite la cadena esa cantidad de
veces. Puedes cambiar el número para repetir la cadena más o menos veces según tus necesidades.
Estructuras
Lista
Una lista en Python es una colección ordenada de elementos que pueden ser de cualquier tipo. Se definen
encerrando sus elementos entre corchetes [] y separándolos con comas. Las listas son mutables, lo que significa que
puedes cambiar, agregar o eliminar elementos después de que la lista ha sido creada.
Una lista en Python es una colección ordenada y mutable de elementos que pueden ser de diferentes
tipos de datos. Esta flexibilidad hace que las listas sean una de las estructuras de datos más utilizadas y
versátiles en Python, pueden ser de cualquier tipo de dato, como números, cadenas, booleanos, e incluso
otras listas. Cada elemento en una lista tiene una posición o índice único que comienza desde 0.
Puedes acceder a elementos individuales de una lista utilizando su índice. Por ejemplo, para acceder al
primer elemento, usarías mi_lista[0], para el segundo sería mi_lista[1], y así sucesivamente.
Son mutables, lo que significa que puedes modificar los elementos individuales de una lista después de
que ha sido creada.
mi_lista[1] = 10
Esto modificará mi_lista para que sea [1, 10, "Hola", True, [3, 4, 5]].
Para definir una lista vacía en Python, simplemente utilizas corchetes `[]` sin ningún elemento dentro de
ellos. Aquí tienes un ejemplo:
lista_vacia = []
En este ejemplo, `lista_vacia` es una lista que no contiene ningún elemento. Es importante destacar que
incluso una lista vacía es un objeto de lista válido en Python y puede ser utilizada para almacenar
elementos más adelante.
También puedes crear una lista vacía utilizando la función `list()` sin pasar ningún argumento:
lista_vacia = list()
33 -
Ambas formas son equivalentes y crearán una lista vacía que puedes llenar con elementos más tarde.
● ¿Es posible tener una lista con elementos de diferentes tipos, como enteros y cadenas?
La principal diferencia entre una lista y otros tipos de datos como números o cadenas es que una lista
puede contener múltiples elementos y cada elemento puede ser de un tipo de dato diferente. Esto la hace
extremadamente flexible y poderosa para organizar y manipular conjuntos de datos.
Por ejemplo, aquí hay una lista que contiene números, cadenas y una lista anidada:
"Hola"
True
Funciones de Lista
Python proporciona una serie de funciones y métodos integrados para trabajar con listas. Algunos ejemplos
incluyen append() para agregar un elemento al final, remove() para eliminar un elemento específico y sort() para
ordenar la lista.
Para agregar un elemento al final de una lista en Python, puedes utilizar el método append(). Este método
agrega un elemento al final de la lista. Aquí está el uso básico:
mi_lista = [1, 2, 3]
También puedes agregar elementos a una lista utilizando la concatenación (+) o la función extend(). Sin
embargo, estas opciones son más adecuadas para combinar dos listas, no para agregar un solo elemento
al final.
Por ejemplo, si tienes otra lista [5], puedes usar la concatenación así:
mi_lista = [1, 2, 3]
Sin embargo, ten en cuenta que esta operación crea una nueva lista y asigna el resultado de la
concatenación a mi_lista. Si tienes una lista muy grande, esta operación puede ser menos eficiente que
usar append() para agregar elementos.
Por lo tanto, si solo estás agregando un solo elemento al final de una lista, se recomienda usar append()
para la eficiencia y claridad del código.
34 -
● ¿Qué función usarías para eliminar un elemento específico de una lista?
Para eliminar un elemento específico de una lista en Python, puedes usar el método `remove()`. Este
método busca el primer elemento con el valor especificado y lo elimina de la lista. La sintaxis es la
siguiente:
mi_lista.remove(elemento)
Donde `mi_lista` es la lista en la que deseas realizar la operación y `elemento` es el valor del elemento que
deseas eliminar.
mi_lista = [1, 2, 3, 4, 2, 5]
mi_lista.remove(2)
Después de ejecutar este código, `mi_lista` quedará como `[1, 3, 4, 2, 5]`. Observa que solo se eliminó el
primer `2` encontrado en la lista.
Es importante destacar que si el elemento que intentas eliminar no existe en la lista, se generará un error
`ValueError`. Por lo tanto, asegúrate de verificar si el elemento existe antes de intentar eliminarlo o
manejar el posible error.
Si deseas eliminar un elemento en una posición específica (por índice), puedes utilizar el comando `del`:
del mi_lista[indice]
También puedes utilizar el método `pop()` para eliminar y obtener el elemento en una posición específica
al mismo tiempo.
mi_lista = [1, 2, 3, 4, 5]
output:
Elemento eliminado: 3
Para ordenar una lista en orden descendente en Python, puedes utilizar el método `sort()` o la función
`sorted()` con el argumento `reverse=True`. Aquí tienes ejemplos de ambas opciones:
mi_lista = [3, 1, 4, 1, 5, 9, 2, 6, 5]
print(mi_lista)
[9, 6, 5, 5, 4, 3, 2, 1, 1]
35 -
### Usando la Función `sorted()`:
mi_lista = [3, 1, 4, 1, 5, 9, 2, 6, 5]
lista_ordenada = sorted(mi_lista, reverse=True) # Crea una nueva lista ordenada en orden descendente
print(lista_ordenada)
[9, 6, 5, 5, 4, 3, 2, 1, 1]
La diferencia entre ambas opciones radica en que `sort()` ordena la lista en su lugar (es decir, modifica la
lista original), mientras que `sorted()` crea una nueva lista ordenada sin modificar la lista original.
Ambas opciones te permiten ordenar una lista en orden descendente según los valores de sus elementos.
Índices y Elementos
Los elementos de una lista en Python pueden ser accedidos mediante índices. El índice inicial es 0 para el primer
elemento, 1 para el segundo, y así sucesivamente. También es posible usar índices negativos para acceder a los
elementos desde el final de la lista.
Para acceder al tercer elemento de una lista en Python, puedes utilizar el índice `2`, ya que los índices en
Python comienzan desde `0`. Aquí tienes un ejemplo:
print(tercer_elemento)
En este ejemplo, `mi_lista[2]` devuelve el valor `30`, que es el tercer elemento de la lista `[10, 20, 30, 40,
50]`.
Recuerda que en Python, los índices empiezan desde `0`, por lo que el primer elemento tiene el índice `0`,
el segundo el índice `1`, el tercer elemento el índice `2`, y así sucesivamente.
Si intentas acceder a un índice que no existe en una lista en Python, se generará un error llamado
`IndexError`. Este error indica que estás tratando de acceder a un elemento en una posición que está más
allá de los límites de la lista.
Por ejemplo, si intentas acceder al elemento en el índice `5` de una lista que solo tiene `3` elementos, se
generará un `IndexError` porque el índice `5` está fuera del rango válido para esa lista.
Para evitar este tipo de errores, es importante asegurarse de que el índice al que estás intentando
acceder esté dentro del rango válido de la lista. Puedes usar la función `len()` para obtener la longitud de
la lista y luego verificar si el índice está dentro de esos límites antes de intentar acceder al elemento.
36 -
● ¿Cómo se accede al último elemento de una lista usando índices negativos?
Para acceder al último elemento de una lista en Python utilizando un índice negativo, simplemente debes
usar `-1` como el índice. En Python, el índice `-1` hace referencia al último elemento, `-2` al penúltimo, y
así sucesivamente.
Por ejemplo, si tienes una lista llamada `mi_lista` y quieres acceder al último elemento, puedes hacerlo
así:
ultimo_elemento = mi_lista[-1]
En este ejemplo, `mi_lista[-1]` devolverá el valor `50`, que es el último elemento de la lista `[10, 20, 30, 40,
50]`.
Esta forma de acceder a elementos utilizando índices negativos es muy útil, especialmente cuando no
sabes cuántos elementos tiene la lista o cuando necesitas acceder a elementos desde el final hacia el
principio.
Tupla
Una tupla en Python es similar a una lista en términos de almacenar una colección de elementos. Sin embargo, a
diferencia de las listas, las tuplas son inmutables, lo que significa que no puedes modificar sus elementos una vez
que se ha creado. Las tuplas se definen encerrando sus elementos entre paréntesis ().
Una tupla en Python es una colección ordenada e inmutable de elementos. Esto significa que una vez que
se crea una tupla, no se pueden modificar sus elementos. Las tuplas se crean utilizando paréntesis `()` y
los elementos están separados por comas.
Por ejemplo, aquí hay una tupla que contiene tres elementos:
mi_tupla = (1, 2, 3)
A diferencia de una lista, no puedes agregar, eliminar o modificar elementos en una tupla después de que
se ha creado. Si intentas hacerlo, se generará un error.
1. **Mutabilidad**:
- **Lista**: Es mutable, lo que significa que puedes cambiar, agregar o eliminar elementos después de
que se ha creado.
- **Tupla**: Es inmutable, lo que significa que no puedes modificar los elementos después de que se ha
creado.
2. **Sintaxis**:
3. **Velocidad**:
- Debido a su inmutabilidad, las tuplas tienden a ser más eficientes en términos de rendimiento que las
listas, especialmente para operaciones como acceso a elementos.
37 -
4. **Uso**:
- Las listas se utilizan cuando necesitas una colección de elementos que puedas modificar (agregar,
eliminar, cambiar).
- Las tuplas se utilizan cuando necesitas una colección de elementos que no debes modificar.
Las tuplas son útiles cuando deseas asegurarte de que los datos no se modifiquen accidentalmente o
cuando necesitas una estructura de datos que se comporte como una lista, pero que no deba ser
cambiada.
Para definir una tupla con un solo elemento en Python, es necesario incluir una coma `,` después del
elemento. Esto es importante porque Python interpreta los paréntesis `()` como operadores de
agrupación, no como indicadores de una tupla de un solo elemento.
Por ejemplo, si quieres crear una tupla con el número `5` como único elemento, deberías hacerlo de la
siguiente manera:
mi_tupla = (5,)
Observa que hay una coma después del `5`. Esto le indica a Python que se trata de una tupla con un solo
elemento, en lugar de simplemente un valor rodeado de paréntesis.
Si omites la coma, Python tratará el valor entre paréntesis como simplemente el valor en sí, y no como
una tupla:
Por lo tanto, recuerda siempre incluir una coma después del elemento cuando estés creando una tupla
con un solo elemento.
● ¿Por qué podrías preferir usar una tupla en lugar de una lista en algunos escenarios?
Existen varias situaciones en las que preferirías usar una tupla en lugar de una lista en Python:
1. **Inmutabilidad**:
- Cuando necesitas un conjunto de datos que no debe ser modificado después de su creación, las tuplas
ofrecen inmutabilidad. Esto puede ser útil para garantizar la integridad de los datos en situaciones donde
no se deben realizar cambios.
2. **Eficiencia**:
- Las tuplas son más eficientes en términos de rendimiento que las listas debido a su inmutabilidad. Al
no poder cambiar los elementos, Python puede optimizar ciertas operaciones y acceder a los elementos
de manera más rápida.
- Si quieres asegurarte de que los datos no sean alterados por accidente, una tupla proporciona una
capa adicional de seguridad.
4. **Integridad de datos**:
- Cuando se trabaja con datos que representan conceptos inmutables (como coordenadas geográficas,
información sobre una fecha, etc.), es preferible usar tuplas para garantizar que los valores no cambien
inadvertidamente.
5. **Desempaquetado de tuplas**:
- Las tuplas pueden ser desempaquetadas fácilmente en variables individuales. Esto es útil cuando una
función retorna múltiples valores que están relacionados entre sí.
38 -
6. **Como claves de diccionario**:
- Las tuplas pueden usarse como claves en un diccionario porque son inmutables. Las listas, al ser
mutables, no pueden ser usadas como claves de diccionario.
- Las tuplas pueden formar parte de un conjunto (`set`) porque son inmutables. Las listas no pueden ser
miembros de un conjunto debido a su mutabilidad.
En resumen, las tuplas son útiles cuando necesitas datos inmutables y quieres asegurarte de que no se
produzcan cambios accidentales. También pueden ser más eficientes en términos de rendimiento en
ciertos escenarios. Sin embargo, si necesitas modificar o extender la colección de elementos, una lista
sería la elección adecuada.
Funciones de Tupla
Aunque las tuplas son inmutables, Python proporciona funciones para trabajar con ellas. Algunas funciones
comunes incluyen len() para obtener el número de elementos y index() para encontrar el índice de un elemento
específico.
Para obtener el número de elementos en una tupla en Python, puedes utilizar la función `len()`. Esta
función devuelve la cantidad de elementos en una secuencia, ya sea una lista, tupla o cualquier otro tipo
de colección.
Por ejemplo, si tienes una tupla llamada `mi_tupla`, puedes obtener su longitud de la siguiente manera:
mi_tupla = (1, 2, 3, 4, 5)
longitud = len(mi_tupla)
En este ejemplo, `len(mi_tupla)` devuelve `5`, ya que hay cinco elementos en la tupla `(1, 2, 3, 4, 5)`.
Ten en cuenta que `len()` también puede utilizarse para obtener la longitud de listas, cadenas y otras
secuencias en Python.
● Si tienes una tupla con elementos repetidos, ¿cómo encuentras el índice del primer elemento específico?
Puedes utilizar el método `index()` para encontrar el índice del primer elemento específico en una tupla
que contiene elementos repetidos. Este método devuelve el índice de la primera ocurrencia del elemento
que estás buscando.
mi_tupla = (1, 2, 3, 2, 4, 2, 5)
indice = mi_tupla.index(elemento)
Donde `mi_tupla` es la tupla en la que deseas buscar, y `elemento` es el valor que estás tratando de
encontrar.
Por ejemplo, si tienes una tupla con elementos repetidos y deseas encontrar el índice del primer `2`,
puedes hacerlo así:
mi_tupla = (1, 2, 3, 2, 4, 2, 5)
indice = mi_tupla.index(2)
39 -
En este ejemplo, `indice` contendría el valor `1`, ya que el primer `2` se encuentra en el índice `1`.
Si el elemento que estás buscando no existe en la tupla, el método `index()` generará un error
`ValueError`. Por lo tanto, es importante asegurarse de verificar si el elemento existe antes de intentar
obtener su índice.
No, no es posible modificar un elemento de una tupla directamente. Las tuplas en Python son inmutables,
lo que significa que una vez que se crean, no se pueden cambiar.
Si intentas modificar un elemento de una tupla directamente, Python generará un error `TypeError` para
indicar que la operación no es permitida.
Por ejemplo:
mi_tupla = (1, 2, 3)
Si necesitas modificar los elementos, deberías considerar usar una lista en su lugar, ya que las listas son
mutables y te permiten realizar cambios en sus elementos después de su creación.
Diccionario
Un diccionario en Python es una colección no ordenada de elementos en pares de clave-valor. A diferencia de las
listas y las tuplas, donde los elementos se acceden mediante índices, los elementos de un diccionario se acceden
mediante claves únicas. Los diccionarios se definen encerrando sus elementos entre llaves {}
Un diccionario en Python es una estructura de datos que permite almacenar y organizar datos en pares
clave-valor. Cada elemento en un diccionario consiste en una clave única y su correspondiente valor
asociado. Las claves pueden ser de cualquier tipo inmutable, como cadenas, números o tuplas, y los
valores pueden ser de cualquier tipo, incluyendo listas, tuplas, diccionarios u otros objetos.
A diferencia de listas y tuplas, los elementos en un diccionario no están ordenados, lo que significa que no
tienen un índice específico asociado a ellos. En cambio, se accede a los valores a través de sus claves.
1. **Listas**:
2. **Tuplas**:
40 -
3. **Diccionarios**:
- Los elementos están indexados por sus claves (que pueden ser de cualquier tipo inmutable).
- Útil para representar relaciones entre datos y para acceder a valores de manera eficiente a través de
sus claves.
mi_diccionario = {
"nombre": "Juan",
"edad": 30,
En este ejemplo, `mi_diccionario` contiene tres pares clave-valor: "nombre" con el valor "Juan", "edad"
con el valor `30`, y "ciudad" con el valor "Buenos Aires".
Los diccionarios son especialmente útiles cuando necesitas asociar información o datos de manera
significativa a través de claves descriptivas.
Para acceder al valor asociado con una clave específica en un diccionario en Python, utilizas la notación de
corchetes `[]` junto con la clave que deseas consultar. Aquí hay un ejemplo:
mi_diccionario = {
"nombre": "Juan",
"edad": 30,
nombre = mi_diccionario["nombre"]
En este ejemplo, `mi_diccionario["nombre"]` devuelve el valor `"Juan"`, que es el valor asociado con la
clave `"nombre"`.
También puedes utilizar el método `get()` para obtener el valor asociado con una clave. La ventaja de
`get()` es que si la clave no existe, en lugar de generar un error, devuelve un valor predeterminado (o
`None` si no se proporciona un valor predeterminado).
nombre = mi_diccionario.get("nombre")
Ambos métodos son útiles, pero la notación de corchetes `[]` es más común y directa cuando sabes que la
clave existe en el diccionario. Por otro lado, `get()` es útil si no estás seguro de la existencia de la clave y
quieres evitar posibles errores.
Si intentas acceder a una clave que no existe en el diccionario, Python generará un error `KeyError`.
41 -
Flujos
Condición lógica
Una condición lógica es una expresión que puede evaluar como verdadera (True) o falsa (False). Estas condiciones
son la base de la toma de decisiones en la programación y se utilizan en estructuras de control como if, elif y else.
Una condición lógica, en programación, es una expresión que evalúa si una cierta afirmación es verdadera
o falsa. Estas condiciones son fundamentales en la toma de decisiones en un programa. Dependiendo de
si una condición es verdadera o falsa, el programa ejecutará diferentes bloques de código.
Las condiciones lógicas permiten que un programa se comunique y reaccione de manera dinámica a
diferentes situaciones. Esto es esencial para escribir programas que no sigan un flujo de ejecución lineal y
que puedan adaptarse a diferentes escenarios.
Por ejemplo, imagina un programa que debe determinar si un usuario tiene permiso para acceder a cierta
parte de un sitio web. Se podría usar una condición lógica para verificar si el usuario tiene las credenciales
adecuadas. Si la condición es verdadera, se le permite el acceso; si es falsa, se le niega.
Las condiciones lógicas son vitales para la lógica de control de flujo en programación, lo que significa que
te permiten decidir qué instrucciones ejecutar en función de ciertas condiciones. Esto es esencial para
crear programas dinámicos y capaces de responder a diferentes situaciones y datos de entrada.
Las condiciones lógicas se utilizan en una amplia variedad de situaciones en programación para controlar
el flujo de ejecución del programa. Aquí hay algunas situaciones comunes en las que usarías una condición
lógica:
1. **Toma de decisiones**:
- Para ejecutar un bloque de código si una condición es verdadera y otro bloque si es falsa. Por ejemplo,
determinar si un usuario tiene los permisos adecuados para acceder a cierta parte de una aplicación.
2. **Bucles**:
- Para determinar si se debe continuar o detener la ejecución de un bucle. Por ejemplo, en un bucle
`while`, puedes usar una condición lógica como criterio de terminación.
3. **Filtrado de datos**:
- Para seleccionar o filtrar elementos de una colección de datos según ciertos criterios. Por ejemplo,
filtrar una lista para obtener solo los números pares.
4. **Manejo de errores**:
5. **Validación de entrada**:
- Para verificar si los datos ingresados por un usuario cumplen con ciertos requisitos antes de
procesarlos.
- Para adaptar la interfaz o el comportamiento de una aplicación según las preferencias o características
del usuario.
42 -
7. **Control de flujo en juegos**:
- En la programación de juegos, las condiciones lógicas son fundamentales para determinar cómo
responder a las acciones del jugador y al estado del juego.
8. **Automatización de tareas**:
- En la automatización de scripts, se utilizan condiciones lógicas para decidir qué acciones tomar en
función de ciertas condiciones del sistema.
9. **Optimización de algoritmos**:
En resumen, las condiciones lógicas son esenciales para tomar decisiones en tiempo de ejecución y
permiten que los programas se adapten y respondan a diferentes situaciones y datos de entrada. Son una
parte fundamental de la programación y permiten la creación de programas dinámicos y flexibles.
En Python, los valores que se consideran "falsy" (es decir, se evalúan como `False` en un contexto
booleano) son aquellos que son considerados como "falsos" cuando se utilizan en expresiones lógicas o de
control de flujo.
3. **Cero numérico**: Cualquier número igual a `0` (ya sea de tipo entero, decimal o complejo) se
considera "falsy".
- Puedes definir tu propia clase y sobreescribir el método `__bool__()` para controlar si las instancias de
esa clase se evalúan como "falsy" o no.
- Si una clase define el método especial `__bool__` o `__len__`, el objeto se evaluará en función del valor
retornado por estos métodos. Por ejemplo, si `__bool__` devuelve `False`, el objeto será considerado
"falsy".
- Algunas instancias de clases incorporadas pueden tener un comportamiento "falsy" si están diseñadas
de esa manera. Por ejemplo, `datetime.datetime(0, 0, 0)` (una fecha que representa el "inicio del tiempo")
se evalúa como "falsy".
Es importante entender los valores "falsy" porque son fundamentales en las expresiones lógicas y las
declaraciones de control de flujo, como las instrucciones `if`, `while` y `for`. Por lo tanto, entender qué
valores se consideran "falsy" es crucial para escribir código Python efectivo y preciso.
43 -
Operadores de comparación
Los operadores de comparación son símbolos utilizados para comparar dos valores. Los operadores comunes en
Python incluyen: == (igual a), != (diferente de), < (menor que), > (mayor que), <= (menor o igual que) y >= (mayor o
igual que).
● ¿Qué son los operadores de comparación y cuáles son los más comunes en Python?
Los operadores de comparación en Python son utilizados para comparar dos valores y determinar la
relación entre ellos. Estos operadores devuelven un valor booleano (`True` o `False`) que indica si la
comparación es verdadera o falsa.
2. **Diferente de (`!=`) o (`<>`) en versiones anteriores de Python 2.x**: Comprueba si dos valores no son
iguales.
3. **Mayor que (`>`) y Menor que (`<`)**: Comprueban si un valor es mayor o menor que otro,
respectivamente.
4. **Mayor o igual que (`>=`) y Menor o igual que (`<=`)**: Comprueban si un valor es mayor o igual, o
menor o igual que otro, respectivamente.
5. **Pertenencia (`in`)**: Comprueba si un valor está presente en una secuencia (como una lista, tupla o
cadena).
6. **No pertenencia (`not in`)**: Comprueba si un valor no está presente en una secuencia.
Estos operadores son fundamentales para realizar comparaciones y tomar decisiones basadas en
condiciones en un programa Python. Por ejemplo, se utilizan en estructuras de control como `if`, `elif` y
`while` para determinar qué código se debe ejecutar en función de las condiciones evaluadas.
x=5
y=3
# Igual a
print(x == y) # False
# Diferente de
print(x != y) # True
# Mayor que
# Menor que
44 -
# Menor o igual que
# Pertenencia
lista = [1, 2, 3, 4, 5]
# No pertenencia
La principal diferencia entre = y == es que = se utiliza para asignar valores a variables, mientras que == se
utiliza para comparar si dos valores son iguales. Es importante no confundir estos dos operadores, ya que
un error común en programación es usar = cuando se debería usar == para realizar una comparación.
Para comparar si dos cadenas son iguales en contenido en Python, puedes usar el operador de
comparación `==`. Esto verifica si los caracteres en ambas cadenas son idénticos.
Por ejemplo:
cadena1 = "Hola"
cadena2 = "Hola"
if cadena1 == cadena2:
else:
En este ejemplo, las dos cadenas contienen el mismo contenido ("Hola"), por lo que la condición `cadena1
== cadena2` se evalúa como `True` y el mensaje "Las cadenas son iguales" se imprime en la consola.
Ten en cuenta que la comparación de cadenas es sensible a mayúsculas y minúsculas. Por lo tanto, "hola"
y "Hola" se considerarían diferentes en una comparación directa. Si necesitas realizar una comparación sin
distinguir entre mayúsculas y minúsculas, puedes convertir ambas cadenas a minúsculas (o mayúsculas)
antes de la comparación utilizando los métodos `lower()` o `upper()`.
Por ejemplo:
cadena1 = "Hola"
cadena2 = "hola"
if cadena1.lower() == cadena2.lower():
else:
En este caso, la comparación se realiza en minúsculas, por lo que las cadenas se considerarán iguales.
45 -
Tabla de Verdad
Una tabla de verdad es una representación matemática que muestra todas las posibles verdades (verdadero o falso)
de una expresión lógica, basada en todas las posibles combinaciones de verdades de sus variables.
Una tabla de verdad es una representación tabular que muestra todas las posibles combinaciones de
valores de entrada y los resultados correspondientes de una expresión lógica. Cada fila en la tabla de
verdad representa una combinación única de valores de entrada y el resultado de la expresión lógica para
esa combinación.
Las tablas de verdad son fundamentales en la lógica y en la teoría de circuitos booleanos, y se utilizan para
analizar y comprender el comportamiento de operaciones lógicas, como conjunciones (`AND`),
disyunciones (`OR`), negaciones (`NOT`), entre otras.
Las tablas de verdad son esenciales para el diseño y la comprensión de circuitos lógicos, así como para la
programación en lenguajes que utilizan lógica booleana, como Python, donde se utilizan en expresiones
condicionales y de control de flujo.
| A | B | A AND B |
|---|---|--------|
| 0 | 0 | 0 |F
| 0 | 1 | 0 |F
| 1 | 0 | 0 |F
| 1 | 1 | 1 |T
En esta tabla, `A` y `B` son las variables de entrada, y `A AND B` es el resultado de la operación `AND`
entre `A` y `B`. La tabla muestra todas las posibles combinaciones de valores de `A` y `B` y el resultado
correspondiente de la operación `AND`.
En una operación lógica `OR`, el resultado es `True` si al menos uno de los operandos es `True`. Por lo
tanto, para obtener un resultado `True`, al menos uno de los valores de entrada debe ser `True`.
En una tabla de verdad para el operador `OR`, la combinación de entradas que produce un resultado
`True` es aquella donde al menos una de las variables de entrada es `True`. Veamos la tabla de verdad
para la operación `OR`:
| A | B | A OR B |
|---|---|-------|
| 0 | 0 | 0 |F
| 0 | 1 | 1 |T
| 1 | 0 | 1 |T
| 1 | 1 | 1 |T
En esta tabla, las combinaciones de entradas que producen un resultado `True` son:
46 -
- Cuando `A` es `True` y `B` es `False` (`1 OR 0`).
Por lo tanto, cualquier combinación en la que al menos una de las variables de entrada sea `True`
producirá un resultado `True` en una operación `OR`.
Operador "and"
El operador lógico AND retorna True si y solo si ambos operandos son verdaderos. En Python, se representa por la
palabra clave and
El operador lógico `AND` en Python (y en lógica booleana en general) funciona de la siguiente manera:
- En una expresión `A AND B`, el resultado es `True` si **ambos** `A` y `B` son `True`. En todos los
demás casos, el resultado es `False`.
- Si `A` es `False`, no importa cuál sea el valor de `B`, la expresión `A AND B` será siempre `False`.
- Si `A` es `True`, entonces el resultado dependerá del valor de `B`. Si `B` es `True`, la expresión será
`True`; si `B` es `False`, la expresión será `False`.
- Ejemplos:
Por lo tanto, el operador `AND` solo evalúa como verdadero cuando **ambas** condiciones son
verdaderas. Si al menos una de las condiciones es falsa, el resultado es falso.
● En una operación con AND, si el primer operando es False, ¿se evalúa el segundo operando?
En una operación con el operador `AND` en Python, si el primer operando es `False`, el segundo operando
no se evalúa. Esto se debe a una propiedad conocida como "evaluación perezosa" (short-circuit
evaluation) en Python.
La evaluación perezosa significa que si el resultado de la operación se puede determinar a partir del
primer operando, Python no evaluará el segundo operando. Esto ahorra tiempo de ejecución y puede
mejorar la eficiencia del código.
A = False
B = some_function() # Supongamos que some_function() es una función que realiza algún cálculo
resultado = A and B
En este caso, si `A` es `False`, el resultado de la operación `A and B` será siempre `False`,
independientemente del valor de `B`. Por lo tanto, Python no necesita evaluar `B` y la función
`some_function()` no se ejecutará.
47 -
Esta propiedad es útil en situaciones en las que la evaluación de un operando puede ser costosa y no es
necesaria si el primer operando ya determina el resultado de la operación.
Supongamos que estás escribiendo un programa para verificar las credenciales de un usuario antes de
permitirle acceder a una función importante. El usuario debe proporcionar un nombre de usuario y una
contraseña válidos.
else:
En este ejemplo, el programa solicita al usuario que ingrese un nombre de usuario y una contraseña.
Luego, utiliza una declaración `if` con el operador `AND` para verificar si tanto el nombre de usuario como
la contraseña son correctos.
En este caso, el operador `AND` se utiliza para asegurarse de que ambas condiciones sean verdaderas
antes de permitir el acceso. Si cualquiera de las condiciones es falsa, el acceso se deniega.
Operador "or"
El operador lógico OR retorna True si al menos uno de los operandos es verdadero. En Python, se representa por la
palabra clave or.
El operador lógico `OR` en Python (y en lógica booleana en general) funciona de la siguiente manera:
- En una expresión `A OR B`, el resultado es `True` si al menos uno de los operandos (`A` o `B`) es `True`.
Si ambos son `False`, el resultado es `False`.
- Si `A` es `True`, no importa cuál sea el valor de `B`, la expresión `A OR B` será siempre `True`.
- Si `A` es `False`, entonces el resultado dependerá del valor de `B`. Si `B` es `True`, la expresión será
`True`; si `B` es `False`, la expresión será `False`.
- Ejemplos:
48 -
- `True OR False` es `True`.
Por lo tanto, el operador `OR` evalúa como verdadero cuando al menos uno de los operandos es `True`. Si
ambos operandos son `False`, el resultado es `False`.
● En una operación con OR, si el primer operando es True, ¿se evalúa el segundo operando?
En una operación con el operador OR en Python, si el primer operando es True, el segundo operando no
se evalúa. Esto también se debe a la propiedad de "evaluación perezosa" (short-circuit evaluation) en
Python.
Supongamos que estás escribiendo un programa para una tienda en línea y quieres determinar si un
cliente es elegible para un descuento especial. El descuento se aplica si el cliente tiene una membresía
premium o si ha acumulado cierta cantidad de puntos de fidelidad.
else:
En este ejemplo, el programa verifica si el cliente es elegible para un descuento especial. Se utiliza una
declaración `if` con el operador `OR` para evaluar dos condiciones:
1. `tiene_membresia` indica si el cliente tiene una membresía premium. Si es `True`, el cliente es elegible
para el descuento.
2. `puntos_fidelidad >= 200` verifica si el cliente tiene al menos 200 puntos de fidelidad. Si es así, el cliente
también es elegible para el descuento.
Si cualquiera de las condiciones es verdadera (es decir, el cliente tiene membresía o tiene suficientes
puntos de fidelidad), el cliente es elegible para el descuento y se imprime el mensaje de felicitación. Si
ambas condiciones son falsas, se imprime un mensaje indicando que el cliente no es elegible en este
momento.
En este caso, el operador `OR` se utiliza para determinar si al menos una de las condiciones es verdadera
para otorgar el descuento. Esto permite flexibilidad en las condiciones de elegibilidad para los clientes.
Operador "not"
El operador lógico NOT invierte el valor booleano de su operando. Si el operando es True, NOT retorna False y
viceversa. En Python, se representa por la palabra clave not.
49 -
El operador lógico `NOT` en Python (y en lógica booleana en general) tiene el siguiente funcionamiento y
propósito:
- El operador `NOT` invierte el valor de una expresión booleana. Es decir, si la expresión es `True`, `NOT`
la convierte en `False`, y si la expresión es `False`, `NOT` la convierte en `True`.
| A | not A |
|---|-------|
|0| 1 |
|1| 0 |
- Ejemplos:
- El propósito del operador `NOT` es negar o invertir el valor de una expresión booleana. Esto es útil en
situaciones donde se necesita verificar si una condición no se cumple.
Por ejemplo, si queremos verificar si un usuario no tiene una membresía básica, podemos usar el
operador `NOT`:
tiene_membresia_basica = False
if not tiene_membresia_basica:
else:
En resumen, el operador `NOT` es útil para negar una condición y cambiar el sentido de una expresión
booleana. Esto es esencial en la lógica de control de flujo y toma de decisiones en programación.
50 -
contraseña = input("Ingrese su contraseña: ")
if not contraseña:
print("La contraseña no puede estar vacía. Por favor, ingrese una contraseña.")
else:
En este ejemplo, el programa solicita al usuario que ingrese una contraseña. Luego, utiliza una declaración
`if` con el operador `NOT` para verificar si la contraseña no está vacía.
- Si el usuario no ingresa ninguna contraseña (es decir, la variable `contraseña` es una cadena vacía), la
condición `not contraseña` se evalúa como `True`. Esto significa que la contraseña está vacía y se imprime
el mensaje indicando que debe ingresar una contraseña.
- Si el usuario proporciona una contraseña, la condición `not contraseña` se evalúa como `False`. Esto
significa que la contraseña no está vacía y se imprime el mensaje de acceso concedido.
En este caso, el operador `NOT` se utiliza para verificar si una condición no se cumple, lo que es útil para
garantizar que ciertos requisitos se cumplan antes de proceder.
if-else
if-else es una estructura de control en Python que permite ejecutar un bloque de código si una condición es
verdadera (if) y otro bloque si es falsa (else).
La estructura `if-else` en Python es una construcción que permite tomar decisiones en función de una
condición. Funciona de la siguiente manera:
```python
if condicion:
else:
```
- Se evalúa la condición especificada después del `if`. Si la condición es verdadera, se ejecuta el bloque de
código dentro del `if`. Si es falsa, se ejecuta el bloque de código dentro del `else`.
- La parte `else` es opcional. Si no se proporciona, el programa simplemente continúa después del bloque
de código del `if`.
- La estructura `if-else` permite bifurcar el flujo del programa en dos direcciones diferentes dependiendo
de si una condición es verdadera o falsa.
if condicion:
51 -
# Código a ejecutar si la condición es verdadera
else:
1. **Tomar decisiones basadas en condiciones**: Por ejemplo, determinar si un usuario tiene permiso
para acceder a cierta función o si un producto está disponible para la compra.
2. **Manejo de errores y excepciones**: Puedes usar `if-else` para manejar casos en los que se producen
errores o excepciones.
3. **Control de flujo del programa**: Puedes utilizar `if-else` para guiar el flujo de ejecución del programa
en función de diferentes escenarios.
4. **Validación de datos de entrada**: Puedes verificar si los datos ingresados por un usuario cumplen
con ciertos criterios antes de procesarlos.
● Si tienes una declaración if sin un else y la condición se evalúa como falsa, ¿qué sucede?
Si tienes una declaración `if` sin un `else` y la condición se evalúa como falsa, entonces el bloque de código
dentro del `if` simplemente no se ejecutará y el programa continuará con la siguiente línea de código
después del `if`.
En otras palabras, si la condición de la declaración `if` es falsa y no hay un `else` asociado, el programa
simplemente omitirá el bloque de código dentro del `if` y continuará ejecutando el código que sigue
después de la declaración `if`.
Por ejemplo:
condicion = False
if condicion:
En este ejemplo, si `condicion` es `False`, la línea dentro del bloque `if` no se ejecutará, pero la línea que
sigue después del `if` se ejecutará independientemente de la condición.
Supongamos que estás escribiendo un programa para determinar si un estudiante ha aprobado un curso
basado en su puntaje final.
```
52 -
puntaje_minimo_aprobacion = 60.0
else:
print("El estudiante no ha alcanzado el puntaje mínimo. Debe estudiar más para la próxima vez.")
```
En este ejemplo:
3. Luego, se utiliza una estructura `if-else` para determinar si el estudiante ha aprobado o no.
Este es un ejemplo práctico de cómo usar la estructura `if-else` para tomar decisiones en un programa.
Dependiendo del puntaje final ingresado, el programa proporcionará un mensaje apropiado indicando si
el estudiante ha aprobado o no el curso.
Elif
elif, que es una abreviatura de "else if", permite comprobar múltiples condiciones después de un if y antes de un
else. Se ejecuta si su condición es verdadera y todas las condiciones if y elif anteriores son falsas.
`elif` es una abreviación de "else if" y se utiliza en Python para evaluar múltiples condiciones en una
estructura de control `if-elif-else`. `elif` se coloca después de un bloque `if` y antes de un bloque `else`.
La estructura es la siguiente:
```
if condicion_1:
elif condicion_2:
else:
```
53 -
- `if`: Se utiliza para evaluar una condición y ejecutar un bloque de código si esa condición es verdadera. Es
la primera condición que se evalúa y solo se ejecuta un bloque de código dentro de un `if`.
- `elif`: Se utiliza para evaluar una condición si la condición en el `if` es falsa. Puedes tener múltiples
bloques `elif` para evaluar condiciones adicionales. Se ejecuta el primer bloque `elif` cuya condición sea
verdadera.
- `else`: Se utiliza como una rama final en una estructura `if-elif-else`. Si ninguna de las condiciones
anteriores es verdadera, el bloque de código dentro del `else` se ejecuta. Solo puede haber un bloque
`else` y siempre es la última condición que se evalúa.
Ejemplo:
```
numero = 5
else:
```
En este ejemplo, si `numero` es mayor que 10, se ejecuta el primer bloque de código. Si no, se verifica si
`numero` es mayor que 5 pero no mayor que 10, y si eso es cierto, se ejecuta el segundo bloque de
código. Si ninguna de las condiciones anteriores es verdadera, se ejecuta el bloque de código en el `else`.
`elif` se utiliza en una estructura de control `if-elif-else` para manejar múltiples condiciones de manera
secuencial. Esto te permite evaluar una serie de condiciones y ejecutar el bloque de código asociado a la
primera condición que sea verdadera.
A continuación te muestro un ejemplo de cómo usar `elif` para manejar múltiples condiciones:
```
opcion = 3
if opcion == 1:
elif opcion == 2:
elif opcion == 3:
else:
print("Opción no válida")
```
En este ejemplo:
54 -
1. Se define una variable `opcion` con el valor 3.
2. Se utiliza una estructura `if-elif-else` para evaluar la variable `opcion` en diferentes condiciones.
- Si `opcion` es igual a 1, se ejecuta el primer bloque de código y se imprime "Elegiste la opción 1".
- Si `opcion` es igual a 2, se ejecuta el segundo bloque de código y se imprime "Elegiste la opción 2".
- Si `opcion` es igual a 3, se ejecuta el tercer bloque de código y se imprime "Elegiste la opción 3".
- Si ninguna de las condiciones anteriores es verdadera, se ejecuta el bloque `else` y se imprime "Opción
no válida".
En este caso, dado que `opcion` tiene el valor 3, se cumple la tercera condición (`opcion == 3`), por lo que
se ejecuta el bloque de código asociado a esa condición y se imprime "Elegiste la opción 3".
Este es solo un ejemplo, pero puedes usar `elif` para manejar cualquier número de condiciones que
necesites en tu programa.
● Proporcione un ejemplo en el que sea útil usar elif en lugar de múltiples declaraciones if. (ejemplo
anterior)
Ciclo for
También conocido como Bucle for
El ciclo for en Python es utilizado para iterar sobre una secuencia (que puede ser una lista, una tupla, un diccionario,
un conjunto o una cadena). Con este bucle, es posible ejecutar un bloque de código para cada elemento en la
secuencia. A diferencia de muchos otros lenguajes de programación, donde un bucle for típicamente itera a través
de una progresión aritmética de números, el bucle for de Python itera sobre los ítems de cualquier secuencia en el
orden que aparecen en la secuencia.
● ¿Qué es un bucle for y cómo se usa en Python para iterar sobre secuencias?
Un bucle `for` en Python es una estructura de control que permite iterar sobre una secuencia de
elementos, como una lista, una tupla, una cadena de caracteres, un rango de números, entre otros.
Permite ejecutar un bloque de código repetidamente para cada elemento de la secuencia.
```
```
- `elemento` es una variable que tomará el valor de cada elemento de la secuencia en cada iteración.
El bucle `for` es una herramienta poderosa para procesar colecciones de datos y realizar tareas repetitivas
de manera eficiente en Python. Puedes combinarlo con condicionales y otros conceptos para realizar
tareas más complejas.
55 -
● ¿Cómo se usaría un bucle for para imprimir todos los elementos de una lista?
```
print(fruta)
```
En este ejemplo, el bucle `for` recorre la lista `frutas` y en cada iteración, la variable `fruta` toma el valor
de un elemento de la lista. El bloque de código dentro del bucle (`print(fruta)`) se ejecuta con cada valor
de `fruta`.
La salida sería:
```
manzana
banana
cereza
```
También puedes usar un bucle `for` junto con la función `range()` para iterar sobre una secuencia de
números. Por ejemplo:
```
for i in range(5):
print(i)
```
Ciclo while
También conocido como Bucle while
El ciclo while en Python se utiliza para repetir un bloque de código mientras una condición sea verdadera. La
ejecución del bucle comienza con la evaluación de la condición; si es True, se ejecuta el bloque de código dentro del
bucle. Después de cada ejecución del bloque de código, la condición se vuelve a evaluar. El bucle continúa mientras
la condición sea verdadera y se detiene cuando la condición se convierte en False. Es crucial garantizar que, en
algún momento, la condición del bucle while se evalúe como False para evitar bucles infinitos.
56 -
Un bucle `while` en Python es una estructura de control que permite ejecutar un bloque de código
repetidamente mientras una condición especificada sea verdadera. A diferencia del bucle `for`, que itera
sobre una secuencia de elementos, el bucle `while` se basa en la evaluación de una condición booleana.
```
while condicion:
```
- `condicion` es una expresión booleana que se evalúa en cada iteración. Si la condición es `True`, el
bloque de código se ejecuta; si es `False`, el bucle se detiene.
1. **Control de la iteración**:
- En un bucle `for`, se itera sobre una secuencia predefinida de elementos (como una lista o un rango de
números).
2. **Condiciones de terminación**:
- En un bucle `for`, el número de iteraciones está determinado por la longitud de la secuencia sobre la
cual se itera.
- En un bucle `while`, las iteraciones continúan mientras la condición sea verdadera y se detienen
cuando la condición se vuelve falsa.
En resumen, un bucle `while` es útil cuando no sabes cuántas iteraciones necesitarás y quieres que la
iteración continúe mientras una condición sea verdadera. Por otro lado, un bucle `for` es más adecuado
cuando sabes cuántas veces necesitas iterar sobre una secuencia de elementos.
● Proporcione un ejemplo en el que un bucle while sería más apropiado que un bucle for.
**Ejemplo práctico**:
Supongamos que queremos imprimir los números del 1 al 5 usando un bucle `while`:
```
contador = 1
print(contador)
contador += 1
```
En este ejemplo, inicializamos una variable `contador` a 1. El bucle `while` verifica si `contador` es menor
o igual a 5 en cada iteración. Mientras esta condición sea verdadera, el bloque de código dentro del bucle
se ejecutará, lo que imprimirá el valor de `contador`. Luego, incrementamos `contador` en 1 en cada
iteración.
La salida sería:
```
57 -
2
```
● ¿Qué precauciones deben tomarse al usar un bucle while para evitar bucles infinitos?
Para evitar bucles infinitos al usar un bucle `while`, es importante tener en cuenta algunas precauciones y
buenas prácticas:
- La condición en el bucle `while` debe eventualmente evaluar a `False` para que el bucle se detenga. Si
la condición siempre es `True`, el bucle continuará indefinidamente.
- Dentro del bucle, asegúrate de modificar la variable que controla la condición en algún momento. Si no
lo haces, es posible que la condición siempre sea verdadera y el bucle se vuelva infinito.
```
contador = 1
print(contador)
```
- Evita condiciones que siempre sean verdaderas. Por ejemplo, `while True:` creará un bucle infinito a
menos que haya una forma explícita de salir del bucle.
- Si es posible, incluye una condición que permita salir del bucle en algún momento. Puedes usar una
sentencia `break` para salir del bucle basado en una condición adicional.
```
while condicion:
if condicion_de_salida:
break
```
- Si estás usando un bucle `while` que depende de entradas de usuario, asegúrate de validar y verificar
las entradas para evitar situaciones que puedan llevar a bucles infinitos.
```
while True:
58 -
entrada = input("Ingrese un valor (q para salir): ")
if entrada == 'q':
break
```
- Asegúrate de que la condición de terminación del bucle sea clara y fácil de entender para cualquier
persona que lea tu código.
Siguiendo estas precauciones y buenas prácticas, puedes evitar bucles infinitos y garantizar que tu
programa se comporte de manera controlada.
Las declaraciones `break` y `continue` son instrucciones que afectan el flujo de ejecución dentro de un
bucle en Python:
1. **break**:
- La declaración `break` se utiliza para salir inmediatamente de un bucle, sin importar si la condición de
salida se ha cumplido completamente o no.
- Cuando se encuentra una declaración `break`, el flujo del programa se salta fuera del bucle y continúa
con la siguiente línea de código después del bucle.
- Se suele usar en situaciones donde se necesita salir del bucle en función de alguna condición específica.
**Ejemplo**:
```
for i in range(5):
if i == 3:
break
print(i)
```
En este ejemplo, cuando `i` es igual a 3, se ejecuta la declaración `break` y el bucle se detiene
inmediatamente. La salida sería:
```
59 -
1
```
2. **continue**:
- La declaración `continue` se utiliza para interrumpir la iteración actual de un bucle y continuar con la
siguiente iteración.
- Cuando se encuentra una declaración `continue`, el flujo del programa salta a la siguiente iteración del
bucle, sin ejecutar el resto del código dentro del bucle en esa iteración en particular.
- Se suele usar cuando quieres omitir ciertas iteraciones basado en una condición.
**Ejemplo**:
```
for i in range(5):
if i == 2:
continue
print(i)
```
En este ejemplo, cuando `i` es igual a 2, se ejecuta la declaración `continue`, lo que hace que el bucle
pase directamente a la siguiente iteración. Como resultado, el número 2 no se imprime. La salida sería:
```
```
En resumen, `break` se utiliza para salir completamente de un bucle cuando se cumple una condición
específica, mientras que `continue` se utiliza para omitir la iteración actual y pasar a la siguiente cuando se
cumple una condición. Ambas declaraciones son herramientas poderosas para controlar el flujo de
ejecución dentro de un bucle.
Supongamos que queremos encontrar el primer número en una lista que sea mayor que 10. Una vez que
lo encontramos, no necesitamos continuar buscando. Podemos usar `break` para salir del bucle en ese
punto.
```
break
60 -
```
En este ejemplo, el bucle `for` itera a través de la lista `numeros`. Cuando encuentra un número mayor
que 10 (en este caso, 12), imprime el mensaje y luego ejecuta la declaración `break`. Esto detiene el bucle
y el programa continúa con la siguiente línea de código después del bucle.
La salida sería:
```
```
Sin la declaración `break`, el bucle continuaría iterando a través de la lista incluso después de haber
encontrado un número mayor que 10. Sin embargo, gracias a `break`, podemos detener el bucle en el
momento adecuado.
● ¿Cómo usaría continue para saltarse la ejecución de ciertos ítems en una lista durante la iteración?
Puedes usar la declaración `continue` para omitir la ejecución de ciertos ítems en una lista durante la
iteración. Aquí tienes un ejemplo práctico:
Supongamos que queremos imprimir solo los números impares de una lista y saltar los números pares:
```
continue
print(numero)
```
En este ejemplo, el bucle `for` itera a través de la lista `numeros`. Para cada número, se verifica si es par
(`numero % 2 == 0`). Si es par, se ejecuta la declaración `continue`, lo que hace que el bucle pase
directamente a la siguiente iteración sin ejecutar el código que sigue después del `if`. Si el número es
impar, se imprime.
La salida sería:
```
```
En este caso, el bucle omite los números pares (2, 4, 6, 8, 10) y solo imprime los números impares. Esto
demuestra cómo `continue` te permite controlar qué elementos procesar durante una iteración.
61 -
Funciones
Función
Una función en Python es un bloque organizado y reutilizable de código que realiza una única acción relacionada.
Las funciones proporcionan modularidad y eficiencia a los programas, permitiendo que ciertas tareas se encapsulen
y se invoquen cuando sea necesario sin repetir código.
En programación, una función es un bloque de código reutilizable que realiza una tarea específica o un
conjunto de tareas relacionadas. Una función toma ciertos inputs, realiza operaciones en ellos y puede
devolver un resultado como output.
El propósito principal de las funciones es dividir un programa en bloques más pequeños y manejables.
```
resultado = a + b
return resultado
# Uso de la función
resultado_suma = suma(3, 5)
```
En este ejemplo, la función `suma` toma dos argumentos (`a` y `b`), realiza una operación de suma y luego
devuelve el resultado. Esta función puede ser utilizada en diferentes partes del programa para realizar
sumas sin necesidad de escribir el código de suma repetidamente.
1. **Reutilización de código**: Una vez que defines una función, puedes usarla en múltiples lugares de tu
programa sin tener que escribir el mismo código una y otra vez.
2. **Organización**: Las funciones permiten organizar el código de manera lógica y modular, lo que hace
que sea más fácil de entender y mantener.
3. **Abstracción**: Las funciones permiten a los programadores utilizar una función sin necesidad de
entender los detalles internos de cómo funciona. Esto facilita el trabajo en equipo y la colaboración.
4. **Facilita la depuración**: Si hay un error en una función, puedes concentrarte en esa función
específica para corregir el problema, en lugar de tener que buscar errores en todo el programa.
5. **Mejora la legibilidad**: Utilizar funciones con nombres descriptivos puede hacer que tu código sea
más legible y comprensible.
6. **Permite dividir problemas complejos**: Puedes dividir un problema grande en problemas más
pequeños y escribir funciones para resolver cada uno de ellos por separado.
62 -
● ¿Cómo se diferencia una función de un método en Python?
En Python, la diferencia principal entre una función y un método radica en cómo se utilizan y a qué se
aplican:
1. **Función**:
- Una función en Python es un bloque de código que realiza una tarea específica. Puede tomar cero o
más argumentos como entrada, procesarlos y devolver un resultado como salida.
- Las funciones en Python pueden ser independientes y no están asociadas a ningún objeto o clase en
particular.
- Se definen utilizando la palabra clave `def` seguida del nombre de la función y la lista de parámetros
entre paréntesis.
**Ejemplo**:
```
def saludar(nombre):
```
2. **Método**:
- Un método en Python es una función que pertenece a un objeto o a una clase. Es una función que
puede acceder y modificar los atributos y datos asociados al objeto.
- Los métodos son invocados en el contexto de un objeto específico y pueden acceder a sus atributos a
través del uso de la palabra clave `self`.
**Ejemplo**:
```
class Persona:
```
En este ejemplo, `saludar` es un método de la clase `Persona`. Puede acceder y modificar los atributos
de la instancia de `Persona` a través de la variable `self`.
En resumen, la diferencia clave es que una función es independiente y no está asociada a ningún objeto o
clase en particular, mientras que un método está definido dentro de una clase y está asociado a instancias
específicas de esa clase. Los métodos se utilizan para definir el comportamiento de los objetos de una
clase, mientras que las funciones pueden realizan tareas independientes sin estar vinculadas a un objeto
específico.
Definición de Función
La definición de una función en Python se realiza utilizando la palabra clave def seguida del nombre de la función y
paréntesis. El código dentro de la función se escribe con una indentación después de los dos puntos (:) que siguen a
la definición.
63 -
● ¿Cómo se define una función en Python?
Para definir una función en Python, utiliza la palabra clave `def` seguida del nombre que deseas darle a la
función.
Añade dos puntos (`:`) al final de la línea de definición de la función para indicar el comienzo del bloque de
código de la función.
Escribe el código que quieres que la función ejecute, sangrando con espacios o tabulaciones para indicar
que este código pertenece al cuerpo de la función.
Si la función debe devolver un valor, utiliza la palabra clave `return` seguida del valor que deseas devolver.
Aquí tienes un ejemplo de cómo definir una función simple que suma dos números:
```
resultado = a + b
return resultado
```
En este ejemplo, hemos definido una función llamada `suma` que toma dos argumentos (`a` y `b`). El
cuerpo de la función realiza la operación de suma y luego devuelve el resultado.
Invocación de Función
También conocido como Ejecución o Llamado
Una vez que una función ha sido definida, puede ser invocada o llamada por su nombre seguido de paréntesis. Esto
provoca la ejecución del bloque de código dentro de la función.
```
resultado_suma = suma(3, 5)
```
Recuerda que las funciones en Python son bloques de código reutilizables que te permiten dividir un
programa en partes más pequeñas y manejables. Puedes llamar una función tantas veces como sea
necesario en tu programa para ejecutar su código
64 -
Si intentas llamar a una función antes de definirla en tu código, Python generará un error llamado
`NameError`. Esto se debe a que Python evalúa el código en secuencia y cuando encuentra una llamada a
una función, espera que esa función ya esté definida.
Por ejemplo, si intentas llamar a una función `mi_funcion()` antes de definirla, recibirás un error similar a
este:
```
```
Para resolver este problema, asegúrate de definir la función antes de intentar llamarla en tu programa.
Coloca la definición de la función antes de cualquier lugar en el que la utilices. Esto asegurará que Python
conozca la función antes de intentar ejecutarla.
Sí, una función puede llamarse a sí misma. Esto se conoce como "recursión". Una función que se llama a sí
misma se llama una función recursiva.
Para que una función recursiva funcione correctamente, debe tener un caso base, que es una condición
que indica cuándo la función debe dejar de llamarse a sí misma y comenzar a devolver valores. Sin un caso
base, la función recursiva continuaría llamándose a sí misma indefinidamente, lo que llevaría a un error de
desbordamiento de pila (llamado "RecursionError: maximum recursion depth exceeded").
```
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
```
En este ejemplo, la función `factorial` se llama a sí misma con el argumento `n-1` hasta que `n` alcanza el
caso base de 0, momento en el que la función comienza a devolver valores. Esto ilustra cómo una función
puede utilizar la recursión para resolver problemas que se pueden dividir en casos más pequeños y
manejables.
Parámetro
Los parámetros son valores que se pasan a una función cuando se la invoca. Estos valores se utilizan dentro de la
función para realizar operaciones o manipulaciones. En la definición de la función, los parámetros se especifican
entre los paréntesis y se separan por comas.
Los parámetros en una función son variables que se utilizan para recibir valores que la función necesita
para llevar a cabo su tarea. Estos valores se proporcionan cuando se llama a la función y se utilizan dentro
del cuerpo de la función para realizar operaciones.
65 -
La definición de una función incluye los nombres de los parámetros entre paréntesis, separados por
comas. Por ejemplo, en la función `suma(a, b)`, `a` y `b` son los parámetros.
Cuando se llama a una función, los valores que se pasan como argumentos se corresponden con los
parámetros en la misma posición. Por ejemplo, si llamamos a `suma(3, 5)`, se asignará 3 a `a` y 5 a `b`.
```
return mensaje
```
En este caso, `nombre` y `saludo` son los parámetros de la función `saludar`. Cuando llamamos a
`saludar("Juan", "Hola")`, "Juan" se asigna a `nombre` y "Hola" se asigna a `saludo`.
Es importante recordar que el número de argumentos que se pasen debe coincidir con el número de
parámetros definidos en la función. Si no coinciden, Python generará un error.
Además, los nombres de los parámetros en la definición de la función son locales a esa función. Esto
significa que no afectarán a variables con el mismo nombre en otros lugares del programa.
1. **Parámetros**:
- Los parámetros son nombres de variables que se utilizan en la definición de una función o método.
- Los parámetros son como marcadores de posición para los valores que se pasarán cuando se llame a la
función.
- Los parámetros son locales a la función, lo que significa que solo son válidos y visibles dentro del
cuerpo de la función.
Ejemplo:
```
resultado = a + b
return resultado
```
2. **Argumentos**:
- Los argumentos son los valores reales que se pasan a una función cuando se llama.
- Los argumentos se utilizan para proporcionar valores específicos a los parámetros de la función.
66 -
- Los argumentos se especifican cuando se llama a la función y se corresponden en orden y número con
los parámetros de la función.
Ejemplo:
```
resultado_suma = suma(3, 5)
```
En este caso, 3 y 5 son argumentos que se pasan a la función `suma`, y se corresponden con los
parámetros `a` y `b` respectivamente.
Entonces, en resumen, los parámetros son las variables definidas en la declaración de una función,
mientras que los argumentos son los valores reales que se pasan cuando se llama a la función. Los
argumentos se asignan a los parámetros de acuerdo con su posición en la llamada a la función.
En Python, puedes definir una función que acepte un número variable de argumentos utilizando el
símbolo de asterisco `*` en el nombre del último parámetro. Esto se conoce como "empaquetamiento de
argumentos" o "argumentos arbitrarios".
Puedes utilizar `*args` para aceptar un número variable de argumentos sin nombre. Esto empaqueta
los argumentos en una tupla.
Ejemplo:
```
def mi_funcion(*args):
print(arg)
mi_funcion(1, 2, 3, 4)
```
En este ejemplo, `*args` empaqueta los argumentos en una tupla llamada `args`. La función itera sobre
esta tupla e imprime cada elemento.
Puedes utilizar `**kwargs` para aceptar un número variable de argumentos con nombre. Esto
empaqueta los argumentos en un diccionario.
Ejemplo:
```
def mi_funcion(**kwargs):
print(f"{clave}: {valor}")
67 -
```
En este ejemplo, `**kwargs` empaqueta los argumentos con nombre en un diccionario llamado
`kwargs`. La función itera sobre este diccionario e imprime cada par clave-valor.
Al utilizar estos símbolos de empaquetamiento (`*args` y `**kwargs`), puedes crear funciones que acepten
un número variable de argumentos sin tener que especificar de antemano cuántos argumentos se
pasarán. Esto es útil cuando no sabes cuántos argumentos se proporcionarán en la llamada a la función.
Retorno
Las funciones en Python pueden devolver un valor al punto desde el cual fueron llamadas utilizando la declaración
return. Esto permite que las funciones produzcan un resultado que puede ser almacenado en una variable o
utilizado de otras maneras en el programa principal.
Una función en Python devuelve un valor utilizando la palabra clave `return`. Cuando se ejecuta una
instrucción `return`, la función detiene su ejecución y devuelve el valor especificado. Esto permite que el
resultado de la función sea utilizado en otras partes del programa.
Por ejemplo, aquí hay una función simple que suma dos números y devuelve el resultado:
```
resultado = a + b
return resultado
```
En este caso, `return resultado` indica que la función debe devolver el valor contenido en la variable
`resultado`.
Para utilizar el valor devuelto por la función, puedes asignarlo a una variable cuando llamas a la función:
```
resultado_suma = suma(3, 5)
```
En este ejemplo, la función `suma(3, 5)` devuelve el resultado de la suma, que es 8. Luego, ese valor se
asigna a la variable `resultado_suma` y se imprime. Es importante recordar que una función puede tener
múltiples instrucciones `return`, pero una vez que se ejecuta una de ellas, la función termina y devuelve el
valor especificado.
Si no hay una instrucción `return` en una función, o si se ejecuta sin un valor después de `return`, la
función devuelve automáticamente `None`.
● ¿Es posible que una función devuelva múltiples valores? Si es así, ¿cómo?
68 -
Sí, es posible que una función devuelva múltiples valores en Python. Esto se logra al separar los valores
que deseas devolver con comas en la instrucción `return`. Los valores devueltos se empaquetarán en una
tupla y se pueden desempaquetar cuando se llama a la función.
Por ejemplo, supongamos que queremos una función que calcule tanto la suma como el producto de dos
números:
```
suma = a + b
producto = a * b
```
En este caso, la función `operaciones` devuelve dos valores: `suma` y `producto`. Cuando llamamos a la
función y almacenamos el resultado, podemos desempaquetar esos valores:
```
```
Ahora, `resultado_suma` contendrá el valor de la suma (8) y `resultado_producto` contendrá el valor del
producto (15).
También es posible recibir los valores devueltos directamente en una tupla, por ejemplo:
```
resultados = operaciones(3, 5)
```
En este caso, `resultados` será una tupla que contiene los valores de la suma y el producto.
Este mecanismo de devolución de múltiples valores es muy útil en muchas situaciones, ya que permite
que una función proporcione una variedad de resultados útiles.
Variable local
Una variable definida dentro del cuerpo de una función se llama variable local. Esta variable solo existe y es
accesible dentro de esa función. Cuando la función se completa, la variable local se destruye y su memoria se libera.
Una variable local en programación es una variable que se declara y se utiliza dentro de un bloque de
código o función y tiene un ámbito (scope) limitado a ese bloque o función específica. Esto significa que la
variable solo es accesible y válida dentro de ese contexto local y no puede ser utilizada fuera de él.
Las variables locales se utilizan para almacenar y manipular datos en un ámbito específico sin interferir
con otras partes del programa. Esto proporciona un nivel de encapsulamiento y evita conflictos de
nombres entre diferentes partes de un programa más grande.
Por ejemplo, en el siguiente código, la variable `nombre` es una variable local dentro de la función
`saludar`:
69 -
```
def saludar():
nombre = "Juan"
print(f"Hola, {nombre}!")
saludar()
```
En este caso, `nombre` solo es válido dentro de la función `saludar`. Si intentamos acceder a `nombre`
fuera de la función, Python generaría un error.
Es importante tener en cuenta que una variable local en una función no es visible ni accesible desde fuera
de esa función. Además, cada vez que se llama a la función, se crea una nueva instancia de la variable
local, por lo que las variables locales en diferentes llamadas a la función no están vinculadas entre sí.
En resumen, una variable local se utiliza para almacenar datos temporalmente dentro de un bloque de
código o función y solo es válida dentro de ese contexto específico. Esto ayuda a organizar y gestionar
datos de manera eficiente en un programa.
● ¿Puede una función acceder a una variable local definida en otra función?
No, una función no puede acceder directamente a una variable local definida en otra función. Las
variables locales tienen un ámbito (scope) limitado al bloque o función en el que fueron definidas, lo que
significa que solo son accesibles dentro de ese contexto específico.
```
def funcion1():
variable_local = "Hola"
print(variable_local)
def funcion2():
print(variable_local)
funcion1()
funcion2()
```
La función `funcion1` define una variable local llamada `variable_local` y la imprime con éxito. Sin
embargo, cuando intentamos imprimir `variable_local` desde `funcion2`, se generará un error, ya que
`variable_local` no está definida en el ámbito de `funcion2`.
Si necesitas que una función comparta datos con otra, puedes hacerlo pasando esos datos como
argumentos cuando llamas a la función. También puedes utilizar variables globales o devolver valores de
una función y luego usarlos como argumentos para otra función.
Por ejemplo:
```
def funcion1():
variable_local = "Hola"
70 -
return variable_local
def funcion2(valor):
print(valor)
resultado = funcion1()
funcion2(resultado)
```
En este caso, la función `funcion1` devuelve el valor de `variable_local` y luego ese valor se pasa como
argumento a la función `funcion2`. Esto permite que las funciones se comuniquen entre sí sin tener que
acceder directamente a las variables locales de otras funciones.
Variable global
A diferencia de las variables locales, una variable global es una variable que se define en el cuerpo principal del
código Python y no dentro de una función. Es accesible desde cualquier función y mantiene su valor entre llamadas
a funciones.
Una variable global en programación es una variable que se define fuera de cualquier función o bloque de
código y está disponible en todo el programa, incluyendo dentro de funciones y métodos. Esto significa
que su ámbito (scope) es global y puede ser accedida y modificada desde cualquier parte del programa.
Por otro lado, una variable local es una variable que se define dentro de un bloque de código o función y
solo es válida y accesible dentro de ese contexto específico. Su ámbito está limitado al bloque o función
en el que se declaró.
La principal diferencia entre variables globales y locales radica en su ámbito de visibilidad y dónde pueden
ser utilizadas:
- **Variables Globales**:
- **Variables Locales**:
Es importante tener en cuenta que, si existe una variable local y una variable global con el mismo nombre,
la variable local tiene prioridad dentro del bloque o función en el que fue declarada. Esto significa que la
variable local oculta la variable global con el mismo nombre dentro de ese ámbito específico.
El uso de variables globales y locales permite organizar y gestionar datos de manera eficiente en un
programa, y proporciona un nivel de encapsulamiento que ayuda a evitar conflictos de nombres entre
diferentes partes del código.
71 -
Es conveniente usar variables globales cuando necesitas que un valor sea accesible y modificado en
diferentes partes de tu programa, o cuando quieres evitar pasar el mismo valor como argumento a
múltiples funciones.
Sin embargo, es importante utilizar variables globales con precaución, ya que su uso excesivo puede hacer
que el código sea menos legible y más difícil de depurar. Además, las variables globales pueden complicar
el rastreo de errores y dificultar la comprensión de cómo interactúan diferentes partes del programa.
Algunos escenarios comunes en los que puede ser conveniente utilizar variables globales son:
1. **Constantes o valores invariables**: Si tienes valores que se utilizan en muchas partes del programa y
no cambian, como por ejemplo configuraciones o parámetros constantes, puedes utilizar variables
globales para evitar tener que repetir esos valores en cada función.
3. **Cachés o estados compartidos**: En algunos casos, puede ser útil tener una variable global para
almacenar un estado o una caché que debe ser compartida por varias partes del programa.
Es importante tener en cuenta que si decides usar variables globales, es recomendable mantener un
control cuidadoso sobre su uso y documentar claramente su propósito y cómo deben ser utilizadas.
Además, considera si hay alternativas, como el uso de argumentos de función o la organización de tu
código de manera que reduzca la necesidad de variables globales. Esto puede hacer que tu código sea más
modular y fácil de entender.
Para modificar una variable global desde dentro de una función en Python, debes indicar explícitamente
que deseas acceder y modificar la variable global utilizando la palabra clave `global` seguida del nombre
de la variable global. De lo contrario, Python creará automáticamente una variable local con el mismo
nombre dentro de la función, lo que no modificará la variable global.
Aquí tienes un ejemplo que muestra cómo modificar una variable global desde dentro de una función:
```
# Variable global
variable_global = 10
def modificar_variable_global():
global variable_global
variable_global = 20
modificar_variable_global()
```
72 -
En este ejemplo, la función `modificar_variable_global` utiliza la palabra clave `global` para indicar que se
modificará la variable global llamada `variable_global`. Después de llamar a esta función, la variable global
se actualiza a 20.
Es importante utilizar la palabra clave `global` con precaución, ya que el uso excesivo de variables globales
puede dificultar la comprensión del flujo de datos en tu programa. En general, se recomienda mantener el
uso de variables globales al mínimo y considerar alternativas, como pasar valores como argumentos de
función cuando sea posible, para mantener un código más claro y modular.
73 -