← Volver a los quizzesQuiz gratuito

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…

20 preguntas~10 min
Fundamentos de lógica de programación en Python — Qwi
0 / 20
Puntuación: 0%
1

¿Cuál es el resultado de la expresión 5 // 2 en Python?

2

En una sentencia if‑elif‑else, ¿qué ocurre si varias condiciones son verdaderas?

3

¿Cuál es la diferencia principal entre el operador + usado con números y con listas?

4

En la lógica de cortocircuito, ¿qué sucede al evaluar la expresión False and func()?

5

¿Cuál es la salida del siguiente fragmento? x = 5 y = 10 maximo = x if x > y else y print(maximo)

6

¿Qué ocurre si una función recursiva carece de caso base?

7

En el contexto de paso por referencia, ¿qué se modifica después de llamar a agregar_elemento(lista)?

8

¿Cuál es la diferencia entre una variable global y una local en Python?

9

¿Qué imprime el siguiente código? for i in range(1, 4): print(i * 2)

10

En una cláusula de guarda, ¿qué se hace típicamente cuando la condición falla?

11

¿Cuál es la salida de print(8 % 2) en Python?

12

¿Qué diferencia hay entre el operador ** y el operador * cuando se usan con números?

13

En un bucle while, ¿qué condición debe cumplirse para evitar un bucle infinito?

14

¿Cuál es la salida de la siguiente expresión? print('Hola' * 2 + ' Mundo')

15

¿Qué se evalúa primero en la expresión a > 0 or b > 0?

16

¿Cuál es la ventaja principal del principio DRY en el código?

17

En una función definida como def f(x): return x * 2, ¿qué pasa si se llama f('a')?

18

¿Qué se entiende por 'case _' en una construcción match‑case?

19

¿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))

20

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 // 2 produce 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:
    valor = 10
    if valor > 5:
        print('Mayor que 5')
    elif valor > 8:
        print('Mayor que 8')
    else:
        print('Menor o igual a 5')
    La salida será "Mayor que 5", porque la primera condición ya es verdadera.
  • Utiliza elif para 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:
    def saludo():
        print('Hola')
        return True
    
    if False and saludo():
        print('Esto nunca se muestra')
    Sólo se imprimirá "Hola" si la primera condición fuera 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:
    x = 5
    y = 10
    maximo = x if x > y else y
    print(maximo)
    La salida será 10, ya que x > y es False y se selecciona y.
  • Este operador es equivalente a una estructura if‑else pero 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:
    def agregar_elemento(lista):
        lista.append(42)
    
    mi_lista = [1, 2, 3]
    agregar_elemento(mi_lista)
    print(mi_lista)  # [1, 2, 3, 42]
    La lista original recibe el nuevo elemento porque lista apunta al mismo objeto en memoria.
  • Si necesitas evitar la modificación, crea una copia con lista.copy() o list(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‑else solo 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.