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
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.
?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.
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: LauraLaura 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ón | Ejemplo | Resultado | Cuidado con |
|---|---|---|---|
| texto a entero | int("25") | 25 | int("2.5") falla: primero float |
| texto a decimal | float("19.9") | 19.9 | la coma decimal "19,9" falla |
| decimal a entero | int(7.9) | 7 | trunca, no redondea: usa round() |
| número a texto | str(100) | "100" | necesario para concatenar con + |
| a booleano | bool(""), bool(0) | False | cualquier 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 |.
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.00IVA: $47,500.00Total: $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.
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.
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.
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.
En el laboratorio 2 estas clases se combinan con listas, diccionarios y estructuras propias como pilas, colas y árboles.