SIN · Sintaxis 4 · Control de flujo

17.Selección múltiple

Elegir entre muchas opciones según el valor de una variable: Segun en PSeInt y match / case (o if / elif) en Python.

¿Qué es?

La selección múltiple elige un camino entre muchos según el valor de una variable. Es lo que hace un menú: «1 para consultar saldo, 2 para depositar, 3 para salir».

Podría hacerse con muchos if / elif, pero cuando todas las preguntas son sobre la misma variable («¿es 1?, ¿es 2?, ¿es 3?»), la selección múltiple es más clara.

PSeInt Python
Estructura Segun variable Hacer … FinSegun match variable: (Python 3.10 o posterior)
Un caso 1: case 1:
Varios valores 6, 7: case 6 | 7:
Por defecto De Otro Modo: case _:

Sintaxis (pseudocódigo / Python)

Día de la semana a partir de un número.

PSeInt

Algoritmo DiaSemana
	Definir dia Como Entero
	Escribir "Número de día (1 a 7):"
	Leer dia
	Segun dia Hacer
		1:
			Escribir "Lunes"
		2:
			Escribir "Martes"
		3:
			Escribir "Miércoles"
		4:
			Escribir "Jueves"
		5:
			Escribir "Viernes"
		6, 7:
			Escribir "Fin de semana"
		De Otro Modo:
			Escribir "Número no válido"
	FinSegun
FinAlgoritmo

Python (con match)

dia = int(input("Número de día (1 a 7): "))
match dia:
    case 1:
        print("Lunes")
    case 2:
        print("Martes")
    case 3:
        print("Miércoles")
    case 4:
        print("Jueves")
    case 5:
        print("Viernes")
    case 6 | 7:
        print("Fin de semana")
    case _:
        print("Número no válido")

Python (con if / elif)

dia = int(input("Número de día (1 a 7): "))
if dia == 1:
    print("Lunes")
elif dia in (2, 3, 4, 5):
    print("Entre semana")
elif dia in (6, 7):
    print("Fin de semana")
else:
    print("Número no válido")

Ejemplo guiado

Problema: una calculadora con menú.

a = float(input("Primer número: "))
b = float(input("Segundo número: "))
print("1) Sumar  2) Restar  3) Multiplicar  4) Dividir")
opcion = input("Opción: ")

match opcion:
    case "1":
        print("Resultado:", a + b)
    case "2":
        print("Resultado:", a - b)
    case "3":
        print("Resultado:", a * b)
    case "4":
        if b == 0:
            print("No se puede dividir entre cero")
        else:
            print("Resultado:", a / b)
    case _:
        print("Opción no válida")

Salida esperada (con 12, 4 y opción 4):

Primer número: 12
Segundo número: 4
1) Sumar  2) Restar  3) Multiplicar  4) Dividir
Opción: 4
Resultado: 3.0

La opción se compara como texto ("1"), porque viene de input() sin convertir.

Errores comunes

# ✗ Error lógico: opcion es texto, nunca coincide con el número 1
opcion = "1"   # así llega desde input()
match opcion:
    case 1:
        print("Sumar")
    case _:
        print("Opción no válida")   # siempre entra aquí

Buenas prácticas

  • Usa selección múltiple cuando todas las opciones dependan de una sola variable.
  • Ordena los casos de forma lógica (por número o frecuencia).
  • Muestra el menú antes de pedir la opción.
  • Para muchas opciones con datos, considera un diccionario en lugar de un match gigante.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

Antes conviene ver…

© solutions_ · Fundamentos de programación · 17 Selección múltiple