MAT281 - Laboratorio N°01: Fundamentos de Python¶
Objetivos del laboratorio¶
- Dominar los tipos de datos basicos y las operaciones fundamentales de Python.
- Aplicar estructuras de control de flujo: condicionales y ciclos (
if,for,while). - Definir y reutilizar funciones para resolver problemas matematicos clasicos.
- Manipular las estructuras de datos nativas: listas, tuplas, diccionarios y conjuntos.
- Desarrollar pensamiento algoritmico y un estilo de codigo limpio y legible.
Instrucciones¶
Lea con atencion cada problema antes de resolverlo. Reemplace cada celda que contiene # FIXME con su propia solucion y, cuando se solicite, responda las preguntas en celdas de texto.
Nota: Puede apoyarse en asistentes virtuales (ChatGPT, Gemini, Claude) o en el autocompletado de Colab, pero asegurese de entender cada linea de codigo que entregue.
Este laboratorio solo usa Python puro (sin librerias externas).
Problema 01 — Calentamiento: tipos y operadores¶
Python distingue entre enteros (int), flotantes (float), cadenas (str) y
booleanos (bool). Antes de programar algoritmos, conviene dominar las
operaciones basicas.
Tu tarea: dada una temperatura en grados Celsius, escribe el codigo que:
- Convierta el valor a grados Fahrenheit usando la formula $F = \tfrac{9}{5}\,C + 32$.
- Convierta el valor a grados Kelvin ($K = C + 273.15$).
- Imprima un mensaje del estilo:
"25°C equivalen a 77.0°F y 298.15 K"usando f-strings.
celsius = 25
# FIXME
Problema 02 — Condicionales: clasificador de números¶
Tu tarea: escribe una funcion clasificar(n) que reciba un numero entero n
y retorne una cadena segun las siguientes reglas (evaluadas en orden):
"cero"sines 0."negativo par"/"negativo impar"sin < 0."positivo par"/"positivo impar"sin > 0.
Prueba tu funcion con los valores: 0, -4, -7, 10, 13.
def clasificar(n):
# FIXME
pass
for n in [0, -4, -7, 10, 13]:
print(n, '->', clasificar(n))
Problema 03 — Ciclos y series: aproximando $\pi$¶
La serie de Leibniz permite aproximar $\pi$:
$$ \pi = 4 \sum_{k=1}^{\infty} \frac{(-1)^{k+1}}{2k-1} = 4\left(1 - \tfrac{1}{3} + \tfrac{1}{5} - \tfrac{1}{7} + \cdots\right) $$
Tu tarea: implementa aproximar_pi(n_terminos) que sume los primeros
n_terminos de la serie y retorne la aproximacion. Compara el resultado para
n_terminos = 10, 100, 1000, 100000 con el valor real (puedes usar
3.141592653589793).
def aproximar_pi(n_terminos):
# FIXME
pass
for n in [10, 100, 1000, 100000]:
print(f'n={n:>6} -> {aproximar_pi(n)}')
Problema 04 — Funciones y números primos¶
Un numero natural $p > 1$ es primo si solo es divisible por 1 y por si mismo.
Tu tarea:
- Implementa
es_primo(n)que retorneTrue/False. - Usando la funcion anterior, construye una lista con todos los primos menores o iguales a 50.
Pista: basta probar divisores hasta $\sqrt{n}$.
def es_primo(n):
# FIXME
pass
primos = [] # FIXME
print(primos)
Problema 05 — Estructuras de datos: conteo de palabras¶
Las estructuras nativas de Python (listas, diccionarios, conjuntos) son la base para manipular informacion.
Tu tarea: dada la frase de abajo:
- Cuenta cuantas veces aparece cada palabra (usa un diccionario). Ignora mayusculas/minusculas.
- Imprime el conjunto de palabras unicas ordenadas alfabeticamente.
- Reporta la palabra mas frecuente.
frase = ("el perro y el gato y el raton "
"el gato come y el perro corre")
# FIXME
Problema 06 — Desafio integrador: FizzBuzz extendido¶
Tu tarea: escribe fizzbuzz(n) que, para los enteros de 1 a n, retorne una
lista donde cada elemento sea:
"FizzBuzz"si el numero es divisible por 3 y por 5."Fizz"si es divisible solo por 3."Buzz"si es divisible solo por 5.- el numero (como entero) en cualquier otro caso.
Luego responde en una celda de texto: ¿cuantos "Fizz", "Buzz" y "FizzBuzz"
hay entre 1 y 100?
def fizzbuzz(n):
# FIXME
pass
print(fizzbuzz(20))
Respuesta (Problema 06): (escribe aqui tu conteo)