
JavaScript y Python son dos lenguajes de programación ampliamente utilizados que difieren en la sintaxis y las características, incluidas las estructuras de control.
En este artículo, estudiaremos las diferencias en las estructuras de control entre JavaScript y Python, examinando cómo se implementan cada una de ellas en ambos lenguajes y destacando las peculiaridades y consideraciones importantes que los desarrolladores deben tener en cuenta al trabajar con cada uno de ellos. Si quieres profundizar en JavaScript, te recomendamos seguir el tutorial de JavaScript en nuestra plataforma de aprendizaje.
JavaScript y Python: Diferencias en estructuras de control
Una de las áreas en las que estas diferencias son más evidentes es en las estructuras de control, que son fundamentales para dirigir el flujo de ejecución de un programa. Tanto JavaScript como Python ofrecen una variedad de estructuras de control, como if-else, bucles for y while, y manejo de excepciones, pero la sintaxis y el funcionamiento pueden variar entre ambos lenguajes. Veamos una comparación entre las estructuras de control en ambos lenguajes.
1. If-Else Statements
Estructura
JavaScript:
if (condition) {
// Code block to execute if condition is true
} else {
// Code block to execute if condition is false
}
Python:
if condition:
# Code block to execute if condition is true
else:
# Code block to execute if condition is false
Ejemplos
En los siguientes ejemplos, se verifica si la variable edad es mayor o igual a 18. Si es así, se imprime «Eres mayor de edad». De lo contrario, se imprime «Eres menor de edad».
JavaScript:
let edad = 18;
if (edad >= 18) {
console.log("Eres mayor de edad.");
} else {
console.log("Eres menor de edad.");
}
Python:
edad = 18
if edad >= 18:
print("Eres mayor de edad.")
else:
print("Eres menor de edad.")
2. Bucles For
Estructura
JavaScript:
for (let i = 0; i < array.length; i++) {
// Code block to execute for each element in array
}
Python:
for item in array:
# Code block to execute for each element in array
Ejemplos
En los siguientes ejemplos, se recorre un array de números e imprime cada elemento junto con su índice en el caso de JavaScript, y utilizando la función enumerate para obtener tanto el índice como el valor en el caso de Python.
JavaScript:
let numeros = [1, 2, 3, 4, 5];
for (let i = 0; i < numeros.length; i++) {
console.log("Elemento " + (i + 1) + ": " + numeros[i]);
}
Python:
numeros = [1, 2, 3, 4, 5]
for i, numero in enumerate(numeros, start=1):
print("Elemento", i, ":", numero)
3. Bucles While
Estructura While
JavaScript:
while (condition) {
// Code block to execute as long as condition is true
}
Python:
while condition:
# Code block to execute as long as condition is true
Ejemplos
Los siguientes ejemplos ejecutan un bucle while que continúa mientras la variable count sea menor que 5. En cada iteración del bucle, se imprime el valor de count y luego se incrementa en 1. El bucle se detiene cuando count alcanza o supera 5.
JavaScript:
let count = 0;
while (count < 5) {
console.log("El contador es:", count);
count++;
}
Python:
count = 0
while count < 5:
print("El contador es:", count)
count += 1
Estructura Do while
JavaScript:
do {
// Código a ejecutar al menos una vez
} while (condition);
Python:
En Python no hay una estructura de control do-while como en otros lenguajes de programación.
4. Switch-Case (Solo en JavaScript)
JavaScript:
switch (expression) {
case value1:
// Code block to execute if expression equals value1
break;
case value2:
// Code block to execute if expression equals value2
break;
default:
// Code block to execute if expression doesn't match any case
}
Python:
Python no tiene una construcción de switch-case incorporada, pero se puede emular con diccionarios o estructuras if-elif-else.
Ejemplo
JavaScript:
Este código establece un valor para dayNumber y luego utiliza un switch para determinar el nombre del día correspondiente. Dependiendo del valor de dayNumber, se asigna el nombre del día correspondiente a dayName. Si dayNumber no coincide con ningún caso, se asigna el valor «Día inválido» a dayName. Finalmente, se imprime el resultado en la consola.
let dayNumber = 3;
let dayName;
switch (dayNumber) {
case 1:
dayName = "Lunes";
break;
case 2:
dayName = "Martes";
break;
case 3:
dayName = "Miércoles";
break;
case 4:
dayName = "Jueves";
break;
case 5:
dayName = "Viernes";
break;
case 6:
dayName = "Sábado";
break;
case 7:
dayName = "Domingo";
break;
default:
dayName = "Día inválido";
}
console.log("El día correspondiente al número", dayNumber, "es:", dayName);
Python (diccionarios):
Como python no tiene una construcción de switch-case incorporada vamos a emular lo anterior con un diccionario. En este ejemplo, day_number contiene el número de día que queremos convertir en su nombre correspondiente. Utilizamos un diccionario llamado day_names donde las claves son los números de día y los valores son los nombres correspondientes. Luego, usamos el método get() para obtener el nombre del día asociado al número dado. Si el número no está en el diccionario, se asigna el valor «Día inválido» por defecto.
day_number = 3
day_names = {
1: "Lunes",
2: "Martes",
3: "Miércoles",
4: "Jueves",
5: "Viernes",
6: "Sábado",
7: "Domingo"
}
day_name = day_names.get(day_number, "Día inválido")
print("El día correspondiente al número", day_number, "es:", day_name)
JavaScript no cuenta con diccionarios: en JavaScript no hay una estructura de datos específica llamada «diccionario» como en otros lenguajes de programación como Python. Sin embargo, JavaScript utiliza objetos para estructurar datos de manera similar a un diccionario.
Python (if-else):
El ejemplo anterior se puede realizar utilizando una estructura de control if-else en Python. En el siguiente ejemplo, cada if verifica si day_number es igual a un valor específico y asigna el nombre del día correspondiente a day_name. Si day_number no coincide con ninguno de los valores esperados, se asigna el valor «Día inválido». Finalmente, imprimimos el resultado en la consola.
day_number = 3
if day_number == 1:
day_name = "Lunes"
elif day_number == 2:
day_name = "Martes"
elif day_number == 3:
day_name = "Miércoles"
elif day_number == 4:
day_name = "Jueves"
elif day_number == 5:
day_name = "Viernes"
elif day_number == 6:
day_name = "Sábado"
elif day_number == 7:
day_name = "Domingo"
else:
day_name = "Día inválido"
print("El día correspondiente al número", day_number, "es:", day_name)
5. Try-Except
Estructura try-except
Python:
try:
# Code block that may raise an exception
except SomeException:
# Code block to execute if SomeException is raised
else:
# Code block to execute if no exception is raised
finally:
# Optional code block that always executes, regardless of exceptions
Ejemplo
En este ejemplo, intentamos dividir 10 por 2. Si ocurre una excepción ZeroDivisionError (es decir, si intentamos dividir por cero), el código en el bloque except se ejecutará. Si no hay excepciones, el código en el bloque else se ejecutará. Finalmente, el bloque finally se ejecutará siempre, independientemente de si se produjo una excepción o no.
try:
# Intentamos dividir dos números
result = 10 / 2
except ZeroDivisionError:
# Si ocurre una división por cero, manejamos la excepción aquí
print("Error: No se puede dividir por cero.")
else:
# Si no hay excepciones, ejecutamos este bloque
print("La división fue exitosa. El resultado es:", result)
finally:
# Este bloque siempre se ejecutará, independientemente de si ocurre una excepción o no
print("Ejecución finalizada.")
JavaScript no tiene una estructura try-except incorporada, pero maneja excepciones con try-catch-finally.
Estrucra try-catch-finally:
JavaScript:
try {
// Try block: code that may throw an exception
// If an exception occurs here, control passes to the catch block
} catch (error) {
// Catch block: handling the exception
} finally {
// Finally block (optional): code that is always executed
// Regardless of whether an exception occurred or not
}
Ejemplo
En este ejemplo, intentamos dividir 10 por 2. Si la operación de división tiene éxito, imprimimos el resultado. Si ocurre un error debido a una división por cero, manejamos la excepción e imprimimos un mensaje de error. Finalmente, el bloque finally se ejecuta siempre, imprimiendo un mensaje que indica que la ejecución ha finalizado.
try {
// Intentamos dividir dos números
let result = 10 / 2;
console.log("La división fue exitosa. El resultado es:", result);
} catch (error) {
// Si ocurre un error, lo manejamos aquí
console.log("Error: No se puede dividir por cero.");
} finally {
// Este bloque siempre se ejecutará, independientemente de si ocurre un error o no
console.log("Ejecución finalizada.");
}
6. Comparativa de las estructuras de control en JavaScript y Python
| Concepto | Estructura |
|---|---|
| If-Else Statements | JavaScript: if (condition) { ... } else { ... } Python: if condition: ... else: ... |
| Bucles For | JavaScript: for (let i = 0; i < array.length; i++) { ... } Python: for item in array: ... |
| Bucles While | JavaScript: while (condition) { ... } Python: while condition: ... |
| Switch-Case | Solo en JavaScript: switch (expression) { case value1: ... break; case value2: ... break; default: ... } |
| Try-Except | JavaScript: try { ... } catch (error) { ... } finally { ... } Python: try: ... except SomeException: ... else: ... finally: ... |