Responde de manera desarrollada, es decir, con al menos 5 a 8 líneas por respuesta, explicando con tus propias palabras y dando ejemplos cuando sea posible.
¿Cómo definirías la sintaxis de un if-elif-else en tus propias palabras?
¿Qué diferencias encuentras entre usar un solo if y usar if-elif-else?
Explica cómo representarías un diagrama de flujo que incluya una decisión múltiple con if-elif-else.
¿Por qué consideras que las bifurcaciones son importantes dentro de un programa?
Da un ejemplo de un problema de la vida diaria que podrías resolver con if-elif-else.
¿Qué ventajas y desventajas encuentras al usar if anidados en lugar de if-elif-else?
¿Qué sucede si omites la cláusula else en una estructura if-elif-else?
¿Cómo afecta la indentación en la claridad y ejecución de un bloque if-elif-else?
¿Cuál sería la consecuencia de usar demasiados if-elif-else en un mismo programa?
¿En qué casos prefieres usar if-elif-else en lugar de otras estructuras de control?
¿Cómo explicarías la sintaxis de un ciclo for en Python a alguien que nunca ha programado?
¿Qué diferencia ves entre un ciclo for en Python y en otros lenguajes como C o Java?
¿Cómo representarías un ciclo for en un diagrama de flujo?
¿Qué entiendes por bifurcación dentro de un ciclo for?
Menciona un caso de la vida real que resolverías con un ciclo for.
¿Cómo influyen los for anidados en el rendimiento de un programa?
¿Qué ventajas ofrece el ciclo for frente al ciclo while en situaciones donde conocemos el número de repeticiones?
¿Qué problemas puede ocasionar un mal uso del rango (range) dentro de un for?
¿Cómo aplicarías condiciones dentro de un for para filtrar información?
¿Qué ejemplos puedes dar de programas en los que el uso de for es indispensable?
¿Cómo describirías la sintaxis de un ciclo while en Python?
¿Cuál es la principal diferencia entre el ciclo while y el ciclo for?
¿Cómo dibujarías en un diagrama el funcionamiento de un ciclo while?
¿Qué significa que un ciclo while sea controlado por una condición?
¿Qué riesgos existen si no se actualiza correctamente la condición en un while?
¿En qué casos resulta más útil usar while en lugar de for?
¿Cómo representarías bifurcaciones dentro de un ciclo while?
¿Qué utilidad tienen los while anidados y qué desventajas pueden presentar?
¿Cómo evitarías que un ciclo while entre en un bucle infinito?
Menciona un ejemplo práctico de la vida real en donde un ciclo while sea más adecuado que un for.
En Python, la indentación (es decir, los espacios o tabulaciones al inicio de una línea) no es opcional, sino obligatoria.
Esto se debe a que Python no usa llaves {} como otros lenguajes (ej. Java, C, JavaScript) para delimitar los bloques de código, sino que usa la indentación para marcar qué instrucciones pertenecen a qué bloque.
Claridad: La indentación hace el código más legible y ordenado.
Estructura: Le indica a Python qué instrucciones están dentro de un if, for o while.
Obligatorio: Si no indentas, Python no sabrá qué pertenece al bloque y te dará un error de sintaxis.
edad = 18
if edad >= 18:
print("Eres mayor de edad") # ✅ Este print está dentro del if
print("Puedes votar") # ✅ También dentro del if
print("Fin del programa") # ❌ Este está fuera del if
➡️ Lo que está indentado pertenece al if.
➡️ Lo que no está indentado, se ejecuta siempre.
for i in range(3):
print("Número:", i) # ✅ Dentro del for
print("Ciclo terminado") # ❌ Fuera del for
📌 Si no indentaras el print("Número:", i), Python daría error porque no sabe qué está dentro del for.
contador = 1
while contador <= 3:
print("Contador:", contador) # ✅ Dentro del while
contador += 1 # ✅ También dentro
print("Bucle terminado") # ❌ Fuera del while
if True:
print("Hola") # 🚨 Error: expected an indented block
Python te marcará error porque espera un bloque indentado después del if.
✅ En resumen:
Python usa espacios para definir qué instrucciones pertenecen a un bloque.
Eso aplica en if, for, while, funciones, clases, etc.
Lo indentado pertenece al bloque; lo no indentado, ya no.
La estructura if-elif-else permite ejecutar diferentes bloques de código dependiendo del cumplimiento de condiciones lógicas.
Ejemplo general en pseudocódigo:
if condición1:
instrucciones_si_condición1
elif condición2:
instrucciones_si_condición2
else:
instrucciones_si_ninguna_condición
Se representa mediante un diagrama de flujo en forma de bifurcaciones:
Un rombo evalúa la condición principal (if).
Si es verdadera, se ejecuta el bloque asociado.
Si no, se revisa la siguiente condición (elif).
Finalmente, si ninguna condición es verdadera, se ejecuta el bloque else.
Cada condición divide el flujo del programa en rutas alternativas. Esto permite tomar decisiones según diferentes escenarios.
Es posible colocar otros if, elif o else dentro de un bloque principal, creando estructuras jerárquicas para problemas más complejos.
for sirve para repetir instrucciones un número determinado de veces o recorrer elementos de una secuencia.
Ejemplo en pseudocódigo:
for variable in rango_o_lista:
instrucciones_repetidas
El flujo parte de un punto inicial, verifica si hay elementos en el rango o colección, ejecuta el bloque de código y vuelve a evaluar hasta que no haya más elementos.
Dentro de un for pueden incluirse condiciones (if) para decidir qué acciones ejecutar según cada iteración.
Se pueden incluir otros ciclos for o estructuras if dentro del cuerpo principal, creando bucles y condiciones más elaboradas.
while ejecuta un bloque de código mientras una condición sea verdadera.
Ejemplo en pseudocódigo:
while condición:
instrucciones_mientras_sea_verdadero
El diagrama muestra un ciclo:
Se evalúa la condición en un rombo.
Si es verdadera, se ejecuta el bloque y se regresa a la evaluación.
Si es falsa, el flujo continúa fuera del ciclo.
Dentro del ciclo se pueden añadir decisiones (if) para modificar el comportamiento según los datos procesados.
Es posible incluir otros bucles while, for o sentencias condicionales dentro del ciclo principal, permitiendo estructuras repetitivas y condicionales combinadas.
Las estructuras if-elif-else, for y while son esenciales para controlar el flujo de un programa.
if-elif-else: toma de decisiones según condiciones.
for: repite acciones sobre rangos o colecciones.
while: repite mientras una condición sea verdadera.
El uso de bifurcaciones y sentencias anidadas amplía la capacidad de resolver problemas complejos, otorgando flexibilidad y precisión en el procesamiento y despliegue de información.
El origen de datos es la fuente desde donde obtenemos la información que vamos a procesar.
En un lenguaje de programación multiparadigma como Python, estos orígenes pueden ser muy variados:
Archivos locales: .csv, .txt, .json, .xlsx guardados en el equipo.
Bases de datos: MySQL, PostgreSQL, SQLite, MongoDB, etc.
APIs: Servicios web que proporcionan datos en tiempo real (ej. API de clima, finanzas, redes sociales).
Sensores o hardware: Dispositivos IoT, GPS, sensores de temperatura, etc.
Fuentes en la nube: Google Drive, Dropbox, AWS S3.
La validación de datos es el proceso de verificar que la información importada cumpla con las reglas y formatos esperados antes de su análisis.
Revisión de tipos de datos (enteros, flotantes, fechas, cadenas).
Comprobación de valores faltantes (null, NaN).
Detección de valores fuera de rango (ej. edades negativas).
Formato correcto (fechas bien escritas, correos válidos, códigos correctos).
La consolidación consiste en unificar datos que provienen de distintas fuentes para tener un solo conjunto coherente.
Unión (merge): Combinar tablas con campos en común.
Concatenación: Apilar datos uno debajo de otro (ej. reportes mensuales).
Normalización: Ajustar los datos a un mismo formato (moneda, fecha, mayúsculas/minúsculas).
Este paso busca descubrir cómo se conectan los datos entre sí.
Relaciones uno a uno: Un registro en una tabla corresponde a un solo registro en otra.
Relaciones uno a muchos: Un cliente puede tener muchas compras.
Relaciones muchos a muchos: Un estudiante puede estar en varios cursos, y un curso puede tener varios estudiantes.
Correlaciones estadísticas: Medir cómo una variable influye en otra.
Definición: Rama de la inteligencia artificial que permite a los sistemas aprender automáticamente de los datos y mejorar su rendimiento sin ser programados explícitamente.
Aplicaciones:
Predicción de ventas.
Clasificación de correos (spam/no spam).
Recomendación de productos.
Bibliotecas principales:
Scikit-learn:
Ideal para principiantes.
Ofrece algoritmos listos para usar (regresión, clasificación, clustering).
Ejemplo: from sklearn.linear_model import LinearRegression.
TensorFlow:
Desarrollada por Google.
Especializada en deep learning y redes neuronales.
Permite trabajar con grandes volúmenes de datos y usar aceleración por GPU.
Definición: Subcampo del machine learning que utiliza redes neuronales artificiales con múltiples capas para modelar patrones complejos.
Ejemplos de uso:
Reconocimiento facial.
Traducción automática.
Diagnóstico médico a partir de imágenes.
Bibliotecas más usadas: TensorFlow, Keras, PyTorch.
Definición: Procesamiento y análisis de datos no estructurados provenientes de documentos, comentarios, redes sociales, etc.
Técnicas clave:
Tokenización: dividir un texto en palabras o frases.
Análisis de sentimiento: identificar si un texto es positivo, negativo o neutro.
Extracción de palabras clave: localizar términos más relevantes.
Bibliotecas en Python: NLTK, spaCy, scikit-learn.
Ejemplo: análisis de reseñas de clientes para detectar satisfacción o quejas frecuentes.
El análisis requiere aplicar operaciones numéricas, aritméticas, lógicas y textuales para transformar la información y hacerla útil.
Uso de algoritmos matemáticos para resolver problemas de álgebra, cálculo, optimización, estadística.
Biblioteca destacada: NumPy.
Ejemplo: resolver sistemas de ecuaciones lineales o aproximar raíces.
Suma, resta, multiplicación, división, potencias, módulo.
Se aplican en limpieza de datos y cálculos básicos.
Ejemplo en Python:
a = 15
b = 4
print(a + b) # 19
print(a / b) # 3.75
print(a % b) # 3
Concatenación, búsqueda, reemplazo, extracción de subcadenas.
Muy útiles en la analítica de texto.
Ejemplo en Python:
mensaje = "Análisis de datos"
print(mensaje.upper()) # "ANÁLISIS DE DATOS"
print(mensaje.replace("datos", "información")) # "Análisis de información"
Comparaciones y condiciones que devuelven True o False.
Ejemplo: mayor que, menor que, igualdad.
x = 10
y = 20
print(x < y) # True
print(x == y) # False
Incluye funciones matemáticas avanzadas: raíz cuadrada, logaritmos, trigonometría.
Biblioteca: math o NumPy.
Ejemplo:
import math
print(math.sqrt(25)) # 5.0
print(math.log(10)) # 2.3025
Aquí tienes 20 ejercicios que te ayudarán a aprender Python y a fortalecer tus habilidades en el lenguaje:
Rubrica 1.2.1
1. Algoritmo para convertir horas a minutos:
o Iniciar.
o Leer el número de horas.
o Multiplicar el número de horas por 60.
o Mostrar el resultado en minutos.
o Finalizar.
2. Algoritmo para convertir días a horas:
3. Algoritmo para convertir semanas a días:
4. Algoritmo para convertir metros a centímetros:
o Iniciar.
o Leer la cantidad de metros.
o Multiplicar la cantidad de metros por 100.
o Mostrar el resultado en centímetros.
o Finalizar.
5. Algoritmo para convertir kilómetros a metros:
6. Algoritmo para convertir litros a mililitros:
7. Algoritmo para convertir gramos a kilogramos:
8. Algoritmo para convertir pies a pulgadas:
Iniciar.
o Leer la cantidad de pies.
o Multiplicar la cantidad de pies por 12.
o Mostrar el resultado en pulgadas.
o Finalizar.
9. Algoritmo para convertir pulgadas a centímetros:
10. Algoritmo para convertir horas a segundos:
Ejercicio 2
EJERCICIOS DE ALGORITMOS
1. Verificación de número mayor que 10
Problema: Determinar si un número es mayor que 10.
2. Verificación de número negativo
Problema: Determinar si un número es negativo.
3. Comparación de altura mínima
Problema: Verificar si una persona cumple con la altura mínima para subirse a una atracción.
4. Verificación de cadena vacía
Problema: Determinar si una cadena de texto está vacía.
5. Comparación de velocidad máxima
Problema: Verificar si un vehículo supera el límite de velocidad.
6. Determinación de número impar
Problema: Verificar si un número es impar.
7. Comparación de calificación sobresaliente
Problema: Determinar si una calificación es mayor o igual a 90.
8. Verificación de número múltiplo de 3
Problema: Determinar si un número es múltiplo de 3.
9. Determinación de un día de fin de semana
Problema: Verificar si un día es sábado o domingo.
10. Verificación de igualdad de longitud de cadenas
Problema: Determinar si dos cadenas de texto tienen la misma longitud.
Escribe un programa en Python que imprima "Hola Mundo" en la consola.
print("Hola Mundo")
Escribe un programa que pida al usuario dos números y luego imprima su suma.
num1 = float(input("Introduce el primer número: "))
num2 = float(input("Introduce el segundo número: "))
suma = num1 + num2
print("La suma es:", suma)
Crea un programa que pida un número al usuario y determine si es par o impar.
num = int(input("Introduce un número: "))
if num % 2 == 0:
print(f"{num} es par")
else:
print(f"{num} es impar")
Escribe un programa que muestre la tabla de multiplicar de un número ingresado por el usuario.
num = int(input("Introduce un número para mostrar su tabla de multiplicar: "))
for i in range(1, 11):
print(f"{num} x {i} = {num * i}")
Escribe un programa que calcule el factorial de un número dado por el usuario.
import math
num = int(input("Introduce un número para calcular su factorial: "))
factorial = math.factorial(num)
print(f"El factorial de {num} es {factorial}")
Crea un programa que verifique si una palabra ingresada por el usuario es un palíndromo (se lee igual de izquierda a derecha y de derecha a izquierda).
palabra = input("Introduce una palabra: ").replace(" ", "").lower()
if palabra == palabra[::-1]:
print(f"{palabra} es un palíndromo")
else:
print(f"{palabra} no es un palíndromo")
Escribe un programa que determine si un número ingresado por el usuario es primo.
num = int(input("Introduce un número: "))
if num > 1:
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
print(f"{num} no es primo")
break
else:
print(f"{num} es primo")
else:
print(f"{num} no es primo")
Crea un programa que cuente el número de vocales en una frase ingresada por el usuario.
frase = input("Introduce una frase: ").lower()
vocales = "aeiou"
contador = sum(1 for char in frase if char in vocales)
print(f"El número de vocales en la frase es: {contador}")
Escribe un programa que ordene una lista de números en orden ascendente.
numeros = [int(x) for x in input("Introduce números separados por espacios: ").split()]
numeros.sort()
print("Lista ordenada:", numeros)
Crea una calculadora básica que permita al usuario realizar operaciones de suma, resta, multiplicación y división.
def calculadora():
print("Operaciones disponibles: suma, resta, multiplicación, división")
operacion = input("Introduce la operación deseada: ").lower()
num1 = float(input("Introduce el primer número: "))
num2 = float(input("Introduce el segundo número: "))
if operacion == "suma":
resultado = num1 + num2
elif operacion == "resta":
resultado = num1 - num2
elif operacion == "multiplicación":
resultado = num1 * num2
elif operacion == "división":
if num2 == 0:
print("Error: División por cero")
return
resultado = num1 / num2
else:
print("Operación no válida")
return
print(f"El resultado de la {operacion} es: {resultado}")
calculadora()
11. Calculadora de IMC (Índice de Masa Corporal)
Este programa permite calcular el IMC de una persona y clasificarlo en diferentes categorías (bajo peso, peso normal, sobrepeso, obesidad).
def calcular_imc(peso, altura):
imc = peso / (altura ** 2)
return imc
def clasificar_imc(imc):
if imc < 18.5:
return "Bajo peso"
elif 18.5 <= imc < 24.9:
return "Peso normal"
elif 25 <= imc < 29.9:
return "Sobrepeso"
else:
return "Obesidad"
peso = float(input("Introduce tu peso en kg: "))
altura = float(input("Introduce tu altura en metros: "))
imc = calcular_imc(peso, altura)
clasificacion = clasificar_imc(imc)
print(f"Tu IMC es {imc:.2f} y estás en la categoría: {clasificacion}")
12. Gestor de Tareas con Interfaz de Línea de Comandos
Este programa permite agregar, listar y eliminar tareas en una lista simple utilizando un archivo para persistir los datos.
import os
def cargar_tareas():
if os.path.exists("tareas.txt"):
with open("tareas.txt", "r") as file:
return [line.strip() for line in file.readlines()]
return []
def guardar_tareas(tareas):
with open("tareas.txt", "w") as file:
file.write("\n".join(tareas))
def agregar_tarea(tarea):
tareas = cargar_tareas()
tareas.append(tarea)
guardar_tareas(tareas)
def listar_tareas():
tareas = cargar_tareas()
if not tareas:
print("No hay tareas.")
for idx, tarea in enumerate(tareas, start=1):
print(f"{idx}. {tarea}")
def eliminar_tarea(numero):
tareas = cargar_tareas()
if 1 <= numero <= len(tareas):
tareas.pop(numero - 1)
guardar_tareas(tareas)
else:
print("Número de tarea inválido.")
print("1. Agregar tarea")
print("2. Listar tareas")
print("3. Eliminar tarea")
opcion = int(input("Selecciona una opción: "))
if opcion == 1:
tarea = input("Introduce la tarea: ")
agregar_tarea(tarea)
elif opcion == 2:
listar_tareas()
elif opcion == 3:
listar_tareas()
num = int(input("Número de la tarea a eliminar: "))
eliminar_tarea(num)
else:
print("Opción no válida")
13. Juego de Adivina el Número
Un simple juego donde el usuario tiene que adivinar un número generado aleatoriamente por el programa.
import random
def jugar():
numero = random.randint(1, 100)
intentos = 0
adivinado = False
print("Estoy pensando en un número entre 1 y 100.")
while not adivinado:
try:
adivinanza = int(input("Introduce tu adivinanza: "))
intentos += 1
if adivinanza < numero:
print("Demasiado bajo!")
elif adivinanza > numero:
print("Demasiado alto!")
else:
adivinado = True
print(f"¡Correcto! El número era {numero}. Lo adivinaste en {intentos} intentos.")
except ValueError:
print("Por favor, introduce un número válido.")
jugar()
Un programa para convertir entre diferentes monedas utilizando tasas de cambio fijas.
def convertir_moneda(monto, tasa):
return monto * tasa
def main():
tasas = {
"USD_EUR": 0.85,
"EUR_USD": 1.18,
"USD_GBP": 0.75,
"GBP_USD": 1.33
}
print("1. USD a EUR")
print("2. EUR a USD")
print("3. USD a GBP")
print("4. GBP a USD")
opcion = int(input("Selecciona una opción: "))
monto = float(input("Introduce el monto a convertir: "))
if opcion == 1:
tasa = tasas["USD_EUR"]
print(f"{monto} USD = {convertir_moneda(monto, tasa):.2f} EUR")
elif opcion == 2:
tasa = tasas["EUR_USD"]
print(f"{monto} EUR = {convertir_moneda(monto, tasa):.2f} USD")
elif opcion == 3:
tasa = tasas["USD_GBP"]
print(f"{monto} USD = {convertir_moneda(monto, tasa):.2f} GBP")
elif opcion == 4:
tasa = tasas["GBP_USD"]
print(f"{monto} GBP = {convertir_moneda(monto, tasa):.2f} USD")
else:
print("Opción no válida")
main()
Un programa que permite registrar y autenticar usuarios con contraseñas en un archivo.
import hashlib
def hash_password(password):
return hashlib.sha256(password.encode()).hexdigest()
def registrar_usuario(username, password):
with open("usuarios.txt", "a") as file:
file.write(f"{username}:{hash_password(password)}\n")
def autenticar_usuario(username, password):
hashed_password = hash_password(password)
with open("usuarios.txt", "r") as file:
for line in file:
stored_user, stored_password = line.strip().split(":")
if stored_user == username and stored_password == hashed_password:
return True
return False
def main():
print("1. Registrarse")
print("2. Iniciar sesión")
opcion = int(input("Selecciona una opción: "))
username = input("Introduce tu nombre de usuario: ")
password = input("Introduce tu contraseña: ")
if opcion == 1:
registrar_usuario(username, password)
print("Usuario registrado exitosamente.")
elif opcion == 2:
if autenticar_usuario(username, password):
print("Inicio de sesión exitoso.")
else:
print("Nombre de usuario o contraseña incorrectos.")
else:
print("Opción no válida")
main()
16. Imprimir los números del 1 al 5:
for i in range(1, 6):
print(i)
Aquí range(1, 6) genera una secuencia de números del 1 al 5, y el bucle for itera sobre cada número, imprimiéndolo.
17. Imprimir los elementos de una lista:
frutas = ['manzana', 'banana', 'cereza']
for fruta in frutas:
print(fruta)
Este código recorre la lista frutas e imprime cada elemento.
18. Calcular la suma de los números del 1 al 4:
suma = 0
for i in range(1, 5):
suma += i
print(suma)
Aquí, range(1, 5) genera los números del 1 al 4, y cada uno se suma a la variable suma.
19. Crear una lista de cuadrados de números del 1 al 3:
cuadrados = []
for i in range(1, 4):
cuadrados.append(i**2)
print(cuadrados)
Este código calcula el cuadrado de cada número en el rango del 1 al 3 y los añade a la lista cuadrados.
20. Iterar sobre una cadena y contar las vocales:
cadena = "hola mundo"
conteo_vocales = 0
for letra in cadena:
if letra in 'aeiou':
conteo_vocales += 1
print(conteo_vocales)
Este código recorre cada carácter en la cadena cadena y cuenta cuántas vocales hay.