pyLaboratorio 1: Iniciación a Python
Programación III, laboratorio 1 de 3

Iniciación a Python

Ya programas en Java. Aquí vas a traducir lo que sabes a Python, escribir código real y ejecutarlo en esta misma página. Cada módulo cierra con un reto que el laboratorio verifica por ti.

  • Variables y tipos
  • Conversión de datos
  • Condicionales y match
  • Ciclos while y for
  • Funciones
  • Excepciones
  • Módulos
  • Primeras clases
Cómo se usa este laboratorio

Los recuadros oscuros con el botón ▶ Ejecutar son editores reales: cambia el código y ejecútalo (también con Ctrl + Enter). La primera ejecución descarga Python al navegador y tarda unos segundos; las siguientes son inmediatas. Tus cambios en los retos se guardan en este equipo.

Este archivo es a la vez guía del estudiante y guía docente. El modo docente se activa abriendo la página con ?modo=docente al final de la dirección y se desactiva con ?modo=estudiante. Es un ocultamiento visual, no una protección: un estudiante con conocimientos puede ver las soluciones en el código fuente. Para evaluaciones, usa retos nuevos.

Primer programa y variables

En Python no se declara el tipo: la variable toma el tipo del valor que le asignas. No hay punto y coma, ni llaves, ni método main obligatorio. La indentación (4 espacios) reemplaza a las llaves.

Prueba el tipado dinámico: la misma variable puede cambiar de tipo, y type() te dice cuál tiene en cada momento.

Diferencia clave con Java

Java comprueba los tipos al compilar; Python los comprueba al ejecutar. Por eso en Python un error de tipo aparece solo cuando esa línea corre. Las convenciones de nombres también cambian: snake_case para variables y funciones, PascalCase para clases, MAYUSCULAS para constantes.

Tarjeta de presentación

Crea las variables nombre = "Laura", programa = "Ingeniería de Sistemas" y semestre = 5. Imprime exactamente estas dos líneas usando f-strings:

Estudiante: Laura
Laura cursa 5 semestre de Ingeniería de Sistemas

Tipos de datos y conversión

Los tipos básicos son int, float, str, bool y None (el equivalente a null). La conversión es explícita con funciones que llevan el nombre del tipo. Todo lo que llega por input() es texto: si necesitas un número, conviértelo.

ConversiónEjemploResultadoCuidado con
texto a enteroint("25")25int("2.5") falla: primero float
texto a decimalfloat("19.9")19.9la coma decimal "19,9" falla
decimal a enteroint(7.9)7trunca, no redondea: usa round()
número a textostr(100)"100"necesario para concatenar con +
a booleanobool(""), bool(0)Falsecualquier texto no vacío es True, incluso "False"

En este editor, lo que el usuario "escribiría" en el teclado va en la barra de datos, separado por |.

Error típico

edad = input("Edad: ") seguido de edad + 5 produce TypeError, porque intenta sumar texto y número. Cámbialo en el editor y observa el mensaje: aprender a leer errores es parte del laboratorio.

Calculadora de IVA

Lee el precio base de un producto (texto) y calcula el IVA del 19 % y el total. Con la entrada 250000, después de la línea de la pregunta, la salida debe ser exactamente:

Base: $250,000.00
IVA: $47,500.00
Total: $297,500.00

Pista: el formato {valor:,.2f} agrega separador de miles y dos decimales.

Aprovecha para hablar del error de coma flotante: 0.1 + 0.2 no es 0.3. En software contable real se usa decimal.Decimal, tema que retoma el laboratorio 3.

Operadores

Casi todos son iguales a Java. Las diferencias importantes: / siempre da decimal, // es la división entera, ** es la potencia y los lógicos se escriben con palabras (and, or, not). Además, Python permite encadenar comparaciones.

Lo que no existe en Python

No hay ++ ni --, ni operador ternario ?:. El ternario se escribe "par" if n % 2 == 0 else "impar".

Conversor de minutos

Dada la variable total = 1000 (minutos), usa // y % para imprimir: 1000 minutos = 16 horas y 40 minutos

Cadenas de texto

Las cadenas son inmutables y se pueden recorrer como listas de caracteres. El "slicing" texto[inicio:fin:paso] extrae partes sin ciclos.

Código de producto

Con producto = "teclado mecánico rgb", genera un código con las 3 primeras letras en mayúscula, un guion y la longitud del nombre. Salida esperada: TEC-20

Condicionales if, elif, else

La condición no lleva paréntesis y el bloque se abre con dos puntos. elif reemplaza al else if de Java.

Escala de desempeño

Clasifica cada nota de la lista con la escala nacional: Superior (4.6 a 5.0), Alto (4.0 a 4.5), Básico (3.0 a 3.9), Bajo (1.0 a 2.9). Si la nota está fuera de 1.0 a 5.0 imprime Nota inválida. La salida esperada tiene el formato 4.8: Superior.

Pregunta para la clase: ¿qué pasa con 4.55? Ninguna franja de la escala la cubre si se leen los rangos literalmente. Sirve para discutir por qué se comparan umbrales (>=) y no rangos cerrados.

Selección múltiple con match

Desde Python 3.10 existe match, el equivalente al switch de Java, pero más potente: compara patrones, no solo valores, y no necesita break.

Este menú C, R, U, D es exactamente el que usarás para el CRUD del laboratorio 3.

Día hábil

Escribe una función tipo_dia(dia) con match que devuelva Hábil de lunes a viernes, Fin de semana para sábado y domingo, y Día desconocido en otro caso. Imprime el resultado para "lunes", "domingo" y "feriado".

Ciclo while

Repite mientras la condición sea verdadera. Úsalo cuando no sabes cuántas vueltas darás: validar datos, menús, lectura hasta un centinela. Python no tiene do-while; se imita con while True y break.

Ahorro programado

Un estudiante ahorra $50.000 el primer mes y cada mes ahorra $10.000 más que el anterior. Con while, calcula en cuántos meses llega a $1.000.000 o más. Salida esperada: Meses necesarios: 11 y Ahorro acumulado: $1,100,000

Ciclo for, range, enumerate y zip

El for de Python recorre colecciones directamente, como el for-each de Java. Para contar se usa range(inicio, fin, paso), donde fin no se incluye.

Factura sencilla

Con las listas items y cantidades y precios, imprime cada subtotal con el formato Arroz x 2 = 8400 y al final TOTAL = 53400.

El reto obliga a notar que 3 × 10833.33 = 32499.99. Buen momento para discutir redondeo por línea frente a redondeo del total, un problema real en facturación electrónica.

Funciones

Se definen con def. Pueden tener valores por defecto, recibir argumentos por nombre, devolver varios valores a la vez y documentarse con un docstring. Las anotaciones de tipo (-> float) son opcionales: documentan, pero Python no las obliga.

Sin sobrecarga

Python no permite dos funciones con el mismo nombre y distintos parámetros, como en Java. Los valores por defecto, *args y **kwargs cumplen ese papel.

Liquidación de nómina básica

Escribe liquidar(salario, dias=30) que devuelva tres valores: el devengado proporcional a los días, la deducción de salud (4 %) y la de pensión (4 %). Luego imprime el neto para un salario de 2.000.000 con 15 días: Neto a pagar: $920,000

Manejo de errores

La estructura es try / except / else / finally. El bloque else corre solo si no hubo error. Con raise lanzas tus propias excepciones para proteger reglas del negocio.

Conversión segura

Escribe a_numero(texto) que convierta con float() y, si falla, devuelva 0.0. Suma los valores de la lista y muestra Suma válida: 350.5

Módulos y organización del proyecto

Cada archivo .py es un módulo. Se reutiliza con import. La biblioteca estándar trae cientos de módulos listos; los externos se instalan con pip (por ejemplo, pip install mysql-connector-python para el laboratorio 3).

Así se organiza un proyecto real en varios archivos. La línea if __name__ == "__main__": hace que el bloque solo corra cuando ejecutas ese archivo directamente, no cuando otro lo importa. Es el equivalente práctico del main de Java.

Primeras clases: de Java a Python

Este es el puente hacia los laboratorios 2 y 3. El constructor se llama __init__, self equivale a this y se escribe siempre como primer parámetro. No hay private: por convención, un guion bajo inicial indica "uso interno", y @property reemplaza a los getters y setters.

Clase Empleado

Crea la clase Empleado con nombre y salario, un método aumentar(porcentaje) y __str__ que devuelva Pedro gana $2,200,000. Crea un empleado con 2.000.000, auméntale 10 % e imprímelo.

Siguiente paso

En el laboratorio 2 estas clases se combinan con listas, diccionarios y estructuras propias como pilas, colas y árboles.