Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Quiz: Estructuras de Control

🧭 Navegación:

¡Es hora de poner a prueba tus conocimientos sobre estructuras de control en Python! Este quiz cubre todos los conceptos que hemos visto en esta sección.

Instrucciones

  • Lee cada pregunta cuidadosamente
  • Intenta responder sin mirar las soluciones
  • Al final, compara tus respuestas con las soluciones proporcionadas
  • Cada respuesta correcta vale 1 punto

Preguntas

1. Condicionales

¿Qué imprimirá el siguiente código?

x = 5
y = 10
if x > y:
    print("A")
elif x + 5 >= y:
    print("B")
elif y - 5 >= x:
    print("C")
else:
    print("D")

a) A b) B c) C d) D

2. Operador Ternario

¿Cuál es el equivalente del siguiente código usando el operador ternario?

if edad >= 18:
    estado = "Mayor de edad"
else:
    estado = "Menor de edad"

a) estado = "Mayor de edad" if edad >= 18 else "Menor de edad" b) estado = edad >= 18 ? "Mayor de edad" : "Menor de edad" c) estado = "Mayor de edad" when edad >= 18 else "Menor de edad" d) estado = edad >= 18 then "Mayor de edad" else "Menor de edad"

3. Bucles For

¿Qué imprimirá el siguiente código?

for i in range(1, 10, 2):
    print(i, end=" ")

a) 1 2 3 4 5 6 7 8 9 b) 1 3 5 7 9 c) 2 4 6 8 d) 1 3 5 7

4. Bucles While

¿Cuántas veces se ejecutará el bucle en el siguiente código?

contador = 10
while contador > 0:
    print(contador)
    contador -= 2

a) 5 veces b) 10 veces c) 6 veces d) Infinitas veces

5. Break y Continue

¿Qué imprimirá el siguiente código?

for i in range(10):
    if i == 3:
        continue
    if i == 8:
        break
    print(i, end=" ")

a) 0 1 2 4 5 6 7 b) 0 1 2 4 5 6 7 8 c) 0 1 2 3 4 5 6 7 d) 0 1 2 4 5 6 7 9

6. Bucles Anidados

¿Qué imprimirá el siguiente código?

for i in range(3):
    for j in range(2):
        print(f"({i},{j})", end=" ")
    print()

a)

(0,0) (0,1)
(1,0) (1,1)
(2,0) (2,1)

b)

(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)

c)

(0,0) (1,0) (2,0)
(0,1) (1,1) (2,1)

d)

(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)

7. Else en Bucles

¿Qué imprimirá el siguiente código?

for i in range(5):
    if i == 10:
        break
    print(i, end=" ")
else:
    print("Fin", end=" ")

a) 0 1 2 3 4 b) 0 1 2 3 4 Fin c) Fin d) No imprimirá nada

8. Patrones Comunes

¿Qué patrón se está utilizando en el siguiente código?

numeros = [10, 25, 3, 8, 42, 15, 7]
maximo = numeros[0]
for numero in numeros[1:]:
    if numero > maximo:
        maximo = numero
print(maximo)

a) Filtrado b) Transformación c) Acumulación d) Búsqueda

9. Comprensión de Listas

¿Cuál es el resultado de la siguiente comprensión de lista?

[x**2 for x in range(1, 6) if x % 2 == 0]

a) [1, 4, 9, 16, 25] b) [4, 16] c) [1, 9, 25] d) [2, 4]

10. Diagramas de Flujo

¿Qué símbolo se utiliza para representar una decisión en un diagrama de flujo?

a) Rectángulo b) Óvalo c) Rombo d) Paralelogramo

11. Bucles y Listas

¿Qué imprimirá el siguiente código?

lista = [1, 2, 3, 4, 5]
for i in range(len(lista)):
    lista[i] *= 2
print(lista)

a) [1, 2, 3, 4, 5] b) [2, 4, 6, 8, 10] c) [1, 4, 9, 16, 25] d) [2, 4, 6, 8, 10, 1, 2, 3, 4, 5]

12. Bucles y Diccionarios

¿Qué imprimirá el siguiente código?

diccionario = {"a": 1, "b": 2, "c": 3}
for clave in diccionario:
    print(clave, end=" ")

a) a b c b) 1 2 3 c) a 1 b 2 c 3 d) El orden no está garantizado

13. Evaluación en Cortocircuito

¿Qué imprimirá el siguiente código?

x = 5
y = 0
if x > 10 and y / x > 2:
    print("A")
else:
    print("B")

a) A b) B c) Error de división por cero d) No imprimirá nada

14. Bucles y Funciones

¿Qué imprimirá el siguiente código?

def sumar_lista(lista):
    total = 0
    for numero in lista:
        if numero < 0:
            return 0
        total += numero
    return total

print(sumar_lista([1, 2, 3, -4, 5]))

a) 6 b) 7 c) 0 d) 11

15. Patrones Avanzados

¿Qué hace el siguiente código?

texto = "programacion"
frecuencias = {}
for letra in texto:
    if letra in frecuencias:
        frecuencias[letra] += 1
    else:
        frecuencias[letra] = 1
print(frecuencias)

a) Cuenta cuántas veces aparece cada letra en el texto b) Elimina letras duplicadas del texto c) Ordena las letras del texto alfabéticamente d) Convierte el texto a mayúsculas

Soluciones

Haz clic para ver las respuestas

1. Condicionales

Respuesta: b) B

Explicación:

  • x > y es False (5 no es mayor que 10), así que no entra en el primer if
  • x + 5 >= y es True (5 + 5 = 10, que es igual a 10), así que entra en el primer elif
  • Imprime “B” y no evalúa las demás condiciones

2. Operador Ternario

Respuesta: a) estado = "Mayor de edad" if edad >= 18 else "Menor de edad"

Explicación:

  • En Python, el operador ternario tiene la forma valor_si_verdadero if condicion else valor_si_falso
  • Las otras opciones son sintaxis de otros lenguajes o no existen en Python

3. Bucles For

Respuesta: b) 1 3 5 7 9

Explicación:

  • range(1, 10, 2) genera los números del 1 al 9 (10 no incluido) con paso 2
  • Esto produce la secuencia 1, 3, 5, 7, 9

4. Bucles While

Respuesta: a) 5 veces

Explicación:

  • El bucle comienza con contador = 10
  • En cada iteración, contador se reduce en 2
  • Las iteraciones son: 10, 8, 6, 4, 2
  • Después de la quinta iteración, contador = 0, y la condición contador > 0 es falsa, por lo que el bucle termina

5. Break y Continue

Respuesta: a) 0 1 2 4 5 6 7

Explicación:

  • El bucle itera de 0 a 9
  • Cuando i == 3, la instrucción continue hace que se salte el resto del código en esa iteración y pase a la siguiente
  • Cuando i == 8, la instrucción break hace que el bucle termine completamente
  • Por lo tanto, se imprimen los números 0, 1, 2, 4, 5, 6, 7

6. Bucles Anidados

Respuesta: a)

(0,0) (0,1)
(1,0) (1,1)
(2,0) (2,1)

Explicación:

  • El bucle externo itera de 0 a 2
  • Para cada valor de i, el bucle interno itera de 0 a 1
  • Después de cada bucle interno completo, se imprime una nueva línea

7. Else en Bucles

Respuesta: b) 0 1 2 3 4 Fin

Explicación:

  • El bucle itera de 0 a 4, imprimiendo cada número
  • La condición i == 10 nunca se cumple, por lo que el break nunca se ejecuta
  • Como el bucle termina normalmente (sin break), se ejecuta el bloque else

8. Patrones Comunes

Respuesta: c) Acumulación

Explicación:

  • El código está encontrando el valor máximo en una lista
  • Comienza con un valor inicial (el primer elemento) y lo actualiza si encuentra uno mayor
  • Este es un patrón de acumulación, específicamente para encontrar un máximo

9. Comprensión de Listas

Respuesta: b) [4, 16]

Explicación:

  • La comprensión genera el cuadrado de cada número del 1 al 5, pero solo para aquellos que son pares
  • Los números pares en ese rango son 2 y 4
  • Sus cuadrados son 4 y 16

10. Diagramas de Flujo

Respuesta: c) Rombo

Explicación:

  • En los diagramas de flujo estándar, el rombo se utiliza para representar decisiones (puntos donde el flujo puede tomar diferentes caminos según una condición)

11. Bucles y Listas

Respuesta: b) [2, 4, 6, 8, 10]

Explicación:

  • El bucle recorre cada índice de la lista
  • En cada iteración, multiplica el elemento en ese índice por 2
  • Esto modifica la lista original, duplicando cada valor

12. Bucles y Diccionarios

Respuesta: d) El orden no está garantizado

Explicación:

  • Antes de Python 3.7, los diccionarios no garantizaban un orden específico al iterar sobre ellos
  • A partir de Python 3.7, los diccionarios mantienen el orden de inserción
  • Sin embargo, en preguntas de examen, es mejor responder que el orden no está garantizado, ya que es la respuesta más segura y compatible con todas las versiones

13. Evaluación en Cortocircuito

Respuesta: b) B

Explicación:

  • La expresión x > 10 es False (5 no es mayor que 10)
  • Debido a la evaluación en cortocircuito, Python no evalúa la segunda parte de la expresión and cuando la primera parte es False
  • Por lo tanto, y / x nunca se evalúa y no hay error de división por cero
  • Como la condición es False, se ejecuta el bloque else y se imprime “B”

14. Bucles y Funciones

Respuesta: c) 0

Explicación:

  • La función suma los números de la lista hasta que encuentra un número negativo
  • Cuando encuentra -4, retorna 0 inmediatamente
  • Por lo tanto, el resultado es 0, no la suma de los números positivos

15. Patrones Avanzados

Respuesta: a) Cuenta cuántas veces aparece cada letra en el texto

Explicación:

  • El código crea un diccionario donde las claves son las letras del texto
  • Para cada letra, incrementa su contador si ya existe en el diccionario, o lo inicializa en 1 si es la primera vez que aparece
  • Este es un patrón común para contar frecuencias

Puntuación

  • 13-15 puntos: ¡Excelente! Dominas las estructuras de control en Python.
  • 10-12 puntos: Muy bien. Tienes un buen entendimiento, pero repasa algunos conceptos.
  • 7-9 puntos: Aceptable. Necesitas reforzar tu comprensión de algunas estructuras de control.
  • Menos de 7 puntos: Recomendamos revisar nuevamente los capítulos sobre estructuras de control.

Ejercicio Final: Implementación de un Algoritmo Completo

Ahora que has completado el quiz, pon a prueba tus habilidades implementando un algoritmo que combine varias estructuras de control:

# ================================
# ANALIZADOR DE TEXTO AVANZADO
# ================================

def analizar_texto(texto):
    """
    Analiza un texto y devuelve estadísticas sobre él.
    """
    if not texto:
        return "El texto está vacío"
    
    # Inicializar contadores
    caracteres_total = len(texto)
    letras = 0
    digitos = 0
    espacios = 0
    otros = 0
    palabras = 0
    
    # Contar frecuencia de cada carácter
    frecuencias = {}
    
    # Analizar cada carácter
    for caracter in texto:
        # Actualizar frecuencia
        if caracter in frecuencias:
            frecuencias[caracter] += 1
        else:
            frecuencias[caracter] = 1
        
        # Clasificar carácter
        if caracter.isalpha():
            letras += 1
        elif caracter.isdigit():
            digitos += 1
        elif caracter.isspace():
            espacios += 1
        else:
            otros += 1
    
    # Contar palabras
    palabras = len(texto.split())
    
    # Encontrar el carácter más frecuente
    caracter_mas_frecuente = ""
    max_frecuencia = 0
    
    for caracter, frecuencia in frecuencias.items():
        if frecuencia > max_frecuencia and not caracter.isspace():
            max_frecuencia = frecuencia
            caracter_mas_frecuente = caracter
    
    # Generar informe
    informe = {
        "caracteres_total": caracteres_total,
        "letras": letras,
        "digitos": digitos,
        "espacios": espacios,
        "otros": otros,
        "palabras": palabras,
        "caracter_mas_frecuente": caracter_mas_frecuente,
        "frecuencia_maxima": max_frecuencia
    }
    
    return informe

# Ejemplo de uso
texto_ejemplo = "Python es un lenguaje de programación versátil y poderoso. Fue creado en 1991 por Guido van Rossum."
resultado = analizar_texto(texto_ejemplo)

print("📊 ANÁLISIS DE TEXTO")
print("=" * 25)
print(f"Texto analizado: '{texto_ejemplo}'")
print()
print(f"Total de caracteres: {resultado['caracteres_total']}")
print(f"Letras: {resultado['letras']}")
print(f"Dígitos: {resultado['digitos']}")
print(f"Espacios: {resultado['espacios']}")
print(f"Otros caracteres: {resultado['otros']}")
print(f"Palabras: {resultado['palabras']}")
print(f"Carácter más frecuente: '{resultado['caracter_mas_frecuente']}' ({resultado['frecuencia_maxima']} veces)")

Este ejercicio combina múltiples estructuras de control y patrones que has aprendido:

  • Condicionales para manejar casos especiales
  • Bucles para recorrer cada carácter
  • Acumulación para contar diferentes tipos de caracteres
  • Contador de frecuencias con diccionarios
  • Búsqueda del máximo valor

¡Felicidades por completar la sección de Estructuras de Control! Ahora tienes las herramientas fundamentales para crear programas que puedan tomar decisiones y automatizar tareas repetitivas.


🧭 Navegación:

Capítulos de esta sección: