Listas en Python: 20 ejercicios resueltos paso a paso

Aprendé listas en Python con 20 ejercicios resueltos: índices, append, insert, remove, pop, recorridos, búsquedas, ordenamiento y listas anidadas.

Las listas son una de las estructuras más utilizadas en Python. Nos permiten guardar varios valores dentro de una misma variable y trabajar con ellos de forma ordenada.

En esta guía vamos a aprender cómo crear listas, acceder a sus elementos, modificarlas, recorrerlas y resolver 20 ejercicios prácticos para afianzar los conceptos.

Idea clave: una lista permite almacenar varios valores dentro de una misma estructura. En Python, los índices comienzan en 0.

¿Qué es una lista en Python?

Una lista es una colección ordenada de elementos.

numeros = [10, 20, 30, 40]

En este caso la lista tiene cuatro elementos.

También puede contener texto:

nombres = ["Ana", "Luis", "Pedro"]

O incluso distintos tipos de datos:

datos = ["Ana", 25, 1.70, True]

Índices: las posiciones comienzan en 0

Este punto es fundamental.

numeros = [10, 20, 30, 40]

print(numeros[0])
print(numeros[1])

El resultado será:

10
20

La primera posición es 0, la segunda es 1 y así sucesivamente.

Modificar un elemento

numeros = [10, 20, 30]

numeros[1] = 99

print(numeros)

Resultado:

[10, 99, 30]

Conocer la cantidad de elementos con len()

numeros = [10, 20, 30, 40]

print(len(numeros))

El resultado será 4.

Agregar elementos con append()

numeros = [10, 20]

numeros.append(30)

print(numeros)

Insertar elementos con insert()

numeros = [10, 30]

numeros.insert(1, 20)

print(numeros)

Eliminar elementos

Podemos eliminar por valor con remove():

numeros = [10, 20, 30]

numeros.remove(20)

print(numeros)

O eliminar por posición con pop():

numeros = [10, 20, 30]

eliminado = numeros.pop(1)

print(numeros)
print(eliminado)

Comprobar si un elemento existe

numeros = [10, 20, 30]

if 20 in numeros:
    print("El valor existe")

También podemos usar not in:

if 50 not in numeros:
    print("El valor no existe")

Recorrer una lista con for

numeros = [10, 20, 30]

for numero in numeros:
    print(numero)

Recorrer una lista utilizando índices

numeros = [10, 20, 30]

for i in range(len(numeros)):
    print(i, numeros[i])

Este enfoque resulta útil cuando necesitamos conocer tanto el valor como su posición.

Listas vacías

numeros = []

numeros.append(10)
numeros.append(20)

print(numeros)

Cuidado al asignar una lista a otra variable

Este código puede sorprender al principio:

lista1 = [10, 20, 30]
lista2 = lista1

lista2[0] = 99

print(lista1)
print(lista2)

Ambas variables hacen referencia a la misma lista, por lo que la modificación aparece en las dos.

Si queremos una copia independiente podemos usar:

lista2 = lista1.copy()

Listas anidadas

Una lista puede contener otras listas.

matriz = [
    [1, 2, 3],
    [4, 5, 6]
]

print(matriz[0][1])

El resultado será 2.

Índice de ejercicios

  1. Mostrar todos los elementos
  2. Sumar los valores
  3. Calcular el promedio
  4. Encontrar el mayor y el menor
  5. Contar números pares
  6. Buscar un elemento
  7. Contar repeticiones
  8. Agregar elementos
  9. Eliminar un elemento
  10. Invertir una lista
  11. Eliminar duplicados
  12. Separar positivos y negativos
  13. Crear una lista con datos ingresados
  14. Comparar dos listas
  15. Encontrar el segundo mayor
  16. Combinar dos listas
  17. Ordenar una lista
  18. Buscar un nombre
  19. Recorrer una matriz
  20. Sistema de notas

1. Mostrar todos los elementos

numeros = [5, 10, 15, 20]

for numero in numeros:
    print(numero)

2. Sumar los valores

numeros = [5, 10, 15, 20]
suma = 0

for numero in numeros:
    suma += numero

print("Suma:", suma)

3. Calcular el promedio

notas = [7, 8, 6, 9, 10]
suma = 0

for nota in notas:
    suma += nota

promedio = suma / len(notas)

print("Promedio:", promedio)

4. Encontrar el mayor y el menor

numeros = [8, 3, 15, 2, 11]

mayor = numeros[0]
menor = numeros[0]

for numero in numeros:
    if numero > mayor:
        mayor = numero

    if numero < menor:
        menor = numero

print("Mayor:", mayor)
print("Menor:", menor)

5. Contar números pares

numeros = [1, 2, 4, 7, 10, 13]
cantidad = 0

for numero in numeros:
    if numero % 2 == 0:
        cantidad += 1

print("Cantidad de pares:", cantidad)

6. Buscar un elemento

numeros = [10, 20, 30, 40]
buscado = int(input("Ingrese el numero a buscar: "))

if buscado in numeros:
    print("El valor existe")
else:
    print("El valor no existe")

7. Contar repeticiones

numeros = [1, 2, 2, 3, 2, 4]
buscado = 2
cantidad = 0

for numero in numeros:
    if numero == buscado:
        cantidad += 1

print("Cantidad de apariciones:", cantidad)

8. Agregar elementos

numeros = []

for i in range(5):
    numero = int(input("Ingrese un numero: "))
    numeros.append(numero)

print(numeros)

9. Eliminar un elemento

nombres = ["Ana", "Luis", "Pedro", "Maria"]
nombre = input("Ingrese el nombre a eliminar: ")

if nombre in nombres:
    nombres.remove(nombre)
    print("Lista actualizada:", nombres)
else:
    print("El nombre no existe")

10. Invertir una lista

numeros = [1, 2, 3, 4, 5]

invertida = numeros[::-1]

print(invertida)

11. Eliminar duplicados

numeros = [1, 2, 2, 3, 4, 4, 5]
sin_duplicados = []

for numero in numeros:
    if numero not in sin_duplicados:
        sin_duplicados.append(numero)

print(sin_duplicados)

12. Separar positivos y negativos

numeros = [5, -3, 8, -1, 0, 4, -7]

positivos = []
negativos = []

for numero in numeros:
    if numero >= 0:
        positivos.append(numero)
    else:
        negativos.append(numero)

print("Positivos:", positivos)
print("Negativos:", negativos)

13. Crear una lista con datos ingresados

cantidad = int(input("Cuantos numeros desea ingresar: "))
numeros = []

for i in range(cantidad):
    numero = float(input("Ingrese un numero: "))
    numeros.append(numero)

print("Lista:", numeros)

14. Comparar dos listas

lista1 = [1, 2, 3]
lista2 = [1, 2, 3]

if lista1 == lista2:
    print("Las listas son iguales")
else:
    print("Las listas son diferentes")

15. Encontrar el segundo mayor

numeros = [8, 3, 15, 10, 15, 4]

unicos = []

for numero in numeros:
    if numero not in unicos:
        unicos.append(numero)

unicos.sort()

if len(unicos) >= 2:
    print("Segundo mayor:", unicos[-2])
else:
    print("No hay suficientes valores distintos")

16. Combinar dos listas

lista1 = [1, 2, 3]
lista2 = [4, 5, 6]

combinada = lista1 + lista2

print(combinada)

17. Ordenar una lista

numeros = [8, 3, 10, 1, 6]

ordenados = sorted(numeros)

print("Original:", numeros)
print("Ordenada:", ordenados)

sorted() devuelve una nueva lista ordenada sin modificar la original.

18. Buscar un nombre

nombres = ["Ana", "Luis", "Pedro", "Maria"]

buscado = input("Ingrese un nombre: ")

encontrado = False

for nombre in nombres:
    if nombre.lower() == buscado.lower():
        encontrado = True

if encontrado:
    print("Nombre encontrado")
else:
    print("Nombre no encontrado")

19. Recorrer una matriz

matriz = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for fila in matriz:
    for valor in fila:
        print(valor, end=" ")

    print()

20. Sistema de notas

Terminamos con un pequeño programa que permite cargar notas y calcular estadísticas básicas.

notas = []

cantidad = int(input("Cuantas notas desea ingresar: "))

for i in range(cantidad):
    nota = float(input("Ingrese una nota: "))
    notas.append(nota)

if len(notas) > 0:
    suma = 0

    for nota in notas:
        suma += nota

    promedio = suma / len(notas)

    mayor = notas[0]
    menor = notas[0]

    for nota in notas:
        if nota > mayor:
            mayor = nota

        if nota < menor:
            menor = nota

    print("Notas:", notas)
    print("Promedio:", promedio)
    print("Mayor:", mayor)
    print("Menor:", menor)
else:
    print("No se ingresaron notas")

Métodos útiles de las listas

Método Uso
append() Agregar al final
insert() Insertar en una posición
remove() Eliminar por valor
pop() Eliminar por posición
sort() Ordenar la lista original
reverse() Invertir la lista original
count() Contar apariciones
index() Obtener la posición de un valor
copy() Crear una copia superficial
clear() Vaciar la lista

Errores comunes al trabajar con listas

  • Usar una posición inexistente: intentar acceder a un índice fuera del rango genera IndexError.
  • Olvidar que los índices empiezan en 0.
  • Eliminar un valor que no existe: remove() genera error si el elemento no está presente.
  • Confundir una copia con otra referencia: lista2 = lista1 no crea una lista independiente.
  • Modificar una lista mientras la recorremos: puede producir resultados inesperados y conviene evitarlo al comenzar.

Cómo practicar listas

Una buena forma de avanzar es tomar cada ejercicio y modificarlo:

  • pedir los datos al usuario;
  • agregar validaciones;
  • buscar más de un valor;
  • crear nuevas listas a partir de condiciones;
  • combinar listas con condicionales y ciclos;
  • convertir partes repetidas del código en funciones.

Próximo paso: funciones en Python

Ahora que ya podemos trabajar con varios datos dentro de una misma estructura, el siguiente paso es aprender a organizar mejor nuestros programas mediante funciones. Esto nos permitirá reutilizar código, separar responsabilidades y construir programas cada vez más grandes.

Seguí aprendiendo Python

Si necesitás reforzar la lógica de recorrido, repasá condicionales y ciclos en Python.

El siguiente paso es aprender a organizar y reutilizar esa lógica:

Funciones en Python: parámetros, return y 20 ejercicios resueltos →

Ver la ruta completa de Python


¿Te sirvió esta guía? ☕

Si estos ejercicios te ayudaron a aprender Python, podés apoyar a Club Programador. Cada aporte ayuda a mantener el sitio online y a seguir publicando material gratuito.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

Tipos de datos en Python: int, float, str, bool y conversiones

Aprendé los tipos de datos básicos en Python: int, float, str, bool y None. Cómo usar type(), convertir valores y evitar errores comunes.

Cuando empezamos a programar en Python, uno de los conceptos más importantes es entender que cada valor tiene un tipo de dato. Ese tipo determina qué representa el valor, qué operaciones podemos hacer con él y cómo se comporta dentro del programa.

En esta guía vamos a repasar los principales tipos de datos básicos de Python: int, float, str, bool y None. También veremos cómo identificarlos, convertirlos y evitar errores frecuentes.

Idea clave: Python utiliza tipado dinámico. No necesitamos declarar explícitamente el tipo de una variable antes de usarla, pero eso no significa que los tipos no existan. Cada valor sigue teniendo un tipo concreto.

¿Qué es un tipo de dato?

Un tipo de dato indica qué clase de información estamos almacenando.

edad = 30
precio = 1250.50
nombre = "Ana"
activo = True

En este ejemplo:

  • edad contiene un número entero;
  • precio contiene un número decimal;
  • nombre contiene texto;
  • activo contiene un valor lógico.

¿Por qué existen distintos tipos de datos?

Clasificar los datos no es solamente una cuestión de organización. La computadora necesita saber cómo interpretar y manipular la información que guarda en memoria.

Por ejemplo, estos dos valores se parecen visualmente:

edad = 25
texto = "25"

Sin embargo, para Python no representan lo mismo. edad es un número entero y puede participar directamente en operaciones matemáticas. texto es una cadena formada por caracteres.

Los tipos de datos son importantes principalmente por tres motivos:

  • Representación en memoria: cada tipo necesita una forma determinada de representar la información internamente.
  • Operaciones permitidas: Python necesita saber qué operaciones tienen sentido para cada valor. Sumar números no significa lo mismo que concatenar texto.
  • Uso de recursos: diferentes tipos y valores pueden requerir distinta cantidad de memoria y diferente trabajo de procesamiento.

En lenguajes de más bajo nivel, como C, elegir un tipo suele estar directamente relacionado con reservar una cantidad determinada de memoria. En Python esta administración es más abstracta y automática: los valores son objetos y el intérprete se ocupa de gran parte de la gestión de memoria.

Por eso no conviene pensar que un int de Python siempre ocupa una cantidad fija de bytes. El consumo real depende de la implementación de Python, del valor almacenado y de otros detalles internos.

Lo importante al comenzar es comprender que el tipo le indica a Python qué clase de dato tiene delante, cómo debe interpretarlo y qué puede hacer con él.

1. int: números enteros

El tipo int representa números enteros, positivos o negativos, sin parte decimal.

edad = 25
cantidad = 10
temperatura = -3

Podemos realizar operaciones matemáticas normalmente:

a = 10
b = 3

print(a + b)
print(a - b)
print(a * b)
print(a // b)
print(a % b)

La división entera // descarta la parte decimal y % devuelve el resto.

2. float: números decimales

El tipo float representa números con parte decimal.

precio = 1499.99
altura = 1.78
promedio = 8.5

Podemos combinar enteros y decimales:

cantidad = 3
precio = 250.50

total = cantidad * precio

print(total)

El resultado será un float.

3. str: cadenas de texto

El tipo str se utiliza para almacenar texto.

nombre = "Club Programador"
lenguaje = 'Python'

Podemos concatenar cadenas:

nombre = "Ana"
apellido = "Perez"

nombre_completo = nombre + " " + apellido

print(nombre_completo)

También podemos repetir texto:

print("Hola " * 3)

Y acceder a caracteres mediante índices:

texto = "Python"

print(texto[0])
print(texto[1])

Recordá que en Python los índices comienzan en 0.

4. bool: verdadero o falso

El tipo bool solamente puede tener dos valores:

True
False

Es fundamental para condiciones y comparaciones:

edad = 20
es_mayor = edad >= 18

print(es_mayor)

El resultado será:

True

Los valores booleanos suelen aparecer directamente dentro de estructuras if y while.

5. None: ausencia de valor

None representa la ausencia de un valor.

resultado = None

print(resultado)

No significa cero ni una cadena vacía. Es un valor especial que indica que todavía no existe un dato útil o que una función no devolvió un resultado concreto.

Cómo saber el tipo de un dato con type()

Python incluye la función type().

edad = 30
precio = 10.5
nombre = "Python"
activo = True

print(type(edad))
print(type(precio))
print(type(nombre))
print(type(activo))

El resultado será similar a:

<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>

Python tiene tipado dinámico

En Python una variable puede apuntar a valores de distintos tipos durante la ejecución.

dato = 10
print(type(dato))

dato = "Hola"
print(type(dato))

Primero dato contiene un entero y luego una cadena.

Esto da flexibilidad, pero también exige prestar atención a los tipos que estamos utilizando.

input() siempre devuelve texto

Este punto es especialmente importante para quienes recién empiezan.

edad = input("Ingrese su edad: ")

print(type(edad))

Aunque el usuario escriba 25, la variable será de tipo str.

Para trabajar matemáticamente con ese valor debemos convertirlo:

edad = int(input("Ingrese su edad: "))

Conversión de tipos

Python permite convertir valores mediante funciones incorporadas.

Convertir a int

texto = "25"
numero = int(texto)

print(numero)
print(type(numero))

Convertir a float

texto = "10.75"
precio = float(texto)

print(precio)

Convertir a str

edad = 30
mensaje = "Tengo " + str(edad) + " anios"

print(mensaje)

Convertir a bool

print(bool(1))
print(bool(0))
print(bool("Hola"))
print(bool(""))

En estos ejemplos, 1 y una cadena con contenido se consideran verdaderos, mientras que 0 y una cadena vacía se consideran falsos.

Conversión implícita y explícita

Python puede realizar algunas conversiones automáticamente.

entero = 10
decimal = 2.5

resultado = entero + decimal

print(resultado)
print(type(resultado))

El entero se combina con el decimal y el resultado es un float.

En cambio, cuando escribimos nosotros la conversión usamos una conversión explícita:

edad = int("25")

Errores comunes al convertir datos

No todos los textos se pueden convertir a número.

numero = int("hola")

Este código genera un ValueError, porque la palabra "hola" no representa un número entero.

También debemos distinguir enteros de decimales:

numero = int("10.5")

Esto también genera error.

Una opción correcta sería:

numero = float("10.5")

Operaciones que dependen del tipo

El mismo operador puede comportarse de forma diferente dependiendo del tipo.

print(2 + 3)
print("2" + "3")

El resultado será:

5
23

En el primer caso Python suma números. En el segundo concatena cadenas.

Comparar distintos tipos

Antes de comparar valores conviene asegurarse de que representen el mismo tipo de información.

edad = input("Ingrese su edad: ")

if int(edad) >= 18:
    print("Mayor de edad")

Sin la conversión, estaríamos intentando comparar texto con un número.

Ejercicio 1: mostrar el tipo de diferentes variables

nombre = "Lucas"
edad = 22
altura = 1.80
estudia = True

print(type(nombre))
print(type(edad))
print(type(altura))
print(type(estudia))

Ejercicio 2: calcular la edad el próximo año

edad = int(input("Ingrese su edad: "))

edad_proxima = edad + 1

print("El proximo anio tendra", edad_proxima)

Ejercicio 3: calcular el total de una compra

precio = float(input("Ingrese el precio: "))
cantidad = int(input("Ingrese la cantidad: "))

total = precio * cantidad

print("Total:", total)

Ejercicio 4: convertir un número a texto

numero = 100

mensaje = "El valor es " + str(numero)

print(mensaje)

Ejercicio 5: comparar dos edades

edad1 = int(input("Ingrese la primera edad: "))
edad2 = int(input("Ingrese la segunda edad: "))

if edad1 > edad2:
    print("La primera persona es mayor")
elif edad2 > edad1:
    print("La segunda persona es mayor")
else:
    print("Tienen la misma edad")

Ejercicio 6: convertir temperatura

Convertimos grados Celsius a Fahrenheit.

celsius = float(input("Ingrese grados Celsius: "))

fahrenheit = celsius * 9 / 5 + 32

print("Fahrenheit:", fahrenheit)

Ejercicio 7: comprobar si una cadena está vacía

texto = input("Ingrese un texto: ")

if bool(texto):
    print("La cadena tiene contenido")
else:
    print("La cadena esta vacia")

Ejercicio 8: trabajar con None

resultado = None

if resultado is None:
    print("Todavia no existe un resultado")

Para comparar con None normalmente utilizamos is None.

Ejercicio 9: detectar el tipo de un resultado

a = 10
b = 4

resultado = a / b

print(resultado)
print(type(resultado))

La división con / devuelve un float.

Ejercicio 10: pedir nombre y edad

nombre = input("Ingrese su nombre: ")
edad = int(input("Ingrese su edad: "))

print("Nombre:", nombre)
print("Edad:", edad)
print("Tipo del nombre:", type(nombre))
print("Tipo de la edad:", type(edad))

Resumen de tipos básicos

Tipo Ejemplo Uso
int 25 Números enteros
float 10.5 Números decimales
str "Python" Texto
bool True Valores lógicos
NoneType None Ausencia de valor

Qué conviene recordar

  • Python tiene tipado dinámico.
  • Cada valor sigue teniendo un tipo.
  • type() permite inspeccionar ese tipo.
  • input() devuelve siempre una cadena.
  • int(), float(), str() y bool() permiten realizar conversiones.
  • No todas las conversiones son válidas.
  • El comportamiento de una operación puede depender del tipo de dato.
  • None representa ausencia de valor.

Próximo paso: listas en Python

Una vez comprendidos los tipos de datos básicos, el siguiente paso es aprender a almacenar varios valores dentro de una misma estructura. Para eso vamos a trabajar con listas en Python, recorriéndolas, modificándolas, buscando elementos y resolviendo ejercicios prácticos.

Seguí aprendiendo Python

Si querés volver a una colección general de práctica, podés revisar los 20 ejercicios resueltos de Python para principiantes.

El siguiente paso de la ruta es aprender a controlar el flujo del programa:

Condicionales y ciclos en Python: 20 ejercicios resueltos →

Ver la ruta completa de Python →


¿Te sirvió esta guía? ☕

Si este contenido te ayudó a entender mejor Python, podés apoyar a Club Programador. Cada aporte ayuda a mantener el sitio online y a seguir publicando material gratuito.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

Condicionales y ciclos en Python: 20 ejercicios resueltos

Aprendé condicionales y ciclos en Python con 20 ejercicios resueltos usando if, elif, else, while, for, range y operadores lógicos.

Los condicionales y los ciclos son dos de las estructuras más importantes de cualquier lenguaje de programación. Con ellos podemos tomar decisiones, repetir tareas y construir programas que reaccionan a distintas situaciones.

En esta guía vamos a practicar condicionales y ciclos en Python mediante ejemplos claros y ejercicios resueltos paso a paso. Trabajaremos con if, elif, else, while, for, range() y operadores lógicos.

Idea clave: los condicionales sirven para decidir qué camino seguir y los ciclos sirven para repetir acciones. En la mayoría de los programas reales ambas estructuras aparecen combinadas.

Condicionales en Python

La estructura básica utiliza if:

edad = 20

if edad >= 18:
    print("Es mayor de edad")

Podemos agregar una alternativa con else:

if edad >= 18:
    print("Es mayor de edad")
else:
    print("Es menor de edad")

Y si necesitamos evaluar varias condiciones, podemos utilizar elif:

nota = 8

if nota >= 7:
    print("Aprobado")
elif nota >= 4:
    print("Recupera")
else:
    print("Desaprobado")

Operadores de comparación

  • == igual a
  • != distinto de
  • > mayor que
  • < menor que
  • >= mayor o igual que
  • <= menor o igual que

Operadores lógicos

  • and: ambas condiciones deben cumplirse.
  • or: alcanza con que una condición se cumpla.
  • not: invierte un valor lógico.
edad = 25
tiene_documento = True

if edad >= 18 and tiene_documento:
    print("Puede ingresar")

Ciclo while

while repite un bloque mientras una condición sea verdadera.

contador = 1

while contador <= 5:
    print(contador)
    contador += 1

Ciclo for

for se utiliza para recorrer secuencias o rangos de valores.

for numero in range(1, 6):
    print(numero)

range(1, 6) genera los valores 1, 2, 3, 4 y 5. El límite final no se incluye.

¿Cuándo usar for y cuándo while?

Como regla general:

  • usá for cuando sabés cuántas veces querés repetir algo o cuando recorrés una colección;
  • usá while cuando la repetición depende de una condición y no sabés de antemano cuántas iteraciones habrá.

Índice de ejercicios

  1. Mayor de edad
  2. Positivo, negativo o cero
  3. Mayor de tres números
  4. Año bisiesto
  5. Validar contraseña
  6. Tabla de multiplicar
  7. Suma del 1 hasta N
  8. Contar números pares
  9. Sumar solo positivos
  10. Ingresar números hasta escribir 0
  11. Intentos de contraseña
  12. Adivinar un número
  13. Mostrar múltiplos
  14. Contar vocales
  15. Menú repetitivo
  16. Promedio con valor de corte
  17. Número primo
  18. Serie de Fibonacci
  19. Máximo de una secuencia
  20. Mini sistema con menú

1. Mayor de edad

edad = int(input("Ingrese su edad: "))

if edad >= 18:
    print("Es mayor de edad")
else:
    print("Es menor de edad")

2. Positivo, negativo o cero

numero = float(input("Ingrese un numero: "))

if numero > 0:
    print("Es positivo")
elif numero < 0:
    print("Es negativo")
else:
    print("Es cero")

3. Mayor de tres números

a = float(input("Ingrese el primer numero: "))
b = float(input("Ingrese el segundo numero: "))
c = float(input("Ingrese el tercer numero: "))

mayor = a

if b > mayor:
    mayor = b

if c > mayor:
    mayor = c

print("El mayor es:", mayor)

4. Año bisiesto

anio = int(input("Ingrese un anio: "))

if anio % 400 == 0 or (anio % 4 == 0 and anio % 100 != 0):
    print("Es bisiesto")
else:
    print("No es bisiesto")

5. Validar contraseña

clave = input("Ingrese la clave: ")

if clave == "python123":
    print("Acceso permitido")
else:
    print("Clave incorrecta")

6. Tabla de multiplicar

numero = int(input("Ingrese un numero: "))

for i in range(1, 11):
    print(numero, "x", i, "=", numero * i)

7. Suma del 1 hasta N

n = int(input("Ingrese un numero positivo: "))
suma = 0

for i in range(1, n + 1):
    suma += i

print("Resultado:", suma)

8. Contar números pares

cantidad = 0

for numero in range(1, 21):
    if numero % 2 == 0:
        cantidad += 1

print("Cantidad de pares:", cantidad)

9. Sumar solo positivos

suma = 0

for i in range(5):
    numero = float(input("Ingrese un numero: "))

    if numero > 0:
        suma += numero

print("Suma de positivos:", suma)

10. Ingresar números hasta escribir 0

suma = 0
numero = float(input("Ingrese un numero (0 para terminar): "))

while numero != 0:
    suma += numero
    numero = float(input("Ingrese otro numero (0 para terminar): "))

print("Suma total:", suma)

11. Intentos de contraseña

clave_correcta = "python123"
intentos = 0
acceso = False

while intentos < 3 and not acceso:
    clave = input("Ingrese la clave: ")

    if clave == clave_correcta:
        acceso = True
    else:
        intentos += 1

if acceso:
    print("Acceso permitido")
else:
    print("Cuenta bloqueada")

12. Adivinar un número

secreto = 7
numero = None

while numero != secreto:
    numero = int(input("Adivine el numero: "))

    if numero < secreto:
        print("El numero secreto es mayor")
    elif numero > secreto:
        print("El numero secreto es menor")

print("Correcto")

13. Mostrar múltiplos de un número

numero = int(input("Ingrese un numero: "))
limite = int(input("Ingrese un limite: "))

for valor in range(numero, limite + 1, numero):
    print(valor)

14. Contar vocales

texto = input("Ingrese un texto: ")
cantidad = 0

for caracter in texto.lower():
    if caracter in "aeiou":
        cantidad += 1

print("Cantidad de vocales:", cantidad)

15. Menú repetitivo

opcion = 0

while opcion != 3:
    print("")
    print("1. Saludar")
    print("2. Mostrar mensaje")
    print("3. Salir")

    opcion = int(input("Seleccione una opcion: "))

    if opcion == 1:
        print("Hola")

    elif opcion == 2:
        print("Bienvenido a Club Programador")

    elif opcion == 3:
        print("Hasta luego")

    else:
        print("Opcion invalida")

16. Promedio con valor de corte

Ingresamos notas hasta escribir -1.

suma = 0
cantidad = 0

nota = float(input("Ingrese una nota (-1 para terminar): "))

while nota != -1:
    suma += nota
    cantidad += 1

    nota = float(input("Ingrese otra nota (-1 para terminar): "))

if cantidad > 0:
    promedio = suma / cantidad
    print("Promedio:", promedio)
else:
    print("No se ingresaron notas")

17. Número primo

numero = int(input("Ingrese un numero: "))

es_primo = numero >= 2
divisor = 2

while divisor * divisor <= numero and es_primo:
    if numero % divisor == 0:
        es_primo = False
    else:
        divisor += 1

if es_primo:
    print("Es primo")
else:
    print("No es primo")

18. Serie de Fibonacci

cantidad = int(input("Cantidad de terminos: "))

a = 0
b = 1

for i in range(cantidad):
    print(a)

    siguiente = a + b
    a = b
    b = siguiente

19. Máximo de una secuencia

cantidad = int(input("Cuantos numeros desea ingresar: "))

if cantidad > 0:
    mayor = float(input("Ingrese el primer numero: "))

    for i in range(1, cantidad):
        numero = float(input("Ingrese otro numero: "))

        if numero > mayor:
            mayor = numero

    print("El mayor es:", mayor)
else:
    print("La cantidad debe ser mayor que cero")

20. Mini sistema con menú

Combinamos condicionales y ciclos en un pequeño programa interactivo.

opcion = 0

while opcion != 4:
    print("")
    print("=== CLUB PROGRAMADOR ===")
    print("1. Par o impar")
    print("2. Tabla de multiplicar")
    print("3. Contar del 1 al 5")
    print("4. Salir")

    opcion = int(input("Seleccione una opcion: "))

    if opcion == 1:
        numero = int(input("Ingrese un numero: "))

        if numero % 2 == 0:
            print("Es par")
        else:
            print("Es impar")

    elif opcion == 2:
        numero = int(input("Ingrese un numero: "))

        for i in range(1, 11):
            print(numero, "x", i, "=", numero * i)

    elif opcion == 3:
        for i in range(1, 6):
            print(i)

    elif opcion == 4:
        print("Programa finalizado")

    else:
        print("Opcion invalida")

Errores comunes con condicionales y ciclos

  • Confundir = con ==: el primero asigna, el segundo compara.
  • Olvidar los dos puntos: estructuras como if, for y while terminan con :.
  • Indentación incorrecta: las instrucciones que pertenecen a una estructura deben estar indentadas.
  • Ciclo infinito: en un while asegurate de que en algún momento cambie la condición.
  • Error en range(): recordá que el valor final no se incluye.

Cómo practicar

Una buena forma de aprender es modificar estos ejercicios. Podés:

  • agregar validaciones;
  • cambiar los límites de los ciclos;
  • combinar dos ejercicios;
  • crear nuevas opciones en los menús;
  • intentar resolver cada ejercicio antes de mirar la solución.

Próximo paso: listas en Python

Una vez dominados condicionales y ciclos, el siguiente paso natural es trabajar con colecciones de datos. En la próxima guía vamos a profundizar en listas en Python con ejercicios resueltos.

Seguí aprendiendo Python

Antes de seguir, podés repasar tipos de datos y conversiones en Python.

Cuando ya dominás decisiones y repeticiones, el siguiente paso es trabajar con colecciones:

Listas en Python: 20 ejercicios resueltos paso a paso →

Ver la ruta completa de Python


¿Te sirvió esta guía? ☕

Si estos ejercicios te ayudaron a aprender Python, podés apoyar a Club Programador. Cada aporte ayuda a mantener el sitio online y a seguir publicando material gratuito.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

20 ejercicios resueltos de Python para principiantes

20 ejercicios resueltos de Python para principiantes con variables, condicionales, ciclos, cadenas, listas, búsquedas, funciones y un mini menú interactivo.

Después de aprender los conceptos básicos de Python y ver cómo traducir algoritmos desde PSeInt, llega el momento de resolver problemas directamente en Python.

En esta guía vas a encontrar 20 ejercicios resueltos de Python para principiantes, ordenados de menor a mayor dificultad. La idea es practicar entrada y salida de datos, condicionales, ciclos, cadenas, listas y funciones sin depender ya del pseudocódigo.

Antes de empezar: recordá que input() devuelve texto, que las listas comienzan en la posición 0 y que la indentación forma parte de la sintaxis de Python.

Índice de ejercicios

  1. Hola mundo y entrada de datos
  2. Sumar dos números
  3. Número par o impar
  4. Mayor de dos números
  5. Positivo, negativo o cero
  6. Promedio de notas
  7. Tabla de multiplicar
  8. Suma de 1 hasta N
  9. Factorial
  10. Número primo
  11. Contar vocales
  12. Invertir una cadena
  13. Mayor valor de una lista
  14. Promedio de una lista
  15. Buscar un valor en una lista
  16. Contar pares e impares
  17. Eliminar duplicados
  18. Ordenar una lista
  19. Función para calcular un área
  20. Mini menú interactivo

1. Hola mundo y entrada de datos

Pedimos el nombre del usuario y mostramos un saludo personalizado.

nombre = input("Ingrese su nombre: ")
print("Hola", nombre)

2. Sumar dos números

Como input() devuelve texto, convertimos los valores a número antes de sumarlos.

numero1 = float(input("Ingrese el primer numero: "))
numero2 = float(input("Ingrese el segundo numero: "))

resultado = numero1 + numero2

print("Resultado:", resultado)

3. Número par o impar

Utilizamos el operador módulo % para conocer el resto de una división.

numero = int(input("Ingrese un numero entero: "))

if numero % 2 == 0:
    print("El numero es par")
else:
    print("El numero es impar")

4. Mayor de dos números

a = float(input("Ingrese el primer numero: "))
b = float(input("Ingrese el segundo numero: "))

if a > b:
    print("El mayor es", a)
elif b > a:
    print("El mayor es", b)
else:
    print("Los dos numeros son iguales")

5. Positivo, negativo o cero

numero = float(input("Ingrese un numero: "))

if numero > 0:
    print("Es positivo")
elif numero < 0:
    print("Es negativo")
else:
    print("Es cero")

6. Promedio de notas

nota1 = float(input("Ingrese la primera nota: "))
nota2 = float(input("Ingrese la segunda nota: "))
nota3 = float(input("Ingrese la tercera nota: "))

promedio = (nota1 + nota2 + nota3) / 3

print("Promedio:", promedio)

if promedio >= 6:
    print("Aprobado")
else:
    print("Desaprobado")

7. Tabla de multiplicar

Con range(1, 11) recorremos los números del 1 al 10.

numero = int(input("Ingrese un numero: "))

for i in range(1, 11):
    print(numero, "x", i, "=", numero * i)

8. Suma de 1 hasta N

n = int(input("Ingrese un numero positivo: "))
suma = 0

for i in range(1, n + 1):
    suma += i

print("La suma es:", suma)

9. Factorial

numero = int(input("Ingrese un numero entero no negativo: "))

if numero < 0:
    print("El factorial no esta definido para numeros negativos")
else:
    factorial = 1

    for i in range(1, numero + 1):
        factorial *= i

    print("Factorial:", factorial)

10. Número primo

numero = int(input("Ingrese un numero: "))

es_primo = numero >= 2
divisor = 2

while divisor * divisor <= numero and es_primo:
    if numero % divisor == 0:
        es_primo = False
    else:
        divisor += 1

if es_primo:
    print("Es primo")
else:
    print("No es primo")

11. Contar vocales en un texto

Recorremos cada carácter de la cadena y comprobamos si pertenece al conjunto de vocales.

texto = input("Ingrese un texto: ")
cantidad = 0

for caracter in texto.lower():
    if caracter in "aeiou":
        cantidad += 1

print("Cantidad de vocales:", cantidad)

12. Invertir una cadena

Python permite utilizar slicing para recorrer una cadena en sentido inverso.

texto = input("Ingrese un texto: ")

invertido = texto[::-1]

print("Texto invertido:", invertido)

13. Mayor valor de una lista

En este ejercicio hacemos el recorrido manualmente para practicar la lógica de búsqueda de máximos.

numeros = [12, 7, 25, 4, 18]

mayor = numeros[0]

for numero in numeros:
    if numero > mayor:
        mayor = numero

print("El mayor es:", mayor)

14. Promedio de una lista

notas = [8, 6, 9, 7, 10]

suma = 0

for nota in notas:
    suma += nota

promedio = suma / len(notas)

print("Promedio:", promedio)

15. Buscar un valor en una lista

numeros = [10, 20, 30, 40, 50]
buscado = int(input("Ingrese el numero a buscar: "))

encontrado = False
posicion = 0

while posicion < len(numeros) and not encontrado:
    if numeros[posicion] == buscado:
        encontrado = True
    else:
        posicion += 1

if encontrado:
    print("Encontrado en la posicion", posicion)
else:
    print("El valor no se encuentra en la lista")

Recordá que en Python la primera posición de una lista es 0.

16. Contar pares e impares

numeros = [4, 7, 10, 13, 18, 21]

pares = 0
impares = 0

for numero in numeros:
    if numero % 2 == 0:
        pares += 1
    else:
        impares += 1

print("Pares:", pares)
print("Impares:", impares)

17. Eliminar duplicados de una lista

Construimos una nueva lista y agregamos solamente los valores que todavía no existen en ella.

numeros = [1, 2, 2, 3, 4, 4, 5]
sin_duplicados = []

for numero in numeros:
    if numero not in sin_duplicados:
        sin_duplicados.append(numero)

print(sin_duplicados)

18. Ordenar una lista

Python incluye herramientas para ordenar listas. En este ejemplo usamos sorted(), que devuelve una nueva lista ordenada.

numeros = [8, 3, 10, 1, 6]

ordenados = sorted(numeros)

print("Original:", numeros)
print("Ordenada:", ordenados)

Más adelante también podemos implementar manualmente algoritmos como burbuja, selección e inserción para entender cómo funciona el ordenamiento internamente.

19. Función para calcular el área de un rectángulo

def calcular_area(base, altura):
    return base * altura

base = float(input("Ingrese la base: "))
altura = float(input("Ingrese la altura: "))

area = calcular_area(base, altura)

print("Area:", area)

Separar el cálculo en una función permite reutilizarlo sin repetir código.

20. Mini menú interactivo

Terminamos combinando varias estructuras en un pequeño programa con menú.

opcion = 0

while opcion != 4:
    print("")
    print("=== MENU ===")
    print("1. Saludar")
    print("2. Sumar dos numeros")
    print("3. Mostrar numeros del 1 al 5")
    print("4. Salir")

    opcion = int(input("Seleccione una opcion: "))

    if opcion == 1:
        nombre = input("Ingrese su nombre: ")
        print("Hola", nombre)

    elif opcion == 2:
        a = float(input("Primer numero: "))
        b = float(input("Segundo numero: "))
        print("Resultado:", a + b)

    elif opcion == 3:
        for i in range(1, 6):
            print(i)

    elif opcion == 4:
        print("Hasta luego")

    else:
        print("Opcion invalida")

Qué conceptos practicamos

Estos 20 ejercicios recorren buena parte de los fundamentos necesarios para seguir avanzando con Python:

  • variables;
  • entrada y salida de datos;
  • conversiones con int() y float();
  • condicionales;
  • ciclos for y while;
  • range();
  • cadenas de texto;
  • listas;
  • búsquedas;
  • acumuladores y contadores;
  • funciones;
  • menús interactivos.

Cómo aprovechar mejor estos ejercicios

No te limites a copiar y ejecutar el código. Probá modificar cada ejercicio:

  • cambiá los valores iniciales;
  • agregá validaciones;
  • pedí los datos al usuario;
  • convertí bloques repetidos en funciones;
  • combiná dos ejercicios en un solo programa;
  • intentá resolver el problema por tu cuenta antes de mirar la solución.

Si venís de PSeInt, también podés consultar nuestra guía De PSeInt a Python: 10 algoritmos traducidos paso a paso para comparar ambas sintaxis.

Próximo paso

Después de esta colección general vamos a profundizar en temas concretos, empezando por condicionales y ciclos y luego avanzando hacia listas, funciones, búsqueda, ordenamiento y proyectos completos.

Seguí aprendiendo Python

Si necesitás repasar la transición desde pseudocódigo, consultá De PSeInt a Python.

Para profundizar en los fundamentos, continuá con:

Tipos de datos en Python: int, float, str, bool y conversiones →

Ver la ruta completa de Python →


¿Te sirvieron estos ejercicios? ☕

Si este contenido te ayudó a practicar Python, podés apoyar a Club Programador. Cada aporte ayuda a mantener el sitio online y a seguir publicando material gratuito.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

De PSeInt a Python: 10 algoritmos traducidos paso a paso

Aprendé a pasar de PSeInt a Python con 10 algoritmos traducidos paso a paso: condicionales, ciclos, listas, búsquedas, funciones y más.

Si ya aprendiste lógica de programación con PSeInt, pasar a Python no significa empezar de cero. Los conceptos siguen siendo los mismos: variables, decisiones, ciclos, listas, funciones y algoritmos. Lo que cambia es la sintaxis y algunas convenciones del lenguaje.

En esta guía vamos a tomar 10 algoritmos conocidos y traducirlos paso a paso de PSeInt a Python. La idea es que puedas reconocer rápidamente qué parte del pseudocódigo corresponde a cada instrucción real.

La lógica no cambia: cambia la forma de escribirla.

En PSeInt nos concentrábamos en describir el algoritmo. En Python escribimos código real que será interpretado y ejecutado por la computadora. Por eso aparecen reglas concretas como la indentación, los índices desde 0 y la conversión de datos ingresados con input().

Equivalencias rápidas entre PSeInt y Python

PSeInt Python
Escribir print()
Leer input()
Si if
Sino else
Mientras while
Para for
MOD %
SubProceso def
vector desde posición 1 lista desde posición 0

1. Entrada y salida de datos

PSeInt

Algoritmo Saludo
    Definir nombre Como Caracter

    Escribir "Ingrese su nombre:"
    Leer nombre

    Escribir "Hola ", nombre
FinAlgoritmo

Python

nombre = input("Ingrese su nombre: ")
print("Hola", nombre)

En Python no necesitamos declarar previamente la variable. input() recibe el dato y lo guarda como texto.

2. Número par o impar

PSeInt

Algoritmo ParImpar
    Definir numero Como Entero

    Escribir "Ingrese un numero:"
    Leer numero

    Si numero MOD 2 = 0 Entonces
        Escribir "Es par"
    Sino
        Escribir "Es impar"
    FinSi
FinAlgoritmo

Python

numero = int(input("Ingrese un numero: "))

if numero % 2 == 0:
    print("Es par")
else:
    print("Es impar")

MOD se reemplaza por %. También convertimos el resultado de input() con int() porque necesitamos trabajar con un entero.

3. Mayor de dos números

PSeInt

Algoritmo MayorDeDos
    Definir a, b Como Real

    Escribir "Ingrese dos numeros:"
    Leer a
    Leer b

    Si a > b Entonces
        Escribir "El mayor es ", a
    Sino
        Si b > a Entonces
            Escribir "El mayor es ", b
        Sino
            Escribir "Son iguales"
        FinSi
    FinSi
FinAlgoritmo

Python

a = float(input("Ingrese el primer numero: "))
b = float(input("Ingrese el segundo numero: "))

if a > b:
    print("El mayor es", a)
elif b > a:
    print("El mayor es", b)
else:
    print("Son iguales")

Python incorpora elif, que permite expresar una segunda condición sin anidar otro if.

4. Promedio de notas

PSeInt

Algoritmo PromedioNotas
    Definir nota1, nota2, nota3, promedio Como Real

    Leer nota1
    Leer nota2
    Leer nota3

    promedio <- (nota1 + nota2 + nota3) / 3

    Escribir "Promedio: ", promedio
FinAlgoritmo

Python

nota1 = float(input("Nota 1: "))
nota2 = float(input("Nota 2: "))
nota3 = float(input("Nota 3: "))

promedio = (nota1 + nota2 + nota3) / 3

print("Promedio:", promedio)

La asignación que en PSeInt escribíamos con <- en Python se realiza con =.

5. Factorial de un número

PSeInt

Algoritmo Factorial
    Definir numero, i, resultado Como Entero

    Escribir "Ingrese un numero:"
    Leer numero

    resultado <- 1

    Para i <- 1 Hasta numero Hacer
        resultado <- resultado * i
    FinPara

    Escribir "Factorial: ", resultado
FinAlgoritmo

Python

numero = int(input("Ingrese un numero: "))
resultado = 1

for i in range(1, numero + 1):
    resultado = resultado * i

print("Factorial:", resultado)

En Python, el límite final de range() no se incluye. Por eso usamos numero + 1 para recorrer desde 1 hasta el número ingresado.

6. Determinar si un número es primo

PSeInt

Algoritmo NumeroPrimo
    Definir numero, divisor Como Entero
    Definir esPrimo Como Logico

    Escribir "Ingrese un numero:"
    Leer numero

    esPrimo <- Verdadero
    divisor <- 2

    Si numero < 2 Entonces
        esPrimo <- Falso
    FinSi

    Mientras divisor * divisor <= numero Y esPrimo Hacer
        Si numero MOD divisor = 0 Entonces
            esPrimo <- Falso
        Sino
            divisor <- divisor + 1
        FinSi
    FinMientras

    Si esPrimo Entonces
        Escribir "Es primo"
    Sino
        Escribir "No es primo"
    FinSi
FinAlgoritmo

Python

numero = int(input("Ingrese un numero: "))

es_primo = numero >= 2
divisor = 2

while divisor * divisor <= numero and es_primo:
    if numero % divisor == 0:
        es_primo = False
    else:
        divisor += 1

if es_primo:
    print("Es primo")
else:
    print("No es primo")

Los valores lógicos se escriben True y False. El operador lógico Y pasa a ser and.

7. Suma de los dígitos de un número

PSeInt

Algoritmo SumaDigitos
    Definir numero, suma, digito Como Entero

    Escribir "Ingrese un numero positivo:"
    Leer numero

    suma <- 0

    Mientras numero > 0 Hacer
        digito <- numero MOD 10
        suma <- suma + digito
        numero <- Trunc(numero / 10)
    FinMientras

    Escribir "Suma de digitos: ", suma
FinAlgoritmo

Python

numero = int(input("Ingrese un numero positivo: "))
suma = 0

while numero > 0:
    digito = numero % 10
    suma += digito
    numero //= 10

print("Suma de digitos:", suma)

En Python, // realiza división entera. Esto nos permite eliminar el último dígito sin utilizar Trunc().

8. Recorrer un vector: de vector a lista

PSeInt

Algoritmo RecorrerVector
    Definir numeros, i Como Entero
    Dimension numeros[5]

    numeros[1] <- 10
    numeros[2] <- 20
    numeros[3] <- 30
    numeros[4] <- 40
    numeros[5] <- 50

    Para i <- 1 Hasta 5 Hacer
        Escribir numeros[i]
    FinPara
FinAlgoritmo

Python

numeros = [10, 20, 30, 40, 50]

for numero in numeros:
    print(numero)

Python permite recorrer directamente los elementos de una lista sin necesidad de manejar el índice.

Si necesitáramos acceder por posición, debemos recordar que los índices comienzan en 0:

print(numeros[0])  # 10
print(numeros[4])  # 50

9. Búsqueda secuencial

PSeInt

Algoritmo BusquedaSecuencial
    Definir numeros, i, buscado, posicion Como Entero
    Definir encontrado Como Logico
    Dimension numeros[5]

    numeros[1] <- 10
    numeros[2] <- 20
    numeros[3] <- 30
    numeros[4] <- 40
    numeros[5] <- 50

    Escribir "Ingrese el valor a buscar:"
    Leer buscado

    encontrado <- Falso
    posicion <- 1

    Mientras posicion <= 5 Y NO encontrado Hacer
        Si numeros[posicion] = buscado Entonces
            encontrado <- Verdadero
        Sino
            posicion <- posicion + 1
        FinSi
    FinMientras

    Si encontrado Entonces
        Escribir "Encontrado en la posicion ", posicion
    Sino
        Escribir "No encontrado"
    FinSi
FinAlgoritmo

Python

numeros = [10, 20, 30, 40, 50]
buscado = int(input("Ingrese el valor a buscar: "))

encontrado = False
posicion = 0

while posicion < len(numeros) and not encontrado:
    if numeros[posicion] == buscado:
        encontrado = True
    else:
        posicion += 1

if encontrado:
    print("Encontrado en la posicion", posicion)
else:
    print("No encontrado")

Aquí el índice 0 sí es una posición válida. Si buscamos 10, Python lo encuentra en la posición 0.

Más adelante veremos que Python ofrece herramientas más directas para ciertas búsquedas, pero implementar el algoritmo manualmente sigue siendo fundamental para entender cómo funciona.

10. Función que devuelve un resultado

PSeInt

SubProceso resultado <- Sumar(a, b)
    resultado <- a + b
FinSubProceso

Algoritmo EjemploFuncion
    Definir total Como Real

    total <- Sumar(10, 5)

    Escribir total
FinAlgoritmo

Python

def sumar(a, b):
    return a + b

total = sumar(10, 5)

print(total)

En Python utilizamos def para definir una función y return para devolver el resultado.

Un detalle fundamental: la indentación

En PSeInt las estructuras terminan explícitamente con palabras como FinSi, FinMientras o FinPara. Python no utiliza esas palabras.

En cambio, los bloques se identifican mediante indentación:

if edad >= 18:
    print("Mayor de edad")
    print("Puede continuar")

print("Fin del programa")

Las dos primeras instrucciones pertenecen al if. La última queda fuera porque ya no está indentada.

Otro cambio importante: input() devuelve texto

Este código:

numero = input("Ingrese un numero: ")

guarda el valor como texto. Si necesitamos realizar operaciones matemáticas debemos convertirlo:

numero = int(input("Ingrese un numero: "))

o:

precio = float(input("Ingrese un precio: "))

¿Qué aprendimos al traducir estos algoritmos?

El cambio de PSeInt a Python es mucho menos brusco cuando ya entendemos la lógica. Los algoritmos siguen teniendo:

  • datos de entrada;
  • variables;
  • operaciones;
  • condiciones;
  • repeticiones;
  • estructuras para almacenar datos;
  • funciones para separar responsabilidades;
  • resultados de salida.

Python simplemente nos obliga a expresar esas ideas utilizando la sintaxis de un lenguaje real.

Próximo paso

Ahora que ya vimos cómo trasladar algoritmos conocidos, el próximo paso será resolver ejercicios directamente en Python, sin depender de una versión previa en PSeInt.

Si necesitás repasar la base algorítmica, podés recorrer nuestro centro de contenidos de PSeInt.

Seguí aprendiendo Python

Podés volver a la introducción a Python o continuar resolviendo problemas directamente en el lenguaje:

20 ejercicios resueltos de Python para principiantes →

Ver la ruta completa de Python →


¿Te sirvió esta guía? ☕

Si este contenido te ayudó a dar el salto de PSeInt a Python, podés apoyar a Club Programador. Cada aporte ayuda a mantener el contenido gratuito y a seguir publicando nuevas guías.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

Introducción a Python: qué es, cómo instalarlo y primeros pasos

Aprendé Python desde cero: qué es, cómo descargarlo e instalarlo, ejecutar tu primer programa y entender variables, input, print, condicionales, ciclos, listas y funciones.

Después de aprender lógica de programación con PSeInt, el siguiente paso natural es comenzar a escribir programas en un lenguaje real. Python es una excelente opción porque tiene una sintaxis clara, se utiliza profesionalmente y permite concentrarse en resolver problemas sin introducir demasiada complejidad de golpe.

A partir de acá dejamos el pseudocódigo y empezamos a trabajar con un lenguaje de programación real.

PSeInt nos sirvió para aprender a pensar algoritmos sin preocuparnos demasiado por los detalles técnicos de un lenguaje. Python, en cambio, es una herramienta utilizada profesionalmente para desarrollar aplicaciones, automatizar tareas, trabajar con datos, inteligencia artificial, servicios web y muchísimas otras cosas.

La lógica que aprendimos sigue siendo válida, pero ahora cada instrucción que escribamos será código real que podrá ejecutarse fuera de un entorno educativo. Eso implica aprender sintaxis, archivos, intérpretes, errores reales de ejecución y herramientas de desarrollo. En otras palabras, dejamos de simular cómo se programa y empezamos a programar de verdad.

En esta guía vamos a empezar desde cero: qué es Python, cómo descargarlo e instalarlo, cómo ejecutar nuestro primer programa y cuáles son las principales diferencias con PSeInt.

¿Qué es Python?

Python es un lenguaje de programación de propósito general. Se utiliza en áreas muy diferentes, entre ellas:

  • desarrollo web;
  • automatización de tareas;
  • análisis de datos;
  • inteligencia artificial y machine learning;
  • scripts y herramientas de administración;
  • aplicaciones educativas;
  • ciencia e investigación.

Una de sus principales ventajas para comenzar es que su sintaxis intenta ser legible. Si ya aprendiste variables, condicionales, ciclos y funciones con PSeInt, gran parte de la lógica que conocés se traslada directamente a Python.

PSeInt y Python: ¿qué cambia?

PSeInt utiliza pseudocódigo: su objetivo principal es enseñar a pensar algoritmos. Python, en cambio, es un lenguaje de programación real que puede utilizarse para construir aplicaciones y herramientas profesionales.

Por ejemplo, en PSeInt podemos escribir:

Escribir "Ingrese su nombre:"
Leer nombre
Escribir "Hola ", nombre

En Python, la misma idea sería:

nombre = input("Ingrese su nombre: ")
print("Hola", nombre)

La lógica es exactamente la misma: pedir un dato, almacenarlo en una variable y mostrar un resultado. Lo que cambia es la sintaxis.

Cómo descargar Python

La forma más segura de descargar Python es hacerlo desde su sitio oficial:

Descargar Python desde python.org

En la página de descargas normalmente aparecerá destacada la versión estable recomendada para tu sistema operativo.

Instalación en Windows

  1. Ingresá a python.org/downloads.
  2. Descargá el instalador para Windows.
  3. Ejecutá el archivo descargado.
  4. Si el instalador muestra una opción para agregar Python al PATH, activala.
  5. Elegí la instalación estándar y esperá a que finalice.

Agregar Python al PATH permite ejecutar el intérprete desde la terminal sin tener que indicar manualmente dónde está instalado.

¿Y en macOS o Linux?

Python también está disponible para macOS y Linux. En macOS podés descargar el instalador oficial desde python.org. En muchas distribuciones Linux Python ya se encuentra instalado, aunque puede ser necesario instalar una versión más reciente utilizando el gestor de paquetes de la distribución.

Cómo comprobar que Python quedó instalado

En Windows podés abrir PowerShell o Símbolo del sistema y ejecutar:

python --version

En algunas instalaciones de Windows también podés utilizar:

py --version

Si la instalación es correcta, debería aparecer la versión instalada.

El intérprete interactivo

Si escribís:

python

se abrirá el intérprete interactivo. Allí podés ejecutar instrucciones directamente:

>>> 2 + 3
5

>>> print("Hola mundo")
Hola mundo

Esto resulta útil para probar expresiones rápidamente, aunque para programas más grandes vamos a utilizar archivos con extensión .py.

Nuestro primer archivo Python

Creá un archivo llamado:

hola.py

y escribí:

print("Hola mundo")

Después abrí una terminal en la carpeta donde guardaste el archivo y ejecutá:

python hola.py

Si utilizás el lanzador de Python para Windows, también puede funcionar:

py hola.py

¿Qué editor podemos utilizar?

Python incluye IDLE, un editor sencillo que alcanza perfectamente para dar los primeros pasos.

Otra opción muy utilizada es Visual Studio Code. Tiene más herramientas y resulta conveniente cuando los programas comienzan a crecer, pero para entender los primeros conceptos no es obligatorio instalar ningún editor adicional.

Al comenzar, lo importante no es elegir el editor más sofisticado sino comprender qué está haciendo nuestro código.

La indentación es parte del lenguaje

Una diferencia importante respecto de PSeInt es que Python utiliza la indentación para indicar qué instrucciones pertenecen a una estructura.

En PSeInt:

Si edad >= 18 Entonces
    Escribir "Es mayor de edad"
FinSi

En Python:

if edad >= 18:
    print("Es mayor de edad")

Los espacios antes de print() no son decorativos: forman parte de la estructura del programa.

Variables

En Python no necesitamos declarar previamente el tipo de una variable:

nombre = "Ana"
edad = 20
altura = 1.68

Python determina el tipo de dato según el valor asignado.

Algunos tipos básicos son:

  • int: números enteros;
  • float: números decimales;
  • str: cadenas de texto;
  • bool: verdadero o falso.

Mostrar información con print()

Para mostrar información en pantalla usamos print():

print("Club Programador")
print(10)
print("Resultado:", 25)

Leer información con input()

Para pedir un dato al usuario usamos input():

nombre = input("Ingrese su nombre: ")
print("Hola", nombre)

Hay un detalle importante: input() devuelve texto. Si necesitamos trabajar con números debemos convertir el dato.

edad = int(input("Ingrese su edad: "))

Para números decimales podemos utilizar:

precio = float(input("Ingrese el precio: "))

Operadores básicos

suma = 10 + 5
resta = 10 - 5
producto = 10 * 5
division = 10 / 5
resto = 10 % 3

El operador % cumple el mismo papel que MOD en PSeInt.

Por ejemplo:

numero = int(input("Ingrese un numero: "))

if numero % 2 == 0:
    print("Es par")
else:
    print("Es impar")

Condicionales

En Python utilizamos if, elif y else.

nota = float(input("Ingrese la nota: "))

if nota >= 7:
    print("Aprobado")
elif nota >= 4:
    print("Debe recuperar")
else:
    print("Desaprobado")

Ciclo while

El equivalente al ciclo Mientras de PSeInt es while:

contador = 1

while contador <= 5:
    print(contador)
    contador = contador + 1

Ciclo for

Para recorrer una secuencia de valores podemos utilizar for:

for numero in range(1, 6):
    print(numero)

Este ejemplo muestra los números del 1 al 5. Más adelante veremos con detalle cómo funciona range().

Listas: el equivalente más cercano a los vectores

Una lista permite almacenar varios valores:

notas = [8, 6, 10, 7, 9]

print(notas[0])
print(notas[1])

Aquí aparece una diferencia importante respecto de la configuración de PSeInt que utilizamos en nuestros ejercicios: en Python los índices comienzan en 0.

Por ejemplo, una lista con cinco elementos utiliza las posiciones:

0, 1, 2, 3, 4

Este cambio merece especial atención cuando pasemos nuestros algoritmos de vectores desde PSeInt a Python.

Funciones

Las funciones permiten separar responsabilidades exactamente como vimos con los subprocesos.

def sumar(a, b):
    return a + b

resultado = sumar(10, 5)
print(resultado)

La palabra def indica que estamos definiendo una función y return permite devolver un resultado.

PSeInt vs Python: función simple

En PSeInt:

SubProceso resultado <- Sumar(a, b)
    resultado <- a + b
FinSubProceso

En Python:

def sumar(a, b):
    return a + b

La idea algorítmica sigue siendo la misma.

Primer programa completo

Vamos a juntar entrada de datos, cálculos y un condicional:

nombre = input("Ingrese su nombre: ")
nota1 = float(input("Ingrese la primera nota: "))
nota2 = float(input("Ingrese la segunda nota: "))

promedio = (nota1 + nota2) / 2

print("Alumno:", nombre)
print("Promedio:", promedio)

if promedio >= 6:
    print("Resultado: aprobado")
else:
    print("Resultado: desaprobado")

Aunque ya estamos utilizando un lenguaje real, seguimos aplicando exactamente los mismos conceptos que practicamos con PSeInt: variables, entrada, procesamiento, salida y decisiones.

Errores comunes al comenzar

  • Python no se reconoce como comando: generalmente significa que no quedó configurado correctamente el PATH. En Windows también podés probar con py.
  • IndentationError: revisá los espacios utilizados dentro de if, while, for y funciones.
  • Intentar sumar texto y números: recordá que input() devuelve texto y puede ser necesario utilizar int() o float().
  • Ejecutar desde otra carpeta: asegurate de que la terminal esté ubicada donde se encuentra el archivo .py.
  • Confundir = con ==: = asigna un valor; == compara dos valores.

¿Qué vamos a aprender a continuación?

Esta entrada es solamente el punto de partida. En las próximas guías vamos a avanzar de manera progresiva con:

  1. PSeInt vs Python: algoritmos traducidos paso a paso.
  2. Ejercicios básicos resueltos en Python.
  3. Condicionales y ciclos.
  4. Listas.
  5. Búsqueda y ordenamiento.
  6. Funciones.
  7. Matrices y listas anidadas.
  8. Un proyecto final completo.

¿Venís de PSeInt?

Si todavía estás practicando lógica de programación, podés recorrer nuestro centro de contenidos de PSeInt, donde organizamos ejercicios, guías y un proyecto final en un orden recomendado.

El objetivo a partir de ahora es aprovechar esa base y trasladarla progresivamente a Python.

Seguí aprendiendo Python

Ya tenés el entorno preparado y conocés los primeros conceptos. El siguiente paso es conectar esa base con la lógica que ya veníamos trabajando:

De PSeInt a Python: 10 algoritmos traducidos paso a paso →

Ver la ruta completa de Python →


¿Te sirvió esta guía? ☕

Si este contenido te ayudó a empezar con Python, podés apoyar a Club Programador. Cada aporte ayuda a mantener el sitio online y a seguir publicando material gratuito.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

Proyecto final en PSeInt: sistema completo de reservas de cine

Proyecto final en PSeInt: creá un sistema completo de reservas de cine con matrices, funciones, subprocesos, validaciones, estadísticas y menú interactivo.

Hasta ahora vimos los principales conceptos de PSeInt por separado: condicionales, ciclos, vectores, matrices, búsquedas, ordenamiento, funciones y subprocesos. En este proyecto final vamos a combinar gran parte de todo eso en un programa completo y bastante más cercano a un sistema real.

La idea es construir un sistema de reservas de cine que permita visualizar una sala, reservar y cancelar asientos, consultar estadísticas de ocupación y calcular la recaudación. El programa estará dividido en subprocesos para mantener cada responsabilidad separada y reducir la complejidad del algoritmo principal.

¿Qué vamos a practicar?

  • Matrices para representar los asientos de la sala.
  • Condicionales para validar reservas y cancelaciones.
  • Ciclos para recorrer filas y columnas.
  • Funciones y subprocesos para dividir el programa.
  • Acumuladores y contadores para obtener estadísticas.
  • Menús interactivos.
  • Validaciones para evitar operaciones incorrectas.

Como en los demás ejemplos del sitio, vamos a trabajar con posiciones que comienzan en 1.

Cómo representaremos la sala

Usaremos una matriz de 5 filas por 6 columnas. El valor 0 indicará que un asiento está libre y el valor 1 que está reservado.

Dimension sala[5,6]

Visualmente queremos mostrar algo parecido a esto:

========================================
          CLUB PROGRAMADOR CINE
========================================

Película: Interestelar
Función: 21:30

       1   2   3   4   5   6
Fila 1 L   L   X   L   L   L
Fila 2 X   X   L   L   L   X
Fila 3 L   L   L   X   L   L
Fila 4 L   X   L   L   L   L
Fila 5 L   L   L   L   L   L

L = Libre
X = Reservado

Funciones principales del sistema

  1. Inicializar la sala.
  2. Mostrar los asientos.
  3. Reservar un asiento.
  4. Cancelar una reserva.
  5. Contar asientos ocupados.
  6. Calcular porcentaje de ocupación.
  7. Calcular recaudación.
  8. Detectar la fila con más reservas.
  9. Mostrar estadísticas.
  10. Salir del sistema.

Código completo

SubProceso InicializarSala(sala, filas, columnas)
    Definir f, c Como Entero

    Para f <- 1 Hasta filas Hacer
        Para c <- 1 Hasta columnas Hacer
            sala[f,c] <- 0
        FinPara
    FinPara
FinSubProceso


SubProceso MostrarSala(sala, filas, columnas)
    Definir f, c Como Entero

    Escribir ""
    Escribir "       1   2   3   4   5   6"

    Para f <- 1 Hasta filas Hacer
        Escribir Sin Saltar "Fila ", f, " "

        Para c <- 1 Hasta columnas Hacer
            Si sala[f,c] = 0 Entonces
                Escribir Sin Saltar " L  "
            Sino
                Escribir Sin Saltar " X  "
            FinSi
        FinPara

        Escribir ""
    FinPara

    Escribir ""
    Escribir "L = Libre"
    Escribir "X = Reservado"
FinSubProceso


SubProceso ReservarAsiento(sala, filas, columnas)
    Definir fila, columna Como Entero

    Escribir "Ingrese fila:"
    Leer fila

    Escribir "Ingrese columna:"
    Leer columna

    Si fila >= 1 Y fila <= filas Y columna >= 1 Y columna <= columnas Entonces
        Si sala[fila,columna] = 0 Entonces
            sala[fila,columna] <- 1
            Escribir "Reserva realizada correctamente."
        Sino
            Escribir "Ese asiento ya se encuentra reservado."
        FinSi
    Sino
        Escribir "Fila o columna fuera de rango."
    FinSi
FinSubProceso


SubProceso CancelarReserva(sala, filas, columnas)
    Definir fila, columna Como Entero

    Escribir "Ingrese fila:"
    Leer fila

    Escribir "Ingrese columna:"
    Leer columna

    Si fila >= 1 Y fila <= filas Y columna >= 1 Y columna <= columnas Entonces
        Si sala[fila,columna] = 1 Entonces
            sala[fila,columna] <- 0
            Escribir "Reserva cancelada correctamente."
        Sino
            Escribir "Ese asiento ya se encuentra libre."
        FinSi
    Sino
        Escribir "Fila o columna fuera de rango."
    FinSi
FinSubProceso


SubProceso cantidad <- ContarReservados(sala, filas, columnas)
    Definir f, c Como Entero

    cantidad <- 0

    Para f <- 1 Hasta filas Hacer
        Para c <- 1 Hasta columnas Hacer
            Si sala[f,c] = 1 Entonces
                cantidad <- cantidad + 1
            FinSi
        FinPara
    FinPara
FinSubProceso


SubProceso filaMayor <- FilaMasOcupada(sala, filas, columnas)
    Definir f, c, cantidadFila, maximo Como Entero

    maximo <- -1
    filaMayor <- 1

    Para f <- 1 Hasta filas Hacer
        cantidadFila <- 0

        Para c <- 1 Hasta columnas Hacer
            Si sala[f,c] = 1 Entonces
                cantidadFila <- cantidadFila + 1
            FinSi
        FinPara

        Si cantidadFila > maximo Entonces
            maximo <- cantidadFila
            filaMayor <- f
        FinSi
    FinPara
FinSubProceso


SubProceso MostrarEstadisticas(sala, filas, columnas, precioEntrada)
    Definir reservados, totalAsientos, filaMayor Como Entero
    Definir porcentaje, recaudacion Como Real

    reservados <- ContarReservados(sala, filas, columnas)
    totalAsientos <- filas * columnas
    porcentaje <- reservados * 100 / totalAsientos
    recaudacion <- reservados * precioEntrada
    filaMayor <- FilaMasOcupada(sala, filas, columnas)

    Escribir ""
    Escribir "========== ESTADISTICAS =========="
    Escribir "Asientos reservados: ", reservados
    Escribir "Asientos libres: ", totalAsientos - reservados
    Escribir "Ocupacion: ", porcentaje, "%"
    Escribir "Recaudacion: $", recaudacion
    Escribir "Fila con mayor ocupacion: ", filaMayor
    Escribir "=================================="
FinSubProceso


Algoritmo SistemaReservasCine
    Definir sala, opcion Como Entero
    Definir filas, columnas Como Entero
    Definir precioEntrada Como Real
    Dimension sala[5,6]

    filas <- 5
    columnas <- 6
    precioEntrada <- 5000

    InicializarSala(sala, filas, columnas)

    Repetir
        Escribir ""
        Escribir "========================================"
        Escribir "          CLUB PROGRAMADOR CINE"
        Escribir "========================================"
        Escribir "Pelicula: Interestelar"
        Escribir "Funcion: 21:30"
        Escribir ""
        Escribir "1. Ver sala"
        Escribir "2. Reservar asiento"
        Escribir "3. Cancelar reserva"
        Escribir "4. Ver estadisticas"
        Escribir "5. Salir"
        Escribir ""
        Escribir "Seleccione una opcion:"
        Leer opcion

        Segun opcion Hacer
            1:
                MostrarSala(sala, filas, columnas)

            2:
                MostrarSala(sala, filas, columnas)
                ReservarAsiento(sala, filas, columnas)

            3:
                MostrarSala(sala, filas, columnas)
                CancelarReserva(sala, filas, columnas)

            4:
                MostrarEstadisticas(sala, filas, columnas, precioEntrada)

            5:
                Escribir "Gracias por utilizar Club Programador Cine."

            De Otro Modo:
                Escribir "Opcion invalida."
        FinSegun

    Hasta Que opcion = 5
FinAlgoritmo

1. Inicialización de la sala

Al comenzar el programa necesitamos asegurarnos de que todos los asientos estén libres. Para eso recorremos toda la matriz y colocamos 0 en cada posición.

Para f <- 1 Hasta filas Hacer
    Para c <- 1 Hasta columnas Hacer
        sala[f,c] <- 0
    FinPara
FinPara

Separar esta tarea en InicializarSala evita que el algoritmo principal tenga que conocer cómo se prepara internamente la matriz.

2. Mostrar la sala

El procedimiento MostrarSala recorre la matriz y transforma los valores internos en una representación más amigable:

  • 0 → asiento libre: L
  • 1 → asiento reservado: X

Así conseguimos una interfaz sencilla sin cambiar la forma en la que almacenamos los datos.

3. Reservar un asiento

Antes de modificar la matriz hacemos dos validaciones:

  1. que la fila y columna estén dentro del rango válido;
  2. que el asiento se encuentre libre.
Si sala[fila,columna] = 0 Entonces
    sala[fila,columna] <- 1
    Escribir "Reserva realizada correctamente."
Sino
    Escribir "Ese asiento ya se encuentra reservado."
FinSi

Esto impide que una misma butaca se reserve dos veces.

4. Cancelar una reserva

La cancelación realiza el proceso inverso. Si el asiento está reservado, vuelve a asignarse el valor 0.

Si sala[fila,columna] = 1 Entonces
    sala[fila,columna] <- 0
    Escribir "Reserva cancelada correctamente."
Sino
    Escribir "Ese asiento ya se encuentra libre."
FinSi

5. Contar asientos ocupados

La función ContarReservados recorre toda la sala y cuenta cuántos valores son iguales a 1.

Si sala[f,c] = 1 Entonces
    cantidad <- cantidad + 1
FinSi

Este único resultado luego nos permite calcular otros datos sin repetir el recorrido.

6. Porcentaje de ocupación

Conociendo la cantidad de reservas y el total de asientos:

porcentaje <- reservados * 100 / totalAsientos

En una sala de 30 lugares, si hay 15 reservas, la ocupación será del 50%.

7. Recaudación

En este ejemplo usamos un precio fijo de entrada:

precioEntrada <- 5000

La recaudación se obtiene multiplicando la cantidad de reservas por el precio:

recaudacion <- reservados * precioEntrada

Podés cambiar ese valor para probar distintos escenarios.

8. Fila con mayor ocupación

Para encontrar la fila con más reservas contamos los asientos ocupados de cada fila y conservamos el mayor valor encontrado.

Este patrón aparece constantemente en programación: recorrer un conjunto, calcular un valor parcial y comparar contra un máximo anterior.

9. Un algoritmo principal mucho más simple

Una de las partes más importantes del proyecto es observar cómo queda el algoritmo principal. En vez de contener cientos de instrucciones mezcladas, se limita a coordinar operaciones:

MostrarSala(sala, filas, columnas)
ReservarAsiento(sala, filas, columnas)
CancelarReserva(sala, filas, columnas)
MostrarEstadisticas(sala, filas, columnas, precioEntrada)

Esta es justamente la utilidad de separar complejidades: cada subproceso resuelve una parte concreta y el programa principal se ocupa del flujo general.

Ideas para ampliar el proyecto

Si querés convertir este ejercicio en un desafío todavía mayor, podés agregar:

  • varias películas;
  • varios horarios por película;
  • diferentes precios según el tipo de entrada;
  • nombres de clientes;
  • número de reserva;
  • asientos VIP;
  • descuentos para estudiantes;
  • una matriz diferente para cada función;
  • recaudación por película;
  • ranking de funciones con mayor ocupación;
  • impresión de un comprobante al finalizar la reserva.

Qué conceptos reúne este proyecto

Este sistema combina prácticamente todo el recorrido de PSeInt que desarrollamos en Club Programador:

  • variables y operadores;
  • condicionales;
  • ciclos;
  • matrices;
  • contadores y acumuladores;
  • búsqueda de máximos;
  • funciones y subprocesos;
  • validaciones;
  • menús interactivos;
  • modularización.

Seguí practicando PSeInt

Si todavía querés practicar algún tema antes de encarar este proyecto completo, podés recorrer nuestro hub de PSeInt, donde reunimos los ejercicios y guías del sitio en un orden recomendado.

También podés repasar los ejercicios con vectores, los ejercicios con matrices y nuestra guía de funciones y subprocesos.


¿Te sirvió este proyecto? ☕

Si este contenido te ayudó a estudiar, practicar o preparar un trabajo, podés apoyar a Club Programador. Tu aporte ayuda a mantener el sitio online y a seguir publicando ejercicios y proyectos gratuitos.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

20 ejercicios resueltos de PSeInt con matrices

20 ejercicios resueltos de PSeInt con matrices: recorridos, filas, columnas, diagonales, búsquedas, suma, transpuesta y más ejemplos explicados paso a paso.

Las matrices en PSeInt permiten organizar datos en filas y columnas. Son una extensión natural de los vectores y resultan muy útiles para practicar recorridos anidados, búsquedas, acumuladores y operaciones con datos bidimensionales.

En estos ejemplos usamos posiciones desde 1, manteniendo el mismo criterio utilizado en nuestros ejercicios de vectores.

Índice de ejercicios

  1. Cargar y mostrar una matriz 3×3
  2. Sumar todos los elementos
  3. Calcular el promedio de una matriz
  4. Encontrar el valor mayor
  5. Encontrar el valor menor
  6. Sumar una fila
  7. Sumar una columna
  8. Mostrar la diagonal principal
  9. Sumar la diagonal principal
  10. Mostrar la diagonal secundaria
  11. Contar números pares
  12. Contar positivos, negativos y ceros
  13. Buscar un valor en la matriz
  14. Copiar una matriz
  15. Multiplicar todos los elementos por un número
  16. Sumar dos matrices
  17. Comparar dos matrices
  18. Obtener la matriz transpuesta
  19. Encontrar la fila con mayor suma
  20. Crear una matriz identidad

1. Cargar y mostrar una matriz 3×3

Este ejercicio recorre una matriz primero para cargar sus valores y luego para mostrarlos por filas.

Algoritmo CargarMostrarMatriz
    Definir matriz, i, j Como Entero
    Dimension matriz[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir "Ingrese el valor [", i, ",", j, "]:"
            Leer matriz[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir Sin Saltar matriz[i,j], " "
        FinPara
        Escribir ""
    FinPara
FinAlgoritmo

2. Sumar todos los elementos

Usamos un acumulador para sumar cada elemento mientras recorremos todas las filas y columnas.

Algoritmo SumarMatriz
    Definir matriz, i, j, suma Como Entero
    Dimension matriz[3,3]
    suma <- 0

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
            suma <- suma + matriz[i,j]
        FinPara
    FinPara

    Escribir "La suma total es: ", suma
FinAlgoritmo

3. Calcular el promedio de una matriz

En una matriz 3×3 hay 9 elementos, por lo que dividimos la suma total por 9.

Algoritmo PromedioMatriz
    Definir matriz, i, j Como Entero
    Definir suma, promedio Como Real
    Dimension matriz[3,3]
    suma <- 0

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
            suma <- suma + matriz[i,j]
        FinPara
    FinPara

    promedio <- suma / 9
    Escribir "Promedio: ", promedio
FinAlgoritmo

4. Encontrar el valor mayor

Tomamos el primer elemento como referencia y lo comparamos con el resto.

Algoritmo MayorMatriz
    Definir matriz, i, j, mayor Como Entero
    Dimension matriz[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    mayor <- matriz[1,1]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Si matriz[i,j] > mayor Entonces
                mayor <- matriz[i,j]
            FinSi
        FinPara
    FinPara

    Escribir "El mayor es: ", mayor
FinAlgoritmo

5. Encontrar el valor menor

El procedimiento es similar al anterior, pero conservando el menor valor encontrado.

Algoritmo MenorMatriz
    Definir matriz, i, j, menor Como Entero
    Dimension matriz[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    menor <- matriz[1,1]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Si matriz[i,j] < menor Entonces
                menor <- matriz[i,j]
            FinSi
        FinPara
    FinPara

    Escribir "El menor es: ", menor
FinAlgoritmo

6. Sumar una fila

En este ejemplo sumamos todos los elementos de la segunda fila.

Algoritmo SumarFila
    Definir matriz, i, j, suma Como Entero
    Dimension matriz[3,3]
    suma <- 0

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    Para j <- 1 Hasta 3 Hacer
        suma <- suma + matriz[2,j]
    FinPara

    Escribir "Suma de la fila 2: ", suma
FinAlgoritmo

7. Sumar una columna

Ahora recorremos una columna fija; en este caso, la columna 2.

Algoritmo SumarColumna
    Definir matriz, i, j, suma Como Entero
    Dimension matriz[3,3]
    suma <- 0

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        suma <- suma + matriz[i,2]
    FinPara

    Escribir "Suma de la columna 2: ", suma
FinAlgoritmo

8. Mostrar la diagonal principal

En la diagonal principal coinciden el número de fila y el número de columna.

Algoritmo DiagonalPrincipal
    Definir matriz, i, j Como Entero
    Dimension matriz[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        Escribir matriz[i,i]
    FinPara
FinAlgoritmo

9. Sumar la diagonal principal

Sumamos los elementos ubicados en las posiciones [1,1], [2,2] y [3,3].

Algoritmo SumarDiagonalPrincipal
    Definir matriz, i, j, suma Como Entero
    Dimension matriz[3,3]
    suma <- 0

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        suma <- suma + matriz[i,i]
    FinPara

    Escribir "Suma diagonal principal: ", suma
FinAlgoritmo

10. Mostrar la diagonal secundaria

Para una matriz 3×3, las posiciones de la diagonal secundaria cumplen que columna = 4 – fila.

Algoritmo DiagonalSecundaria
    Definir matriz, i, j Como Entero
    Dimension matriz[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        Escribir matriz[i,4-i]
    FinPara
FinAlgoritmo

11. Contar números pares

Usamos MOD para comprobar qué elementos son divisibles por 2.

Algoritmo ContarParesMatriz
    Definir matriz, i, j, pares Como Entero
    Dimension matriz[3,3]
    pares <- 0

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]

            Si matriz[i,j] MOD 2 = 0 Entonces
                pares <- pares + 1
            FinSi
        FinPara
    FinPara

    Escribir "Cantidad de pares: ", pares
FinAlgoritmo

12. Contar positivos, negativos y ceros

Clasificamos cada elemento según sea mayor, menor o igual a cero.

Algoritmo ContarSignosMatriz
    Definir matriz, i, j, positivos, negativos, ceros Como Entero
    Dimension matriz[3,3]
    positivos <- 0
    negativos <- 0
    ceros <- 0

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]

            Si matriz[i,j] > 0 Entonces
                positivos <- positivos + 1
            Sino
                Si matriz[i,j] < 0 Entonces
                    negativos <- negativos + 1
                Sino
                    ceros <- ceros + 1
                FinSi
            FinSi
        FinPara
    FinPara

    Escribir "Positivos: ", positivos
    Escribir "Negativos: ", negativos
    Escribir "Ceros: ", ceros
FinAlgoritmo

13. Buscar un valor en la matriz

Recorremos todos los elementos y usamos una variable lógica para indicar si el valor fue encontrado.

Algoritmo BuscarEnMatriz
    Definir matriz, i, j, buscado Como Entero
    Definir encontrado Como Logico
    Dimension matriz[3,3]
    encontrado <- Falso

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    Escribir "Valor a buscar:"
    Leer buscado

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Si matriz[i,j] = buscado Entonces
                encontrado <- Verdadero
            FinSi
        FinPara
    FinPara

    Si encontrado Entonces
        Escribir "El valor se encuentra en la matriz"
    Sino
        Escribir "El valor no se encuentra en la matriz"
    FinSi
FinAlgoritmo

14. Copiar una matriz

Cada elemento de la matriz original se asigna a la misma posición de la matriz copia.

Algoritmo CopiarMatriz
    Definir original, copia, i, j Como Entero
    Dimension original[3,3]
    Dimension copia[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer original[i,j]
            copia[i,j] <- original[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir Sin Saltar copia[i,j], " "
        FinPara
        Escribir ""
    FinPara
FinAlgoritmo

15. Multiplicar todos los elementos por un número

Solicitamos un factor y lo aplicamos a cada posición de la matriz.

Algoritmo MultiplicarMatriz
    Definir matriz, i, j, factor Como Entero
    Dimension matriz[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    Escribir "Ingrese el factor:"
    Leer factor

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            matriz[i,j] <- matriz[i,j] * factor
            Escribir Sin Saltar matriz[i,j], " "
        FinPara
        Escribir ""
    FinPara
FinAlgoritmo

16. Sumar dos matrices

La suma se realiza posición por posición.

Algoritmo SumarDosMatrices
    Definir a, b, c, i, j Como Entero
    Dimension a[3,3]
    Dimension b[3,3]
    Dimension c[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir "A[", i, ",", j, "]:"
            Leer a[i,j]
            Escribir "B[", i, ",", j, "]:"
            Leer b[i,j]
            c[i,j] <- a[i,j] + b[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir Sin Saltar c[i,j], " "
        FinPara
        Escribir ""
    FinPara
FinAlgoritmo

17. Comparar dos matrices

Dos matrices son iguales si todos sus elementos coinciden en las mismas posiciones.

Algoritmo CompararMatrices
    Definir a, b, i, j Como Entero
    Definir iguales Como Logico
    Dimension a[3,3]
    Dimension b[3,3]
    iguales <- Verdadero

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer a[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer b[i,j]

            Si a[i,j] <> b[i,j] Entonces
                iguales <- Falso
            FinSi
        FinPara
    FinPara

    Si iguales Entonces
        Escribir "Las matrices son iguales"
    Sino
        Escribir "Las matrices son diferentes"
    FinSi
FinAlgoritmo

18. Obtener la matriz transpuesta

Para transponer una matriz intercambiamos filas por columnas.

Algoritmo MatrizTranspuesta
    Definir matriz, transpuesta, i, j Como Entero
    Dimension matriz[3,3]
    Dimension transpuesta[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
            transpuesta[j,i] <- matriz[i,j]
        FinPara
    FinPara

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir Sin Saltar transpuesta[i,j], " "
        FinPara
        Escribir ""
    FinPara
FinAlgoritmo

19. Encontrar la fila con mayor suma

Calculamos la suma de cada fila y conservamos el número de la fila que tenga el total más alto.

Algoritmo FilaMayorSuma
    Definir matriz, i, j, sumaFila, mayorSuma, filaMayor Como Entero
    Dimension matriz[3,3]

    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Leer matriz[i,j]
        FinPara
    FinPara

    mayorSuma <- 0
    filaMayor <- 1

    Para i <- 1 Hasta 3 Hacer
        sumaFila <- 0

        Para j <- 1 Hasta 3 Hacer
            sumaFila <- sumaFila + matriz[i,j]
        FinPara

        Si i = 1 O sumaFila > mayorSuma Entonces
            mayorSuma <- sumaFila
            filaMayor <- i
        FinSi
    FinPara

    Escribir "Fila con mayor suma: ", filaMayor
    Escribir "Suma: ", mayorSuma
FinAlgoritmo

20. Crear una matriz identidad

Una matriz identidad tiene 1 en la diagonal principal y 0 en todas las demás posiciones.

Algoritmo MatrizIdentidad
    Definir matriz, i, j Como Entero
    Dimension matriz[4,4]

    Para i <- 1 Hasta 4 Hacer
        Para j <- 1 Hasta 4 Hacer
            Si i = j Entonces
                matriz[i,j] <- 1
            Sino
                matriz[i,j] <- 0
            FinSi

            Escribir Sin Saltar matriz[i,j], " "
        FinPara
        Escribir ""
    FinPara
FinAlgoritmo

Seguí practicando PSeInt

Si todavía estás practicando estructuras básicas, podés continuar con PSeInt: ejemplos básicos resueltos, los 20 ejercicios de ciclos y condicionales o los 20 ejercicios resueltos con vectores.


¿Te sirvió este ejercicio? ☕

Si este contenido te ayudó, podés apoyar a Club Programador con el monto que quieras. Tu aporte ayuda a mantener estos ejercicios disponibles gratuitamente y a seguir publicando nuevos ejemplos.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

Funciones y subprocesos en PSeInt: ejemplos resueltos paso a paso

Aprendé a usar funciones y subprocesos en PSeInt para dividir problemas complejos, reutilizar código y organizar mejor tus algoritmos, con ejemplos resueltos paso a paso.

Cuando un programa empieza a crecer, intentar resolver todo dentro de un único algoritmo hace que el código sea más difícil de leer, probar y corregir. Una de las ideas más importantes de la programación es separar un problema complejo en problemas más pequeños.

En PSeInt podemos hacerlo mediante subprocesos. Un subproceso encapsula una tarea concreta para poder ejecutarla cuando la necesitemos. Si además devuelve un valor, cumple el papel de una función.

Dividir un programa en partes permite reducir la complejidad, reutilizar código, evitar repeticiones y localizar errores con mayor facilidad. En lugar de pensar en todo el problema al mismo tiempo, podemos resolver pequeñas tareas independientes y luego combinarlas.

¿Para qué sirven las funciones y subprocesos?

  • Separar responsabilidades: cada bloque resuelve una tarea concreta.
  • Reutilizar código: una misma operación puede utilizarse varias veces.
  • Evitar repeticiones: no necesitamos copiar las mismas instrucciones en distintos lugares.
  • Facilitar las pruebas: podemos comprobar cada parte por separado.
  • Mejorar la lectura: el algoritmo principal queda más corto y expresa mejor la lógica general.

Subproceso y función en PSeInt

Un subproceso puede recibir parámetros y ejecutar una serie de instrucciones. Cuando necesitamos obtener un resultado, podemos definir un valor de retorno:

SubProceso resultado <- NombreFuncion(parametros)
    // instrucciones
    resultado <- valor
FinSubProceso

También existen subprocesos que simplemente realizan una acción y no necesitan devolver ningún valor:

SubProceso MostrarMensaje()
    Escribir "Hola"
FinSubProceso

Índice de ejemplos

  1. Subproceso que muestra un saludo
  2. Función que suma dos números
  3. Función que determina si un número es par
  4. Función que devuelve el mayor de dos números
  5. Función para calcular un factorial
  6. Subproceso para cargar un vector
  7. Función para buscar un valor en un vector
  8. Programa dividido en varios subprocesos

1. Subproceso que muestra un saludo

Empezamos con el caso más simple: separar una acción que no necesita devolver ningún valor.

SubProceso Saludar()
    Escribir "Hola desde un subproceso"
FinSubProceso

Algoritmo EjemploSaludo
    Escribir "Inicio del programa"
    Saludar()
    Escribir "Fin del programa"
FinAlgoritmo

El algoritmo principal solamente indica qué quiere hacer. Los detalles de cómo se muestra el saludo quedan dentro de Saludar.

2. Función que suma dos números

Cuando necesitamos obtener un resultado, definimos una variable de retorno.

SubProceso resultado <- Sumar(a, b)
    resultado <- a + b
FinSubProceso

Algoritmo EjemploSuma
    Definir n1, n2, total Como Real

    Escribir "Ingrese el primer numero:"
    Leer n1

    Escribir "Ingrese el segundo numero:"
    Leer n2

    total <- Sumar(n1, n2)

    Escribir "Resultado: ", total
FinAlgoritmo

a y b son parámetros. La función recibe los valores, calcula la suma y devuelve el resultado al algoritmo principal.

3. Función que determina si un número es par

Una función también puede devolver un valor lógico.

SubProceso respuesta <- EsPar(numero)
    Si numero MOD 2 = 0 Entonces
        respuesta <- Verdadero
    Sino
        respuesta <- Falso
    FinSi
FinSubProceso

Algoritmo EjemploPar
    Definir numero Como Entero

    Escribir "Ingrese un numero:"
    Leer numero

    Si EsPar(numero) Entonces
        Escribir "El numero es par"
    Sino
        Escribir "El numero es impar"
    FinSi
FinAlgoritmo

El algoritmo principal ya no necesita conocer cómo se determina la paridad. Solo pregunta si EsPar(numero) devuelve verdadero o falso.

4. Función que devuelve el mayor de dos números

SubProceso mayor <- ObtenerMayor(a, b)
    Si a > b Entonces
        mayor <- a
    Sino
        mayor <- b
    FinSi
FinSubProceso

Algoritmo EjemploMayor
    Definir n1, n2 Como Real

    Escribir "Ingrese dos numeros:"
    Leer n1
    Leer n2

    Escribir "El mayor es: ", ObtenerMayor(n1, n2)
FinAlgoritmo

Una ventaja de esta separación es que ObtenerMayor puede utilizarse muchas veces sin repetir la comparación.

5. Función para calcular un factorial

SubProceso resultado <- Factorial(numero)
    Definir i Como Entero

    resultado <- 1

    Para i <- 1 Hasta numero Hacer
        resultado <- resultado * i
    FinPara
FinSubProceso

Algoritmo EjemploFactorial
    Definir numero, resultado Como Entero

    Escribir "Ingrese un numero entero no negativo:"
    Leer numero

    Si numero >= 0 Entonces
        resultado <- Factorial(numero)
        Escribir "Factorial: ", resultado
    Sino
        Escribir "El numero debe ser mayor o igual a cero"
    FinSi
FinAlgoritmo

La validación queda en el algoritmo principal y el cálculo específico se delega a la función Factorial.

6. Subproceso para cargar un vector

Los subprocesos son especialmente útiles cuando trabajamos con vectores. En este ejemplo separamos la carga de datos del resto del programa.

SubProceso CargarVector(numeros, cantidad)
    Definir i Como Entero

    Para i <- 1 Hasta cantidad Hacer
        Escribir "Ingrese el valor ", i, ":"
        Leer numeros[i]
    FinPara
FinSubProceso

Algoritmo EjemploCargaVector
    Definir numeros Como Entero
    Dimension numeros[5]

    CargarVector(numeros, 5)

    Escribir "Vector cargado correctamente"
FinAlgoritmo

Mantenemos la convención utilizada en los demás ejercicios del sitio: las posiciones del vector comienzan en 1.

7. Función para buscar un valor en un vector

Podemos aislar la lógica de búsqueda para que el algoritmo principal no tenga que recorrer el vector directamente.

SubProceso posicion <- BuscarValor(numeros, cantidad, buscado)
    Definir i Como Entero
    Definir encontrado Como Logico

    i <- 1
    encontrado <- Falso
    posicion <- -1

    Mientras i <= cantidad Y NO encontrado Hacer
        Si numeros[i] = buscado Entonces
            encontrado <- Verdadero
            posicion <- i
        Sino
            i <- i + 1
        FinSi
    FinMientras
FinSubProceso

Algoritmo EjemploBusqueda
    Definir numeros, buscado, posicion Como Entero
    Dimension numeros[5]

    numeros[1] <- 10
    numeros[2] <- 20
    numeros[3] <- 30
    numeros[4] <- 40
    numeros[5] <- 50

    Escribir "Ingrese el valor a buscar:"
    Leer buscado

    posicion <- BuscarValor(numeros, 5, buscado)

    Si posicion <> -1 Entonces
        Escribir "Encontrado en la posicion ", posicion
    Sino
        Escribir "El valor no se encuentra en el vector"
    FinSi
FinAlgoritmo

En este caso usamos -1 como valor de retorno para indicar que el elemento no fue encontrado. Como las posiciones válidas del vector van de 1 a 5, no existe ambigüedad con un índice real.

8. Programa dividido en varios subprocesos

La ventaja se vuelve más evidente cuando varias tareas se combinan. El algoritmo principal puede quedar reducido a una secuencia de operaciones de alto nivel.

SubProceso CargarVector(numeros, cantidad)
    Definir i Como Entero

    Para i <- 1 Hasta cantidad Hacer
        Escribir "Ingrese el valor ", i, ":"
        Leer numeros[i]
    FinPara
FinSubProceso

SubProceso MostrarVector(numeros, cantidad)
    Definir i Como Entero

    Para i <- 1 Hasta cantidad Hacer
        Escribir numeros[i]
    FinPara
FinSubProceso

SubProceso suma <- SumarVector(numeros, cantidad)
    Definir i Como Entero

    suma <- 0

    Para i <- 1 Hasta cantidad Hacer
        suma <- suma + numeros[i]
    FinPara
FinSubProceso

Algoritmo ProgramaModular
    Definir numeros Como Entero
    Dimension numeros[5]

    CargarVector(numeros, 5)

    Escribir "Valores cargados:"
    MostrarVector(numeros, 5)

    Escribir "Suma total: ", SumarVector(numeros, 5)
FinAlgoritmo

El algoritmo principal ahora expresa claramente tres operaciones: cargar, mostrar y sumar. Cada una tiene su propia implementación.

Variables locales y parámetros

Las variables declaradas dentro de un subproceso se utilizan para resolver esa tarea concreta. Esto ayuda a evitar que todos los datos del programa estén mezclados en un único lugar.

Los parámetros permiten enviar información desde el algoritmo principal hacia el subproceso. De esta manera una misma función puede trabajar con valores diferentes cada vez que se la invoca.

¿Cuándo conviene separar un problema?

No hace falta crear una función para cada línea de código. Conviene modularizar cuando una tarea:

  • tiene una responsabilidad claramente identificable;
  • se utiliza más de una vez;
  • requiere varias instrucciones y complica el algoritmo principal;
  • puede probarse de forma independiente;
  • representa una operación con un nombre claro, como BuscarValor, CalcularPromedio o OrdenarVector.

La idea central es que el algoritmo principal muestre la estructura general del problema, mientras que cada subproceso se ocupa de los detalles de una parte específica.

Seguí practicando PSeInt

Para seguir practicando, podés consultar los 20 ejercicios resueltos de PSeInt con vectores, los 20 ejercicios de ciclos y condicionales y los ejercicios básicos resueltos en PSeInt.


¿Te sirvió este contenido? ☕

Si esta guía te ayudó, podés apoyar a Club Programador con el monto que quieras. Tu aporte ayuda a mantener el contenido gratuito y a seguir publicando nuevos ejercicios.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal

5 algoritmos de búsqueda y ordenamiento en PSeInt

5 algoritmos de búsqueda y ordenamiento en PSeInt con vectores: búsqueda secuencial, binaria, burbuja, selección e inserción, explicados paso a paso.

Los algoritmos de búsqueda y ordenamiento en PSeInt son una excelente forma de practicar vectores, ciclos, condicionales y comparaciones. En esta guía vemos cinco métodos clásicos aplicados sobre vectores usando posiciones desde 1.

Antes de comenzar, si necesitás repasar vectores, podés ver nuestros 20 ejercicios resueltos de PSeInt con vectores.

Índice

  1. Búsqueda secuencial
  2. Búsqueda binaria
  3. Ordenamiento burbuja
  4. Ordenamiento por selección
  5. Ordenamiento por inserción

1. Búsqueda secuencial

La búsqueda secuencial recorre el vector desde el primer elemento hasta encontrar el valor buscado o llegar al final. Es simple y funciona aunque el vector no esté ordenado.

Algoritmo BusquedaSecuencial
    Definir numeros, i, buscado, posicion Como Entero
    Definir encontrado Como Logico
    Dimension numeros[5]

    Para i <- 1 Hasta 5 Hacer
        Escribir "Ingrese el valor ", i, ":"
        Leer numeros[i]
    FinPara

    Escribir "Ingrese el valor a buscar:"
    Leer buscado

    encontrado <- Falso
    posicion <- 1

    Mientras posicion <= 5 Y NO encontrado Hacer
        Si numeros[posicion] = buscado Entonces
            encontrado <- Verdadero
        Sino
            posicion <- posicion + 1
        FinSi
    FinMientras

    Si encontrado Entonces
        Escribir "Valor encontrado en la posicion ", posicion
    Sino
        Escribir "El valor no se encuentra en el vector"
    FinSi
FinAlgoritmo

Ventaja: no necesita que los datos estén ordenados.

Desventaja: en el peor caso debe recorrer todo el vector.

2. Búsqueda binaria

La búsqueda binaria es más eficiente, pero requiere que el vector esté ordenado. En cada paso compara el valor buscado con el elemento central y descarta la mitad del vector.

Algoritmo BusquedaBinaria
    Definir numeros, buscado, izquierda, derecha, medio, posicion Como Entero
    Definir encontrado Como Logico
    Dimension numeros[8]

    numeros[1] <- 2
    numeros[2] <- 5
    numeros[3] <- 8
    numeros[4] <- 12
    numeros[5] <- 16
    numeros[6] <- 20
    numeros[7] <- 25
    numeros[8] <- 30

    Escribir "Ingrese el valor a buscar:"
    Leer buscado

    izquierda <- 1
    derecha <- 8
    encontrado <- Falso

    Mientras izquierda <= derecha Y encontrado = Falso Hacer
        medio <- Trunc((izquierda + derecha) / 2)

        Si numeros[medio] = buscado Entonces
            encontrado <- Verdadero
            posicion <- medio
        Sino
            Si buscado < numeros[medio] Entonces
                derecha <- medio - 1
            Sino
                izquierda <- medio + 1
            FinSi
        FinSi
    FinMientras

    Si encontrado Entonces
        Escribir "Valor encontrado en la posicion ", posicion
    Sino
        Escribir "El valor no se encuentra en el vector"
    FinSi
FinAlgoritmo

Importante: si el vector no está ordenado, la búsqueda binaria no garantiza un resultado correcto.

3. Ordenamiento burbuja

El método burbuja compara elementos vecinos y los intercambia cuando están en el orden incorrecto. Después de cada pasada, los valores mayores van quedando al final del vector.

Algoritmo OrdenamientoBurbuja
    Definir numeros, i, j, auxiliar Como Entero
    Dimension numeros[5]

    Para i <- 1 Hasta 5 Hacer
        Escribir "Ingrese el valor ", i, ":"
        Leer numeros[i]
    FinPara

    Para i <- 1 Hasta 4 Hacer
        Para j <- 1 Hasta 5 - i Hacer
            Si numeros[j] > numeros[j+1] Entonces
                auxiliar <- numeros[j]
                numeros[j] <- numeros[j+1]
                numeros[j+1] <- auxiliar
            FinSi
        FinPara
    FinPara

    Escribir "Vector ordenado:"

    Para i <- 1 Hasta 5 Hacer
        Escribir numeros[i]
    FinPara
FinAlgoritmo

Es uno de los métodos más fáciles de comprender, aunque no suele ser la mejor opción para grandes cantidades de datos.

4. Ordenamiento por selección

El método de selección busca el menor valor de la parte no ordenada del vector y lo coloca en la posición correspondiente.

Algoritmo OrdenamientoSeleccion
    Definir numeros, i, j, posicionMenor, auxiliar Como Entero
    Dimension numeros[5]

    Para i <- 1 Hasta 5 Hacer
        Escribir "Ingrese el valor ", i, ":"
        Leer numeros[i]
    FinPara

    Para i <- 1 Hasta 4 Hacer
        posicionMenor <- i

        Para j <- i + 1 Hasta 5 Hacer
            Si numeros[j] < numeros[posicionMenor] Entonces
                posicionMenor <- j
            FinSi
        FinPara

        Si posicionMenor <> i Entonces
            auxiliar <- numeros[i]
            numeros[i] <- numeros[posicionMenor]
            numeros[posicionMenor] <- auxiliar
        FinSi
    FinPara

    Escribir "Vector ordenado:"

    Para i <- 1 Hasta 5 Hacer
        Escribir numeros[i]
    FinPara
FinAlgoritmo

Selección realiza menos intercambios que burbuja, aunque igualmente requiere muchas comparaciones.

5. Ordenamiento por inserción

El método de inserción toma cada elemento y lo coloca en la posición correcta dentro de la parte del vector que ya está ordenada.

Algoritmo OrdenamientoInsercion
    Definir numeros, i, j, actual Como Entero
    Dimension numeros[5]

    Para i <- 1 Hasta 5 Hacer
        Escribir "Ingrese el valor ", i, ":"
        Leer numeros[i]
    FinPara

    Para i <- 2 Hasta 5 Hacer
        actual <- numeros[i]
        j <- i - 1

        Mientras j >= 1 Y numeros[j] > actual Hacer
            numeros[j+1] <- numeros[j]
            j <- j - 1
        FinMientras

        numeros[j+1] <- actual
    FinPara

    Escribir "Vector ordenado:"

    Para i <- 1 Hasta 5 Hacer
        Escribir numeros[i]
    FinPara
FinAlgoritmo

Inserción suele funcionar muy bien cuando el vector es pequeño o ya está casi ordenado.

Comparación rápida

Algoritmo Tipo Requiere datos ordenados Idea principal
Búsqueda secuencial Búsqueda No Recorrer elemento por elemento
Búsqueda binaria Búsqueda Sí Dividir el rango de búsqueda a la mitad
Burbuja Ordenamiento No Comparar elementos vecinos
Selección Ordenamiento No Buscar el menor y colocarlo en su posición
Inserción Ordenamiento No Insertar cada elemento en la parte ya ordenada

¿Cuál conviene usar?

Para aprender lógica de programación, los cinco métodos son muy útiles. La búsqueda secuencial es la más simple para empezar. Si los datos ya están ordenados, la búsqueda binaria permite encontrar valores mucho más rápido. Entre los métodos de ordenamiento, burbuja es el más fácil de visualizar, mientras que selección e inserción permiten practicar otras estrategias de recorrido e intercambio.

Seguí practicando PSeInt

También podés practicar con nuestros 20 ejercicios de vectores, los 20 ejercicios de ciclos y condicionales y los ejercicios básicos resueltos en PSeInt.


¿Te sirvió este contenido? ☕

Si esta guía te ayudó, podés apoyar a Club Programador con el monto que quieras. Tu aporte ayuda a mantener el contenido gratuito y a seguir publicando nuevos ejercicios.

🇦🇷 Apoyar desde Argentina

☕ Invitame un café con Mercado Pago

🌎 Apoyar desde otro país

☕ Apoyar con PayPal