Lo que ya sabes sirve
Una crítica común al pseudocódigo es que «no sirve fuera de la escuela». No es así: variables, decisiones, ciclos y arreglos funcionan igual en todos los lenguajes. Lo que cambia es cómo se escriben. Python es una buena primera opción porque su forma de escribir es de las más parecidas al pseudocódigo.
Compara el mismo programa en los dos:
Algoritmo aprobado
Leer calificacion
Si calificacion >= 6 Entonces
Escribir "Aprobado"
SiNo
Escribir "Reprobado"
FinSi
FinAlgoritmocalificacion = float(input())
if calificacion >= 6:
print("Aprobado")
else:
print("Reprobado")
Cambian las palabras (Si por if, Escribir por print), pero el algoritmo es el mismo.
Tabla de equivalencias
| Pseudocódigo | Python |
|---|---|
Algoritmo nombre … FinAlgoritmo | No hace falta: el programa empieza en la primera línea |
x <- 5 | x = 5 |
Leer n (número) | n = int(input()) o n = float(input()) |
Leer nombre (texto) | nombre = input() |
Escribir "Hola ", nombre | print("Hola", nombre) |
Si … Entonces … SiNo … FinSi | if …: / else: |
Segun x Hacer | if / elif / else |
Mientras … Hacer … FinMientras | while …: |
Para i <- 1 Hasta 10 Hacer | for i in range(1, 11): |
Repetir … Hasta Que … | while True: … if …: break |
= (comparar) | == |
<> | != |
Y, O, NO | and, or, not |
MOD | % |
^ | ** |
Verdadero, Falso | True, False |
Dimension a[5] | a = [0] * 5 |
// comentario | # comentario |
La regla más importante: la sangría
En pseudocódigo, la sangría ayuda a leer, pero lo que cierra un bloque es FinSi o FinMientras. En Python no hay palabras de cierre: la sangría es lo que define qué está dentro de qué. Después de los dos puntos (:) de un if, while o for, las líneas de adentro van con 4 espacios. Cuando regresas a la orilla, el bloque terminó.
Si en pseudocódigo ya acomodas bien la sangría, esta regla no te va a costar trabajo.
Leer datos: input() siempre da texto
Esta es la trampa más común. En pseudocódigo, Leer n guarda un número si escribes un número. En Python, input() siempre devuelve texto. Si lo usas para sumar, junta los textos en vez de sumar:
a = input()
b = input()
print(a + b)
Hay que convertirlo: int() para enteros y float() para números con decimales.
a = int(input())
b = int(input())
print(a + b)
Otro detalle: en Python, una división con / siempre da un número con decimales. 10 / 2 da 5.0, no 5. Si necesitas el entero, usa // o int().
Ciclos: el range que no incluye el final
El Para se traduce con for y range(). El detalle es que range(1, 11) va del 1 al 10: el número final no se incluye. Por eso Para i <- 1 Hasta 10 se escribe con 11.
Algoritmo tabla_del_3
Para i <- 1 Hasta 5 Hacer
Escribir "3 x ", i, " = ", 3 * i
FinPara
FinAlgoritmofor i in range(1, 6):
print("3 x", i, "=", 3 * i)
Mientras se traduce casi palabra por palabra con while. Python no tiene Repetir … Hasta Que, así que se usa un ciclo que se repite siempre y se rompe con break cuando se cumple la condición:
while True:
clave = input("Contraseña: ")
if clave == "jaguar":
break
print("Bienvenido")
Segun: if y elif
El Segun se traduce con una cadena de if, elif (abreviatura de «else if») y else para el De Otro Modo:
dia = int(input())
if dia == 1:
print("Lunes")
elif dia == 2:
print("Martes")
elif dia == 6 or dia == 7:
print("Fin de semana")
else:
print("Otro día")
Las versiones recientes de Python también tienen match, que se parece más al Segun, pero if/elif funciona en todas y es lo más común.
Arreglos y listas: empiezan en 0
Los arreglos de pseudocódigo son listas en Python. La diferencia clave: en PSeInt la primera posición es 1, y en Python es 0. Una lista de 5 elementos va de la posición 0 a la 4.
Algoritmo suma_arreglo
Dimension v[3]
v[1] <- 10
v[2] <- 20
v[3] <- 30
suma <- 0
Para i <- 1 Hasta 3 Hacer
suma <- suma + v[i]
FinPara
Escribir "Suma: ", suma
Escribir "El primero: ", v[1]
FinAlgoritmov = [10, 20, 30]
suma = 0
for i in range(0, 3):
suma = suma + v[i]
print("Suma:", suma)
print("El primero:", v[0])
En Python también puedes recorrer la lista sin posiciones, como el Para Cada: for x in v:. Y para sumarla hay una función lista: sum(v).
Un ejemplo completo
Un programa que lee calificaciones hasta que escribas -1 y muestra el promedio. Primero en pseudocódigo:
Algoritmo promedio_hasta_menos_uno
suma <- 0
cuantos <- 0
Leer c
Mientras c <> -1 Hacer
suma <- suma + c
cuantos <- cuantos + 1
Leer c
FinMientras
Si cuantos > 0 Entonces
Escribir "Promedio: ", suma / cuantos
SiNo
Escribir "No hubo calificaciones"
FinSi
FinAlgoritmo
Y en Python, línea por línea:
suma = 0
cuantos = 0
c = float(input())
while c != -1:
suma = suma + c
cuantos = cuantos + 1
c = float(input())
if cuantos > 0:
print("Promedio:", suma / cuantos)
else:
print("No hubo calificaciones")
La única diferencia en el resultado es el 9.0: en Python, dividir siempre da decimales.
Ver tu programa en Python con Jaguar
Jaguar tiene una vista de Python que muestra tu pseudocódigo traducido mientras lo escribes. Viene apagada para que al principio te concentres en la lógica: se activa en los ajustes de la app. Al prenderla, ves lado a lado las dos versiones del mismo programa, y la traducción elige cosas como int(input()) o float(input()) según cómo usas cada variable.
Úsala como apoyo para leer, no para copiar. El ejercicio que más enseña es escribir tú la versión en Python y después compararla con la de Jaguar.
Errores comunes al pasar a Python
- No convertir el
input()a número:"2" + "3"da"23". - Usar
=para comparar. En Python se compara con==; un solo=asigna. - Olvidar los dos puntos al final de
if,else,whileyfor. - Sangría desigual. Mezclar 2 y 4 espacios, o tabuladores y espacios, da error.
- El final del
range.range(1, 10)llega a 9, no a 10. - Posiciones de listas desde 1. En Python,
v[1]es el segundo elemento.
Preguntas frecuentes
¿Es difícil pasar de pseudocódigo a Python?
No mucho, si ya entiendes la lógica. La mayoría de las instrucciones tienen un equivalente directo. Lo nuevo es que la sangría es obligatoria, que input() siempre da texto y que las listas empiezan en 0.
¿Cómo se escribe Leer en Python?
Con input(). Como siempre devuelve texto, para números se convierte: int(input()) para enteros y float(input()) para números con decimales.
¿Cómo se escribe Para en Python?
Con for y range. Para i <- 1 Hasta 10 se escribe for i in range(1, 11), porque range no incluye el número final.
¿Python tiene Repetir … Hasta Que?
No. Se usa while True: con un if que hace break cuando se cumple la condición. Así los pasos se hacen al menos una vez, igual que en Repetir.