En Python, los bucles for junto con la función range() nos permiten recorrer secuencias de números fácilmente.
Hoy veremos un ejercicio clásico: imprimir los números impares entre 0 y 10.
Explicación línea por línea
range(0, 11) genera los números del 0 al 10 (recuerda que el stop=11 no se incluye).
El bucle for recorrerá esa secuencia. En cada iteración, i toma un valor: 0, 1, 2, …, 10.
% es el operador módulo → calcula el resto de la división.
i % 2 devuelve 0 si el número es par y 1 si es impar.
!= 0 significa “distinto de cero”, es decir, el número es impar.
Si la condición se cumple, el programa imprime el valor de i.
Salida en consola
Aplicación práctica en Revit Open Source Converter
En proyectos BIM es común filtrar elementos según una condición. Este mismo patrón de usar if dentro de un for se aplica, por ejemplo, a:
Ejemplo: Exportar solo muros con ID impar
Explicación:
lo que hacemos es:
Llamar a una función llamada obtener_muros_revit().
Esa función es un placeholder (un nombre inventado en el ejemplo) que representaría la parte del Open Source Converter encargada de extraer del modelo de Revit todos los elementos de tipo muro.
En la práctica, esa función devolvería una lista de muros (cada muro sería un diccionario u objeto con información: id, tipo, material, etc.).
Guardar ese resultado en la variable muros.
Así podemos usar muros como nuestra colección de elementos a recorrer en el bucle for.
Ejemplo:
Ventaja: tenerlo en una variable (muros) nos permite usarla varias veces sin necesidad de volver a llamar a la función.
En resumen:
Ponemos obtener_muros_revit() en la variable muros porque así simulamos que traemos desde Revit todos los muros a una lista en Python, y luego podemos filtrarlos, recorrerlos o exportarlos con total flexibilidad.
Recorremos todos los muros.
Usamos % 2 != 0 para quedarnos solo con los de ID impar.
Exportamos únicamente esos muros.
Este tipo de filtro puede servir en pruebas, cuando solo queremos exportar la mitad de los elementos para validar el flujo sin procesar el modelo completo.
Vamos a realizar un mini ejemplo completo y ejecutable para que quede claro cómo funciona todo este flujo:
Ejemplo completo: Filtrar muros con ID impar
Explicación línea por línea
Definimos una función que simula traer los muros del modelo Revit.
Devolvemos una lista de diccionarios donde cada diccionario representa un muro con sus propiedades (id, tipo, material).
En la vida real, en lugar de estar escritos a mano, estos datos vendrían del modelo BIM.
Otra función que simula la exportación de un muro.
Recibe un muro y muestra un mensaje en consola con su id y material.
En un Open Source Converter, aquí estaría la lógica real de exportación (por ejemplo, a JSON, IFC, etc.).
Llamamos a la función y guardamos los muros en la variable muros.
Recorremos todos los muros con un bucle for.
Filtramos los muros cuyo ID sea impar (% 2 != 0).
Exportamos solo los muros que cumplen la condición.
Salida en consola
Bonus 1
Puedes invertir la condición para mostrar/exportar solo pares:
En el flujo Revit, lo mismo se aplicaría a:
- Exportar solo elementos en niveles pares.
- Procesar solo puertas con identificador par.
Bonus 2: Compilación vs Interpretación
Cuando escribimos código en un lenguaje de alto nivel (como Python, C++ o Java), el ordenador no lo entiende directamente. Las máquinas solo entienden código binario (0 y 1), así que necesitamos una forma de traducir nuestro programa.
Esa traducción puede hacerse de dos maneras: compilación o interpretación.
Compilación
- El código fuente se traduce una sola vez a código máquina.
- El resultado es un archivo ejecutable (por ejemplo, programa.exe).
- Puedes compartir ese archivo y cualquier persona podrá ejecutarlo sin necesidad de tener el compilador.
Ejemplo: C, C++, Rust.
Ventaja: la ejecución suele ser más rápida.
Desventaja: cada vez que cambias el código, necesitas volver a compilar.
Interpretación
El código fuente se traduce cada vez que se ejecuta.
No se genera un archivo ejecutable, sino que necesitas un intérprete que lea el código línea por línea.
Ejemplo: Python, JavaScript.
Ventaja: más flexibilidad, pruebas rápidas sin necesidad de compilar.
Desventaja: la ejecución suele ser más lenta porque la traducción ocurre en tiempo real.
Ejemplo práctico en Python
Python es un lenguaje interpretado.
Cada vez que ejecutamos un script .py, el intérprete traduce el código a instrucciones que la máquina puede entender.
Cada ejecución requiere que el intérprete de Python esté instalado en el sistema.
Si fuera un lenguaje compilado, tendríamos un archivo independiente (.exe) que podríamos ejecutar sin Python.
Conclusión:
Si necesitas velocidad y distribución sencilla, los lenguajes compilados son ideales.
Si buscas flexibilidad y rapidez para prototipar, los lenguajes interpretados (como Python) son más cómodos.
Contenido Web de Yolanda Muriel está sujeto bajo Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported.

















