Quiz: Estructuras de Control
🧭 Navegación:
- Anterior: Diagramas de Flujo
- Volver a: Índice de Estructuras de Control
¡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
esFalse
(5 no es mayor que 10), así que no entra en el primerif
x + 5 >= y
esTrue
(5 + 5 = 10, que es igual a 10), así que entra en el primerelif
- 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óncontador > 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óncontinue
hace que se salte el resto del código en esa iteración y pase a la siguiente - Cuando
i == 8
, la instrucciónbreak
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 elbreak
nunca se ejecuta - Como el bucle termina normalmente (sin
break
), se ejecuta el bloqueelse
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
esFalse
(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 esFalse
- 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 bloqueelse
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:
- Anterior: Diagramas de Flujo
- Volver a: Índice de Estructuras de Control
Capítulos de esta sección:
- Introducción a Estructuras de Control
- Condicionales
- Bucles For
- Bucles While
- Control de Bucles
- Patrones Comunes
- Diagramas de Flujo
- Quiz: Estructuras de Control (página actual)