Fundamentos de lógica de programación en Python
En este módulo aprenderás los conceptos esenciales que sustentan la lógica de programación en Python. Cada sección está diseñada para reforzar tus conocimientos mediante explicaciones…

En una sentencia if‑elif‑else, ¿qué ocurre si varias condiciones son verdaderas?
¿Cuál es la diferencia principal entre el operador + usado con números y con listas?
En la lógica de cortocircuito, ¿qué sucede al evaluar la expresión False and func()?
¿Cuál es la salida del siguiente fragmento? x = 5 y = 10 maximo = x if x > y else y print(maximo)
¿Qué ocurre si una función recursiva carece de caso base?
En el contexto de paso por referencia, ¿qué se modifica después de llamar a agregar_elemento(lista)?
¿Cuál es la diferencia entre una variable global y una local en Python?
¿Qué imprime el siguiente código? for i in range(1, 4): print(i * 2)
En una cláusula de guarda, ¿qué se hace típicamente cuando la condición falla?
¿Cuál es la salida de print(8 % 2) en Python?
¿Qué diferencia hay entre el operador ** y el operador * cuando se usan con números?
En un bucle while, ¿qué condición debe cumplirse para evitar un bucle infinito?
¿Cuál es la salida de la siguiente expresión? print('Hola' * 2 + ' Mundo')
¿Qué se evalúa primero en la expresión a > 0 or b > 0?
¿Cuál es la ventaja principal del principio DRY en el código?
En una función definida como def f(x): return x * 2, ¿qué pasa si se llama f('a')?
¿Qué se entiende por 'case _' en una construcción match‑case?
¿Cuál es la salida de la siguiente llamada? def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) print(factorial(3))
En un bucle for‑each, ¿qué variable representa cada elemento de la colección?
Fundamentos de lógica de programación en Python
En este módulo aprenderás los conceptos esenciales que sustentan la lógica de programación en Python. Cada sección está diseñada para reforzar tus conocimientos mediante explicaciones claras, ejemplos prácticos y buenas prácticas de codificación. Además, el contenido está optimizado para SEO, facilitando su búsqueda en línea.
Operadores aritméticos y de división entera
Python ofrece varios operadores para realizar cálculos. Uno de los más confusos para principiantes es el operador de división entera //, que devuelve el cociente sin decimales.
- Ejemplo:
5 // 2produce 2, ya que 5 dividido entre 2 es 2.5 y la parte fraccionaria se descarta. - Este operador es útil cuando necesitas trabajar con índices de listas o cuando el resultado debe ser un número entero.
Recuerda que / siempre devuelve un float, mientras que // devuelve un int (o float si alguno de los operandos es float).
Estructuras de control: if‑elif‑else
Las sentencias condicionales permiten ejecutar bloques de código según el cumplimiento de una condición. En una cadena if‑elif‑else, solo se ejecuta el bloque correspondiente a la primera condición verdadera. Las demás condiciones son ignoradas, incluso si también son verdaderas.
- Ejemplo:
La salida será "Mayor que 5", porque la primera condición ya es verdadera.valor = 10 if valor > 5: print('Mayor que 5') elif valor > 8: print('Mayor que 8') else: print('Menor o igual a 5') - Utiliza
elifpara evaluar múltiples posibilidades sin crear anidaciones excesivas.
Operador + con números y listas
El mismo operador puede comportarse de forma distinta según el tipo de datos:
- Con números,
+realiza una suma aritmética (3 + 4 = 7). - Con listas,
+concatena los elementos, creando una nueva lista que contiene los elementos de ambas listas ([1,2] + [3,4] = [1,2,3,4]).
Esta diferencia es fundamental para evitar errores de tipo y para aprovechar la potencia de Python al manipular colecciones.
Lógica de cortocircuito: operadores and y or
Python evalúa expresiones lógicas de forma perezosa. En la expresión False and func(), el intérprete detecta que el resultado será False sin necesidad de ejecutar func(). Por lo tanto, func() no se ejecuta.
- Esto mejora el rendimiento y evita efectos secundarios no deseados.
- Ejemplo práctico:
Sólo se imprimirá "Hola" si la primera condición fueradef saludo(): print('Hola') return True if False and saludo(): print('Esto nunca se muestra')True.
Expresiones condicionales (operador ternario)
Python permite escribir una condición en una sola línea usando la sintaxis valor_si_verdadero if condición else valor_si_falso. Este patrón es útil para asignaciones rápidas.
- Ejemplo:
La salida será 10, ya quex = 5 y = 10 maximo = x if x > y else y print(maximo)x > yesFalsey se seleccionay. - Este operador es equivalente a una estructura
if‑elsepero más conciso.
Recursión y caso base
Una función recursiva se llama a sí misma. Para evitar una recursión infinita, es imprescindible definir un caso base que detenga la llamada recursiva. Si falta el caso base, Python seguirá llamando a la función hasta agotar la pila de llamadas, provocando un RecursionError: maximum recursion depth exceeded (también conocido como stack overflow).
- Ejemplo correcto:
def factorial(n): if n == 0: return 1 # caso base return n * factorial(n-1) - Ejemplo sin caso base (causa error):
def cuenta_atras(n): print(n) cuenta_atras(n-1) # nunca termina
Paso por referencia y mutabilidad de listas
En Python, los objetos mutables (como list) se pasan por referencia. Cuando una función recibe una lista y modifica su contenido, la lista original se ve afectada.
- Ejemplo:
La lista original recibe el nuevo elemento porquedef agregar_elemento(lista): lista.append(42) mi_lista = [1, 2, 3] agregar_elemento(mi_lista) print(mi_lista) # [1, 2, 3, 42]listaapunta al mismo objeto en memoria. - Si necesitas evitar la modificación, crea una copia con
lista.copy()olist(lista)antes de pasarla.
Ámbito de variables: global vs local
Una variable global está disponible en todo el programa, mientras que una variable local solo existe dentro de la función donde se declara.
- Para modificar una variable global dentro de una función, debes declararla con la palabra clave
global.contador = 0 def incrementar(): global contador contador += 1 - Si no usas
global, Python crea una nueva variable local con el mismo nombre, dejando la global sin cambios.
Resumen de conceptos clave
- Operador
//realiza división entera. - En
if‑elif‑elsesolo se ejecuta el bloque de la primera condición verdadera. - El operador
+suma números y concatena listas. - La lógica de cortocircuito evita evaluaciones innecesarias.
- El operador ternario permite asignaciones condicionales en una sola línea.
- Una recursión sin caso base genera un stack overflow.
- Las listas son mutables y se pasan por referencia.
- Las variables globales son accesibles en todo el programa; las locales, solo dentro de su función.
Dominar estos fundamentos te proporcionará una base sólida para escribir código Python claro, eficiente y libre de errores comunes. Practica cada concepto con ejercicios propios y revisa la documentación oficial de Python para profundizar aún más.
