'a' in 'hola'
True
return
.print
.input
.input
. En todo caso, hacer que la función reciba el o los datos por parámetro.La materia usa Discord como plataforma adicional para la resolución de los ejercicios de las guías.
Tengan a bien leer con atención el mensaje de bienvenida y las reglas de convivencia. Pueden ingresar al servidor a través del siguiente link.
En esta guía nos dedicaremos a introducirnos en los conceptos de programación y algoritmo. Para los primeros seis ejercicios, te recomendamos ver este video para recordar cómo entiende la computadora nuestras instrucciones.
Se tiene que explicar a una máquina exactamente cómo servir un vaso de jugo (de los que vienen en cartón) de la heladera. Recordando la definición de algoritmo, hacer una descripción paso a paso de lo que se tiene que hacer y usar para lograr el objetivo. Pista: No vas a necesitar nada de código en este ejercicio, sólo nombrar los pasos.
Se tiene que explicar a una máquina exactamente cómo hacer una tostada con queso, pensá qué ingredientes se necesitan con sus cantidades, cómo tiene que ser el espacio de trabajo y los elementos que va a necesitar usar. Recordando la definición de algoritmo, hacer una descripción paso a paso de lo que se tiene que hacer y usar para hacer una tostada con queso. Pista: No vas a necesitar nada de código en este ejercicio, sólo nombrar los pasos.
Se te pide que organices una colecta de alimentos no perecederos por la Ciudad de Buenos Aires. Contamos con algunos automóviles y camionetas de voluntarios, un listado de donaciones, listado de los alimentos a donar, la disponibilidad horaria y la dirección en la cual se dejan los alimentos. La colecta se realiza en un solo día. ¿Cómo la organizarías? Pista: No vas a necesitar nada de código en este ejercicio, sólo nombrar los pasos.
Tenés que enviar invitaciones personalizadas para tu cumpleaños. Cada invitación tiene que mencionar el nombre de la persona y la cantidad de invitados adicionales con los que puede venir. Contamos con una impresora a la que le das el texto a enviar, un listado con los nombres de los invitados y los invitados adicionales que pueden ellos traer. ¿Cómo redactarías el texto de la invitación? Pista: No vas a necesitar nada de código en este ejercicio, sólo nombrar los pasos.
Se te encargó definir qué datos son necesarios para el registro de estudiantes en un curso de inglés. ¿Qué datos crees que deberían ser obligatorios y cuáles opcionales? ¿Y si el curso es de cocina? Pista: No vas a necesitar nada de código en este ejercicio, sólo nombrar los pasos.
Contás con un listado de cosas a comprar y tenés que ir a un supermercado que cuenta con distintas góndolas o pasillos. Cada góndola o pasillo puede contar con varios, uno o ninguno de los productos de tu lista. ¿Cuál sería el listado de instrucciones para poder terminar lo más rápido posible? Pista: No vas a necesitar nada de código en este ejercicio, sólo nombrar los pasos.
Con el anexo de Google Colab de la Unidad 1, realizá tu primer programa: hacé que se imprima por pantalla un “¡Hola mundo!”
.
Guardar el texto “Hola, Mundo!” en una variable e imprimirla por pantalla.
Guardar los números 1, 2 y 3 en tres variables distintas e imprimirlos por pantalla.
Crear un programa que le solicite al usuario:
Crear un programa que le solicite al usuario un número, y que devuelva el resto obtenido de dividirlo por 2.
¿Qué operador vimos para obtener el resto?
Escribir un programa que le pida al usuario su año de nacimiento, y que le diga qué edad tiene en el año actual.
Crear un programa que le solicite al usuario 5 enteros y que muestre por pantalla el promedio de ellos. Hacerlo de dos formas:
A partir de ahora y en adelante, todo lo que se nos pida (incluso si dice “programa”) se debe realizar dentro de una o más funciones.
Crear una función que reciba un número y que devuelva el valor absoluto.
Crear una función que reciba un número y que devuelva True
si es par, y False
si es impar.
Crear una función que reciba un número y un string, y que devuelva ambos concatenados dentro de un nuevo string.
Crear una función que reciba dos enteros y que devuelva el resto y el cociente entre ellos.
Crear una función que le pida al usuario su nombre y apellido, e los imprima con el siguiente formato: “Apellido, Nombre”.
Hacer una función que reciba una palabra y devuelva la cantidad de letras que tiene.
Hacer una funcion que reciba una palabra, le borre todas las letras “a” e imprima el resultado por pantalla. Pista: usar una función predefinida de Python. Ejemplo: Si se recibe “casa” se debe imprimir “cs”.
Analizar qué tipo de dato (o error) se obtiene al hacer las siguientes operaciones:
5 / 2
5 // 2
5 % 2
5 ** 2
5.0 / 2
5.0 // 2
5.0 % 2
5.0 ** 2
5 / 2.0
5 // 2.0
5 % 2.0
5 ** 2.0
5.0 / 2.0
5.0 // 2.0
5.0 % 2.0
5.0 ** 2.0
"Hola" * 2
"Hola" + 2
"Hola" + "2"
x = "Hola"
x += " mundo"
F = 9/5 * C + 32
.Escribir una función que calcule el área de un triángulo recibiendo como parámetros su base y su altura.
Siendo el cálculo de la norma de un vector \(v\) en \(R^3\):
\[||v|| = \sqrt{v_1^2 + v_2^2 + v_3^2}\]
Escribir una función que calcule la norma de un vector en R3 recibiendo como parámetros las 3 componentes \(v_1\), \(v_2\) y \(v_3\) del mismo.
Desafío (no obligatorio): Calcular el área de un rectángulo (alineado con los ejes \(x\) e \(y\)), dadas sus coordenadas \(x_1\), \(x_2\), \(y_1\) e \(y_2\). Nota: considerar que tiene que funcionar para cualquier cuadrado, independientemente de los cuadrantes en los que tenga sus vértices.
Escribir una función que, dado un número entero \(n\), calcule si es impar o no.
Escribir una implementación propia de la función \(abs\), que devuelva el valor absoluto de cualquier valor que reciba. Ejemplo: mi_abs(5)
devuelve 5
y mi_abs(-5)
devuelve 5
. Pista: No se puede usar la función predefinida abs
.
Escribir una función que reciba un número y devuelva True
si es entero y False
si no lo es. Pista: no se puede usar la función isinstance
.
Escribir una función para determinar si una letra recibida es vocal o no. La misma debe devolver un valor booleano. Luego, escribir una función para determinar si una letra es consonante o no.
in
ni not in
.in
y not in
.lower
y upper
de string.in
y not in
¿Conocés el uso de in
?
Para saber si un elemento está en una lista o en un string, podemos usar in
y not in
. Por ejemplo:
'a' in 'hola'
True
'w' in 'hola'
False
'w' not in 'hola'
True
'casa' in ['cama', 'mesa', 'silla']
False
Escribir funciones que resuelvan los siguientes problemas:
Aries: 21 de marzo al 20 de abril.
Tauro: 21 de abril al 20 de mayo.
Géminis: 21 de mayo al 21 de junio.
Cáncer: 22 de junio al 23 de julio.
Leo: 24 de julio al 23 de agosto.
Virgo: 24 de agosto al 23 de septiembre.
Libra: 24 de septiembre al 22 de octubre.
Escorpio: 23 de octubre al 22 de noviembre.
Sagitario: 23 de noviembre al 21 de diciembre.
Capricornio: 22 de diciembre al 20 de enero.
Acuario: 21 de enero al 19 de febrero.
Piscis: 20 de febrero al 20 de marzo.
Piedra, papel o tijera: escribir un programa de “Piedra, papel o tijera” tal que sea imposible que el usuario gane. El usuario debe ingresar R (piedra), P (papel), o T (tijera) y la computadora debe siempre ganarle. Ejemplo:
¡Piedra (R), papel (P) o tijera (T)!
Ingrese jugada: R
¡Papel! ¡Gané!
¡Piedra (R), papel (P) o tijera (T)!
Ingrese jugada: P
¡Tijera! ¡Gané!
¡Piedra (R), papel (P) o tijera (T)!
Ingrese jugada: T
¡Piedra! ¡Gané!
¡Piedra (R), papel (P) o tijera (T)!
Ingrese jugada: M
Esa jugada no está disponible.
Suponiendo que el primer día del año fue lunes, escribir una función que reciba un número con el día del año (de 1 a 366) y devuelva el día de la semana que le toca. Por ejemplo: si se recibe ‘3’, debe devolver “miércoles”, y si se recibe ‘9’, debe devolver “martes”.
Escribir función que:
[Flaminia, Serena, Agustina, Priscila, Sol, Agostina, Iara, Lu]
con el mensaje "Hola <nombre>! Vamos a aprender a programar"
.1 es impar
2 es par
3 es impar
Se quiere hacer un programa para enseñar a los niños las tablas de multiplicar del 1 al 10. Crear una función que reciba un número e imprima por pantalla la tabla de multiplicar de ese número. Ejemplo:
mostrar_tablas_para(1)
debe imprimir:
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
1 x 10 = 10
mostrar_tablas_para(-2)
debe imprimir:
Error: El número debe ser positivo y estar entre 1 y 10
Crear una función que cante el feliz cumpleaños. Dado un entero, debe imprimir ‘Que los cumplas feliz’ en distintas líneas por esa cantidad de veces.
Ejemplo:
Su total a pagar es: 500
Ingrese el monto a pagar: 100
Pendientes: 400. Ingrese el monto a pagar: 200
Pendientes: 200. Ingrese el monto a pagar: 200
Pendientes: 0. Gracias por su compra.
Ejemplo:
Su total a pagar es: 500
Ingrese el monto a pagar: 100
Pendientes: 400. Ingrese el monto a pagar: 200
Pendientes: 200. Ingrese el monto a pagar: 300
Pendientes: 0. Su vuelto es: 100. Gracias por su compra.
Escribir un programa que le pida al usuario que ingrese un número. Para ese número, se imprime la tabla de multiplicar del 1 al 10. Luego, se le vuelve a pedir otro número. Si el usuario ingresa “X”, el programa debe terminar. El usuario debe poder ingresar números indefinidamente hasta que ingrese “X”. Se puede reutilizar la función del ejercicio 9 de esta guía.
Ejemplo:
Hola! Esto es Tablas de Multiplicar
Ingrese un número o "X" para salir: 1
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
1 x 10 = 10
Ingrese un número o "X" para salir: -2
Error: El número debe ser positivo y estar entre 1 y 10
Ingrese un número o "X" para salir: X
¡Adios!
Manejo de contraseñas
True
o False
).Hacer una función que reciba un número del 1 al 10, y luego permita al usuario poder adivinar ese número, ingresando valores repetidamente. Para cada ingreso del usuario, el programa debe indicarle si su número es menor o mayor al número a adivinar. Una vez que el usuario ingresa el número correcto, lo felicita y termina.
Repetir permitiendo únicamente 3 intentos.
Repetir generando el número aleatoriamente de la siguiente forma dentro de la función, sin recibirlo por parámetro:
import random
= random.randint(1, 10)
numero_a_adivinar print(numero_a_adivinar)
5
¿Sabías que Python tiene muchas bibliotecas que podés usar para hacer cosas más complejas? Por ejemplo, la biblioteca random
tiene funciones para generar números aleatorios. También hay otras bibliotecas como Pandas
para trabajar con datos, Matplotlib
para hacer gráficos, Numpy
para trabajar con matrices, y muchas más. Vamos a estar viendo estas tres en la última unidad de la materia.
Una biblioteca es un conjunto de funciones que alguien más escribió y que podemos usar en nuestros programas. Para usar una biblioteca, primero tenemos que importarla. Por ejemplo, para usar la biblioteca random
, tenemos que poner import random
al principio de nuestro programa (arriba de todo en nuestro archivo). Luego, podemos usar las funciones de la biblioteca, como random.randint(1, 10)
.
Se debe seguir solicitando fichas siempre que no se haya alcanzado la cantidad necesaria para funcionar. Cuando se haya alcanzado la cantidad necesaria, se debe imprimir un mensaje que indique “¡A jugar!”. Ejemplo:
Ingresá 2 fichas para comenzar: F
Ingresá 2 fichas para comenzar: B
Ingresá 2 fichas para comenzar: Hola
Ingresá 2 fichas para comenzar: F
¡A jugar!
Ingresá 2 fichas para comenzar: F
Ingresá 1 fichas para comenzar: B
Ingresá 1 fichas para comenzar: ficha
Ingresá 1 fichas para comenzar: F
¡A jugar!
Crear una función que calcule si un número es primo o no. Un número es primo cuando solamente es divisible por sí mismo y por 1. Pista: usar el operador módulo %
.
Desafío (obligatorio): Crear una función que reciba un número entero e imprima los números primos entre 0 y el número ingresado.
Desafío (obligatorio):
Crear una función que reciba dos números, y devuelva la suma de todos los números múltiplos de 7 entre esos dos números. Por ejemplo, si recibe 3 y 25, debe devolver 7 + 14 + 21 = 42. Si recibe 3 y 4, debe devolver 0, ya que no hay múltiplos de 7 entre esos dos números.
Repetir calculando el promedio en vez de la suma.
Repetir calculando únicamente el promedio entre los primeros 3 múltiplos de 7 encontrados. Pista: usar break
.
Repetir calculando únicamente el promedio entre los múltiplos de 7 encontrados que no sean múltiplos de 2. Pista: usar continue
.
Desafío (obligatorio):
Para ello, en cada paso debe preguntarle al usuario la cantidad de ejercicios resueltos por el alumno, o pedirle que ingrese “*” para salir. Debe mostrar por pantalla el porcentaje correspondiente a la cantidad de ejercicios resueltos respecto a la cantidad de ejercicios del examen y una leyenda que indique si aprobó o no.
Escribir funciones que dada una cadena y un caracter:
Inserte el caracter entre cada letra de la cadena. Ejemplo: 'separar'
y '-'
debería devolver 's-e-p-a-r-a-r'
.
Reemplace todos los espacios por el caracter. Ejemplo: 'mi archivo de texto.txt'
y '_
’ debería devolver 'mi_archivo_de_texto.txt'
.
Reemplace todos los dígitos de la cadena por el caracter. Ejemplo: 'su clave es: 1540'
y '*'
debería devolver 'su clave es: ****'
.
Inserte el caracter cada 3 dígitos en la cadena. Ejemplo: '2552552550'
y '.'
debería devolver '255.255.255.0'
Modificar todas las anteriores para que, adicionalmente, reciba un parámetro que indique la cantidad máxima de reemplazos o inserciones a realizar. Ejemplo: 'su clave es: 1540'
, '*'
y 3
debería devolver 'su clave es: ***0'
.
Escribir una función que reciba una cadena que contiene un largo número entero y devuelva una cadena con el número y las separaciones de miles. Por ejemplo, si recibe 1234567890
, debe devolver 1.234.567.890
. Cuidado: no es lo mismo 123.456.789.0
que 1.234.567.890
. Tienen que ser separaciones de miles y quedar un número válido.
Escribir funciones que dada una cadena de caracteres:
Ciclo Básico Común
se debe devolver CBC
.anita lava la tina
es un palíndromo (se lee igual de izquierda a derecha que de derecha a izquierda).Escribir funciones que dadas dos cadenas de caracteres:
'compu'
es subcadena de 'computacional'
.'kde'
y 'gnome'
debe devolver 'gnome'
.Escribir una función que, dada una cadena de caracteres, devuelva una lista con cada uno de los caracteres que la componen en mayúscula. Ejemplo: 'Hola'
debe devolver ['H', 'O', 'L', 'A']
. Restricción: no se permite el uso de ciclos for/while. Pista: Buscá en el apunte cómo usar map
.
Escribir una función que, dada una cadena de caracteres, devuelva una tupla con cada uno de los caracteres que no es una vocal. Ejemplo: 'Algoritmos'
debe devolver ('l', 'g', 'r', 't', 'm', 's')
. Restricción: no se permite el uso de ciclos for/while.
Escribir una función que, dada una cadena de caracteres, devuelva el número de índice de posición del último caracter. Por ejemplo, para la cadena 'Hola'
debe devolver 3
. Restricción: no se permite el uso de ciclos for/while.
Desafío (obligatorio):
Se quiere implementar un buscador dentro de un editor de texto, que permita encontrar todas las ocurrencias de una palabra en un texto. Para ello, se debe implementar una función que reciba como parámetro una palabra y un texto, y que devuelva la primer aparición de la palabra en el texto. Pista: index
arrojará un error si la subcadena no se encuentra. ¿Qué otro método tenemos disponible para buscar subcadenas?
Modificar la función anterior para que devuelva una lista con las posiciones de inicio de cada ocurrencia de la palabra dentro del texto. Ejemplo: si se busca 'al'
en 'calcule el precio al valor actual'
, debe devolver [1, 18, 22, 31]
. Pista: del método usado en el punto anterior, ¿conocemos algún parámetro adicional que le podamos pasar?
Modificar la función anterior para que devuelva la cantidad de ocurrencias encontradas. Ejemplo: si se busca 'al'
en 'calcule el precio al valor actual'
, debe devolver 4
. Restricción: No se puede usar el método len
.
Desafío (no obligatorio): Escribir una función que reciba dos cadenas de caracteres y devuelva una lista con todos los caracteres que no tienen en común. Ejemplo: 'Python'
y 'Hola'
debería devolver el conjunto de letras ['P', 'y', 't', 'l', 'a', 'n']
, indiferentemente del orden y de si está en mayúscula o minúscula. Nota: para que un caracter esté en la lista, no es necesario que esté en la misma posición.
Usar un rango para:
Escribir una función que reciba:
True
si su longitud es par y False
si su longitud es impar.[5, 10, 7, 3]
debe devolver [3, 5, 7, 10]
.Escribir una función que reciba una lista de nombres y un número, que representa el cupo. La función debe devolver en una lista a los nombres que no pudieron entrar al curso por falta de cupo. Ejemplo: chequear_cupo(['Agustina', 'Iara', 'Priscila', 'Sol', 'Lucía'], 3)
debe devolver ['Sol', 'Lucía']
.
Modificar la función anterior para que devuelva únicamente a la última persona de la lista de la gente que pudo entrar. Ejemplo: chequear_cupo(['Agustina', 'Iara', 'Priscila', 'Sol', 'Lucía'], 3)
debe devolver 'Priscila'
, porque es la última que tuvo cupo.
Dada la lista de tuplas [("Argentina", 3), ("España",1), ("Uruguay", 2), ("Francia",2)]
, donde cada tupla contiene un país y la cantidad de mundiales que ganaron:
País: <nombre> - Copas: <cantidad>
Si y sólo si el país es “Argentina”, se debe imprimir el nombre con 3 estrellas: "Argentina⭐⭐⭐"
. Usar el operador abreviado +=
.
Hacer una función que reciba la lista por parámetro y devuelva la cantidad de mundiales que ganaron entre todos los países. Ejemplo: contar_mundiales([("Argentina", 3), ("España",1), ("Uruguay", 2), ("Francia",2)])
debe devolver 8
.
Hacer una función que reciba la lista por parámetro y la devuelva, ordenada por cantidad de copas ganadas.
Hacer una función que reciba la lista por parámetro y devuelva en una tupla: una lista con los países que tienen más de una copa ganada, y otra lista con valores booleanos que nos diga si la cantidad de copas es par o impar. Pista: ¿Cómo podemos usar filter
? ¿Y map
?
Ejemplo: [("Argentina", 3), ("España",1), ("Uruguay", 2), ("Francia",2)]
devuelve:
([("Argentina", 3), ("Uruguay", 2), ("Francia",2)] , [False, True, True])
Escribir una función que reciba dos fichas de dominó y determine si encajan o no entre sí.
(3,4)
y (5,4)
.'3-4'
y '5-4'
.Escribir una función que reciba dos vectores y devuelva su prod_escalar. El prod_escalar se calcula como: Siendo \(v1 = (v1_1, v1_2, ..., v1_n)\) y \(v2 = (v2_1, v2_2, ..., v2_n)\), entonces
\[v1 \cdot v2 = (v1_1 \cdot v2_1) + (v1_2 \cdot v2_2) + ... + (v1_n \cdot v2_n)\] Si los vectores no tienen las mismas dimensiones, la función debe devolver None
.
Escribir una función que reciba una tupla, un índice, y un nuevo valor. La función debe modificar la tupla, cambiando el valor en la posición dada por el índice, por el nuevo valor pasado como parámetro. Devolver la tupla modificada.
Repetir el ejercicio anterior, pero con una lista.
Repetir ambos si ahora, en vez de recibir un índice, se recibe el valor a eliminar. Si no se contiene al valor, se devuelve la estructura tal cual se recibió.
Escribir una función que reciba una lista y un número \(n\). Para dicho número \(n\), debe imprimir los últimos \(n\) elementos de la lista en orden inverso, y luego devolver la lista sin ellos. Ejemplo: Si se recibe [1, 2, 3, 4, 5]
y n = 2
, debe imprimir 5
, 4
y devolver [1, 2, 3]
.
Escribir una función que reciba una lista de números y devuelva la misma lista en orden inverso.
Escribir una función que dado un valor \(n\), devuelva una lista con los números del 1 a \(n\).
Escribir una función que reciba una matriz y una tupla (fila, columna), y devuelva el valor ubicado en esa posición de la matriz. Ejemplo: si se recibe la matriz [[1, 2], [3, 4]]
y la tupla (0, 1)
, debe devolver 2
.
Se tiene una lista de supermercado escrita como string con productos separados por coma: "pan, arroz, pescado, jugo, fideos,..."
.
Escribir una función que reciba la cadena de caracteres de los productos de supermercado y devuelva una lista con cada uno de los productos por separado: ['pan', 'arroz', 'pescado', 'jugo', 'fideos', ...]
.
Se tiene además otra cadena de caracteres con los precios de cada producto: "100, 50, 200, 80, 30,..."
. Escribir una función que reciba ambas cadenas y devuelva una lista con tuplas de (producto, precio): [('pan', 100), ('arroz', 50), ('pescado', 200), ('jugo', 80), ('fideos', 30), ...]
.
Para la función del punto anterior, escribir otra función que reciba la lista de tuplas y devuelva el precio total de la lista de compras.
Se quiere crear una lista de supermercado, solicitándole al usuario productos hasta que ingrese el valor ‘X’. La función debe devolver los productos en un string, separados por comas. Ejemplo: si se ingresa ‘pan’, ‘arroz’, ‘pescado’, ‘X’, debe devolver "pan, arroz, pescado"
.
Hacer una función que reciba una lista de palabras, las ordene en orden alfabético y luego las una en un string separadas por espacios. Ejemplo: si recibe ['hola', 'como', 'estas']
, debe devolver "como estas hola"
.
Desafio (obligatorio): Escribir una función que reciba un tamaño y devuelva una matriz con 1 en la diagonal principal y 0 en el resto. Ejemplo: si recibe 4, debe devolver la matriz identidad de tamaño 4x4. \[ \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \]
Desafio (obligatorio): Escribir una función que reciba una matriz y devuelva su transpuesta. Ejemplo: si recibe la matriz [[1, 2, 3], [4, 5, 6]]
, debe devolver [[1, 4], [2, 5], [3, 6]]
.
Si se recibe: \[ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{bmatrix} \]
Se debe devolver:
\[ \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \\ \end{bmatrix} \]
Desafio (no obligatorio): Agenda Simplificada
Escribir una función que reciba una cadena a buscar y una lista de tuplas (nombre_completo, telefono)
, y busque dentro de la lista todas las entradas que contengan en el nombre completo la cadena recibida (puede ser el nombre, el apellido o sólo una parte de cualquiera de ellos). Debe devolver una lista con todas las tuplas encontradas.
Desafio (no obligatorio): Sistema de facturación simplificado.
Se cuenta con una lista ordenada de productos con tuplas de (identificador, descripción, precio), y una lista de los productos a facturar, con tuplas de (identificador, cantidad).
Se desea generar una factura que incluya la cantidad, la descripción, el precio unitario y el precio total de cada prod_comprado, y al final imprima el total general.
Escribir una función que reciba ambas listas e imprima por pantalla la factura solicitada.
Super Desafio (no obligatorio): Batalla Naval
Se tiene una matriz de 10x10 que representa un tablero. Cada celda contiene un 0 si está vacía, o un 1 si hay un barco (consideramos que en este caso, sólo hay barcos unitarios que ocupan un espacio).
La posición de los barcos se representa con tuplas de (fila, columna). Por ejemplo, si se tiene un barco en la fila 1, columna 3, se representa con la tupla (1, 3).
Escribir una función que cree un tablero con 10 barcos ubicados aleatoriamente (usar la biblioteca random
), y que permita al usuario intentar adivinar dónde están.
El usuario luego ingresa una posición, y la máquina indica si había un barco en esa posición (mostrando un mensaje por pantalla “¡Hundido!”) o no (“¡Agua!”).
El usuario gana cuando hunde todos los barcos del tablero. Si se equivoca más de 5 veces, pierde.
¿Te animás a que el juego sea un ida y vuelta? Es decir, que el usuario también pueda poner barcos y la máquina intente adivinar dónde están. Una posibilidad es que el usuario tenga su propio tablero en un papel, y una vez cada uno, la máquina y el usuario elijan una posición para atacar.
Te dejamos unos tips:
¿Se te ocurre una forma fácil de generar y guardar todas las posiciones posibles del tablero, e ir sacando de a una para que no se repitan? ¿Quién pensás que ganaría, la máquina o el usuario? En este caso, el usuario y la máquina tienen intentos ilimitados intercalados hasta que alguno de los dos gane.
Se tiene una base de datos con nombres de libros de la siguiente forma ["La Noche de la Usina", "La Pregunta de sus Ojos", "Ser Feliz era Esto",...]
, y se quiere saber cuántos libros repetidos tienen. Escribir una función que reciba la base de datos y devuelva, para cada uno de los títulos, cuántos ejemplares hay. La lista no tiene un tamaño fijo, y puede contener muchos títulos repetidos.
Pista: tenés que usar un diccionario.
= [('Hola', 'don Pepito'), ('Hola', 'don Jose'), ('Buenos', 'días')]
l print(tuplas_a_diccionario(l))
{'Hola': ['don Pepito', 'don Jose'], 'Buenos': ['días']}
Escriba una función que reciba una cadena y devuelva:
"Que lindo dia que hace hoy"
debe devolver: {'que': 2, 'lindo': 1, 'dia': 1, 'hace': 1, 'hoy': 1}
.Escribir una función que reciba una cantidad de iteraciones N.
Se deberá simular una persona que tira un dado N veces, y se deberá devolver un diccionario con la cantidad de apariciones de cada valor en el dado. Nota: para simular una tirada, usar import random
y random.randint(1, 6)
.
Repetir el punto anterior, si ahora en vez de tirar 1 dado, tira 2. Se debe devolver un diccionario con la cantidad de apariciones de cada valor de la suma de ambos dados.
Se tiene una agenda implementada como diccionario, que guarda nombres de personas y sus números de teléfono. Escribir un programa que le pida al usuario que ingrese nombres.
En ambos casos, El usuario puede utilizar la palabra “EXIT” para dejar de ingresar nombres.
Escribir una función que reciba un texto y para cada caracter presente en el texto, devuelva la palabra más larga en la que se encuentra ese caracter.
Nos contratan para hacer un nuevo sistema de FIUBA para almacenar información de sus estudiantes:
nombre | apellido | dni | carrera |
---|---|---|---|
Violeta | Perez | 42000000 | Informática |
Carla | Guanca | 42001001 | Mecánica |
Manuela | Gomez | 42002002 | Química |
Crear un diccionario que sirva para representar a cada persona. Debe contener las claves nombre
, apellido
, dni
y carrera
. Los diccionarios se deben guardan en una lista llamada estudiantes
.
Agregar al diccionario creado un nuevo elemento, que debe ser otro diccionario y represente las notas obtenidas en la carrera. La clave debe ser el codigo
y el valor la nota
(del 1 al 10) obtenida.
Crear código que agregue para la estudiante Violeta Perez la nota 7 en la materia Algoritmos y Programación III (7507), y la nota 4 en la materia Análisis Matemático II (6103).
Teniendo la lista de estudiantes, buscar en la lista la persona con mayor cantidad de notas e imprimirla por pantalla.
En un vivero se guardan las plantas en una lista de diccionarios con la siguiente información: especie, luz directa (si/no), precio. Se necesita un sistema que guarde las plantas a medida que van llegando. Hacer una función que reciba la lista de diccionarios de plantas, y los datos de la planta nueva, y agregue esa planta a la lista de diccionarios.
Escribir una función que reciba una lista de diccionarios y una clave, y devuelva una lista con los valores correspondientes a esa clave.
Se tiene un ticket de supermercado en forma de diccionario con los siguientes datos:
Se pide hacer una función que reciba el ticket y devuelva el monto a pagar total.
Rosita tiene una lista de diccionarios donde guarda todas las películas que vió. La información para cada una es: el nombre de la película, año en que salió, y la puntuación que le puso del 1 al 10. Hacer una función que reciba el diccionario y devuelva una nueva lista de diccionarios donde sólo estén las películas que tienen puntaje mayor a 7.
filter
filter
.La profesora Llamell guarda las notas del parcial de Pensamiento Computacional en una lista de diccionarios. Cada diccionario tiene la siguiente información: nombre, apellido, intento, nota.
Los intentos pueden ser 1 (si es la primera vez que rinde el parcial) o 2 (si está en el recuperatorio).
Se pide hacer una función que dada esta lista de diccionarios, se devuelva el promedio de las notas en la primera oportunidad de los alumnos.
Generalizar la función anterior, para que también reciba el número de intento y se pueda devolver el promedio de cualquiera de los dos intentos.
En una fábrica se tiene una base de datos donde se guardan todos los códigos de los productos que se fabrican como claves de un diccionario. Los valores de cada clave son nuevos diccionarios, con la siguiente información: fecha de vencimiento (mes,año), si pasó el chequeo de calidad o no.
Se pude hacer una función que reciba esta lista de diccinoarios, y elimine a todos los productos que no pasaron el chequeo de calidad. Devolver en una tuple todos los productos eliminados en formato {codigo: diccionario del producto}.
Se quiere guardar información de un grupo de maratonistas. Se necesita guardar su nombre, DNI y todas las maratones que corrió. Para esto último, se guardan: nombre de cada una, año, puesto y el tiempo que tardaron en correrlas (en minutos).
Desafío (obligatorio): Laura tiene una lista de diccionarios donde guarda el valor de todas las reviews laborales anuales que le hicieron. La información de cada una es año, seniority en ese momento (trainee, junior, semisenior, senior), el sueldo en ese momento y el valor del bono de performance que le dieron. La semana pasada le avisaron que por políticas de la empresa, los bonos ahora deben calcularse como un porcentaje de su sueldo.
Laura quiere entonces actualizar sus diccionarios, para que en vez de guardar el monto exacto del bono, guarde el porcentaje que le corresponde. Ejemplo: si en el 2019 su sueldo era de $1.000.000 y el bono que le dieron era de $40.000, el bono fue del 4% del sueldo.
Hacer una función que reciba la lista de diccionarios, y para cada una de las reviews, modifique el valor del bono por el porcentaje correspondiente.
Hacer una función que reciba la lista de diccionarios ya modificada y devuelva los años en los que Laura tuvo un bono mayor al 50% de su sueldo. Restricción: usar filter
y map
.
Desafío (obligatorio): Los estudiantes de la materia Pensamiento Computacional quieren crear un programa que les facilite la cursada. Uno de los problemas es que no se tiene fácil acceso a los enunciados de los ejercicios, porque la guía es larga y hay que scrollear mucho. En el programa, la guía de ejercicios se guarda en un diccionario, donde cada clave es el número de guía y cada valor una lista con los enunciados de los ejercicios, cada uno en su posición correspondiente (la posición 0 de la lista sólo guarda None). Se quiere que el usuario que está usando el programa pueda acceder por pantalla a un enunciado puntual de una guía con sólo pedirlo (si existe). Para el problema mencionado, hacer una función o más que lo resuelva. Usar los temas visto en la materia hasta el momento, en la forma que se considere mejor y siguiendo las buenas prácticas y convenciones enseñadas.
Desafío (no obligatorio): Donarg (https://www.donarg.com.ar/) es un proyecto que nació con estudiantes de FIUBA con el fin de optimizar procesos tanto para donantes de sangre como para hospitales y servicios de hemoterapia. Formado por estudiantes y graduados universitarios comprometidos, fue galardonado con el primer puesto en la FIUBATON 2020 “Desafío Cuarentena” del FIUBA Consulting Club, destacándose entre más de 100 proyectos.
Donarg necesita un sistema que permita filtrar una base de datos de posibles donantes de sangre, quedándose con los que cumplen los requisitos.
La base contiene los siguientes datos de cada posible donante:
Los requisitos son:
Se pide hacer una función que reciba una lista de diccionarios con la información de cada posible donante, y devuelva una lista con los que cumplen los requisitos.
Se pide hacer una función que priorice a los donantes que tienen sangre tipo 0 (positivo y negativo) por sobre todos los A, B y AB (positivos y negativos); ya que son los que más se necesitan. La función debe recibir la lista de diccionarios con la información de cada posible donante ya filtrada por requisitos, y devolver una nueva lista ordenados de mayor a menor prioridad.
Se pide hacer una función que reciba la lista de diccionarios con la información de cada posible donante ya filtrada por requisitos y ordenada por prioridad, que se quede con los que son 0+ y 0-, y los ordene por órden alfabético de apellido.
Si querés saber más sobre el proyecto, podés visitar su página web:
https://www.donarg.com.ar/
o sacar turno para donar sangre en
https://www.donarg.com.ar/dondedono.
Escribir una función llamada contar
(o count
) que dado un archivo retorne la cantidad de filas que tiene.
Escribir una funcion llamada imprimir
(o cat
) que dado un archivo imprima por pantalla todo el contenido.
ignorar_vacias
(o blank
) que en caso de ser True
, no se impriman las lineas en blanco.Escribir una función llamada ver_encabezado
(o head
) que dado un archivo y un número N retorne en una lista las primeras N lineas del archivo.
Escribir una función llamada ver_final
(o tail
) que dado un archivo y un número N retorne en una lista las últimas N lineas del archivo.
Escribir una función llamada crear
(o touch
) que dado el nombre de un archivo lo cree. Si el archivo exixte borra todo el contenido.
Escribir una función, llamada wc
, que dado un archivo de texto, lo procese e imprima por pantalla cuántas líneas, cuantas palabras y cuántos caracteres contiene el archivo.
Escribir una función, llamada grep, que reciba una cadena y un archivo de texto, e imprima las líneas del archivo que contienen la cadena recibida.
Se tiene un archivo con una pregunta, llamado pregunta.txt
. Se pide leerlo y mostrar el contenido en consola. Luego, pedirle al usuario una respuesta, y guardarla en un archivo llamado respuesta.txt
.
Sea un diccionario cuyas claves y valores son cadenas.
guardar_diccionario
que reciba el diccionario y un nombre de archivo, y guarde el contenido del diccionario en el archivo, en formato CSV, con un par clave-valor por línea.cargar_diccionario
que reciba el nombre de un archivo con el formato mencionado en el punto anterior, y devuelva el diccionario original.Desafio (obligatorio): Distribución de Carga
Se tiene una base de datos en formato CSV con resultados de partidos de futbol. Como el archivo es muy grande, se quiere distribuir la base en varios archivos más pequeños. El formato del archivo es el siguiente:
local;visita;goles_local;goles_visita;gano;penales
real madrid;boca juniors;1;2;visita;N
A.C. Milan; boca juniors;1;1;visita;S
.
.
.
Utilizando las funciones de los ejercicios 1 a 7, procesar el archivo: Se desea que el archivo original se separe en archivos resultantes de no mas de 10 lineas, además no tienen que quedar filas en blanco. Por ejemplo si el archivo original tiene 100 lineas de las cuales 20 están en blanco, el resultado del procesamiento tienen que ser 8 archivos de 10 lineas cada uno. El tamaño del archivo original puede variar en cada ejecución.
La señora Rowling sospecha que su vecino le robo algunos manuscritos y los publicó como propios con algunas modificaciones. Se desea procesar una lista de archivos y guardar en un archivo llamado reporte_plagio.txt
la siguiente información:
archivo;palabras;apariciones
archivo1.txt;765030;547
En ejemplo de uso podría ser:
= ["archivo1.txt", "archivo2.txt"]
archivos "harry") procesar_archivos(archivos,
En procesar_archivos
se tiene que analizar los archivos y dejar el resultado en reporte_plagio.txt
Hacer una función que reciba un archivo y dos palabras: una que se quiere reemplazar, y otra por la que se quiere reemplazar. La función debe modificar el archivo reemplazando todas las apariciones de la primera palabra por la segunda.
Se tiene un archivo CSV que contiene información sobre el stock de una librería.
Un posible ejemplo de este archivo es el siguiente:
lapiceras;34512;50;120
cuadernos;41611;500;130
sacapuntas;62812;30;210
Donde cada línea representa un prod_y contiene el nombre del producto, el código de barras, la cantidad en stock y el precio unitario. Hacer una función que le solicite al usuario datos de un nuevo prod_y lo agregue al final del archivo. Debe seguir pidiéndole al usuario datos de productos hasta que este ingrese como prod_“X”.
En un cine tienen dos archivos .txt, uno con salas y otro con nombres de películas. Se sabe que en la sala de una fila del archivo se va a transmitir la película de la misma fila del archivo de películas. Se pide leer los dos archivos, y crear un nuevo archivo csv que tenga el nuevo formato sala;pelicula Por ejemplo si se tienen los siguientes archivos:
(salas.txt)
D2
F1
E4
(peliculas.txt)
Megamente
The Menu
Shrek
El nuevo archivo deberá quedar:
(funciones.csv)
D2;Megamente
F1;The Menu
E4;Shrek
Se tiene un archivo con información de ventas de productos en un supermercado. El archivo tiene el siguiente formato:
producto;precio;cantidad;fecha
arroz;50;100;2021-01-01
fideos;40;200;2021-01-01
arroz;50;100;2021-01-02
fideos;40;200;2021-01-02
arroz;50;100;2021-01-03
fideos;40;200;2021-01-03
Se pide hacer una función que reciba el nombre del archivo y un producto, y devuelva el precio promedio de ese prod_en el archivo.
Se tiene una lista de archivos y se quiere imprimir las primeras 5 líneas de cada uno. Si el archivo no existe, se lo debe crear e imprimir el mensaje: ‘el archivo {nombre} no existe. Se crea y deja vacío.’.
Desafío (obligatorio): Los docentes de Pensamiento Computacional saben que los ejercicios de las primeras guías son cortitos de resolver, entonces les dicen a los estudiantes que “si el ejercicio tiene más de 5 líneas, probablemente haya que revisarlo”. Los estudiantes se lo toman muy literal, y quieren buscar la forma de chequear si un ejercicio que resolvieron tiene más de 5 líneas, pero sin contar a la firma de la función.
El ejercicio puede estar guardado en un archivo o en un string todo junto, lo que resulte más cómodo para su resolución. Además, quieren la posibilidad de poder pasar varios ejercicios juntos para ahorrar tiempo, y saber en cuáles se pasaron de las 5 líneas o si algun archivo (en caso de elegir esa forma de almacenamiento) no existe. Para el problema mencionado, hacer una función o más que lo resuelva. Usar los temas visto en la materia hasta el momento, en la forma que se considere mejor y siguiendo las buenas prácticas y convenciones enseñadas.
Desafío (obligatorio): Los estudiantes del CBC pensaron que podía ser buena idea guardar los apuntes de todas las materias en un mismo archivo, para no marearse con tantos documentos diferentes. Pero terminó siendo un dolor de cabeza y es muy dificil encontrar las notas de cada materia. Para poder acceder facil a esa informacion, decidieron extraer del archivo original la informacion de las notas. Sabemos que a cada materia se le puso de título un hashtag, por ejemplo “#analisisMatematico”, y que la fila que contiene un título no contiene nada más. Lo que se quiere hacer es obtener un nuevo archivo CSV con el nombre de la sección/materia, la posición (número de línea) donde comienza la misma, y la posición donde termina. Para el problema mencionado, hacer una función o más que lo resuelva. Usar los temas visto en la materia hasta el momento, en la forma que se considere mejor y siguiendo las buenas prácticas y convenciones enseñadas.
Crear una función que asegure la apertura de un archivo. Debe recibir un nombre y si el archivo existe, retorna el contenido archivo. Si no existe, imprime un mensaje descriptivo.
Escribir una función que le pida al usuario que ingrese 5 números y le muestre la suma total de todos ellos. Si el valor ingresado no es un número, debe mostrar un mensaje de error y seguir pidiendo números.
Escribir un programa que le pida números al usuario e imprima si son pares o impares. Si el usuario ingresa un valor que no es un número, el programa debe imprimir un mensaje de error y seguir pidiendo números. El programa termina cuando el usuario ingresa "*"
.
Un climatólogo tiene archivos donde guarda las temperaturas promedio de la Ciudad de Buenos Aires de cada mes. Cada línea es un número que representa la temperatura promedio del día. Por ejemplo:
25.5
26.0
24.5
# etc
Como el climatólogo es humano, a veces se equivoca y tipea cosas que no son números. Por ejemplo: 25p3
o 25.5.5
. Se pide hacer una función que reciba el nombre del archivo y devuelva la temperatura promedio del archivo. Si en algún momento se encuentra con un valor que no es un número, debe ignorarlo y seguir con el resto de los valores.
Al final de la ejecución, debe devolverse el valor promedio y el porcentaje de valores que no pudieron ser procesados respecto del total.
Crea un programa que pueda procesar un archivo: por cada fila, se debe ejecutar la operacion de división dividendo/divisor
y almacenar el resultado en un archivo llamado “resultados.csv”. Tener en cuenta que en el archivo se pueden encontar filas con errores de carga y que el divisor sea 0 o que no sean números, en tal caso en lugar de escribir el resultado escribir “Error en la fila X: {descripción específica del error}” donde X es la fila que tiene errores.
dividendo;divisor
83848;389
8762;78
.
.
.
Desafio: Para la venta de entradas de un teatro se cuenta con un diccionario que contiene las filas: “A”, “B”, “C”… y en cada fila contiene una lista con las ubicaciones disponibles en forma de lista ["L","O","O","O","L","L","L"]
donde “L” es libre y “O” es ocupada.
Escribir una funcion que reciba el diccionario, la fila y la ubicación en ella, y reserve el asiento en caso de que este libre. Considerar que el tamaño de la lista de ubicaciones puede variar por fila. Si la fila o la ubicación no son correctas, mostrar un mensaje descriptivo. Si el asiento ya se encuentra ocupado, mostrar el mensaje: El asiento ya se encuentra ocupado
.
Ejemplo
= {"A":["L","O","O","O","L","L","L"], "B": ["L","O","O","O","L"]}
sala "A", 0)
reservar_butaca(sala, # En este ejemplo la fila "A" deberia quedar ["O","O","O","O","L","L","L"]
Desafio (obligatorio): Se tiene esta función, que recibe dos números y devuelve la división entre ellos:
def dividir(n1, n2):
if n2 == 0:
raise ZeroDivisionError("No se puede dividir por cero")
return n1/n2
La función puede lanzar una excepción ZeroDivisionError
si el segundo número es 0 (es decir, la ejecución va a terminar con un error).
Probar usar la función de arriba, pasándole 5 y 0 como argumentos. ¿Qué pasa? ¿Cómo podrías evitar que el programa termine con un error?
Se pide hacer un programa que le pida al usuario dos números, y muestre el resultado de la división usando la función dividir
definida arriba. Si el usuario ingresa un 0 como segundo número, debe mostrar un mensaje de error y retornar None
.
Considerar ahora también que el usuario podría ingresar algo que no es un número. En ese caso, debe mostrar un mensaje de error y seguir pidiendo números.
Desafío (no obligatorio): El kiosko de la facultad quiere automatizar un letrero que tome datos de un programa y le cobre al estudiante.
Se tienen dos diccionarios, uno con un código y el producto, y otro con el código y el precio de cada producto.
= {
opciones 1: "hamburguesas",
2: "milanesas",
3: "gaseosa",
4: "alfajor",
5: "papas fritas",
6: "agua"
}
= {
valores 1:1000,
2:1500,
3:500,
4:300,
5:600,
6:350
}
Se quiere hacer un programa que muestre la información de la siguiente forma en la pantalla:
1. hamburguesas - $1000
2. milanesas - $1500
3. gaseosa - $500
4. alfajor - $300
5. papas fritas - $600
6. agua - $350
Y le pida al usuario una opción y una cantidad. Luego, debe imprimir el total a pagar.
Se debe considerar que el usuario podría ingresar una opción que no está en el diccionario, o ingresar una opción que no sea un número. El programa debe en esos casos imprimir un mensaje de error que sea descriptivo y terminar su ejecución.
Crear un array de 20 números espaciados uniformemente entre 0 y 10. Luego, imprimir:
Crear un array llamado “arr” con números enteros del 0 al 9. Luego:
Para el array x = np.arange(10)
, calcular:
y = x^2
y = 3x + 2
y = 1/(x+1)
y = log10(x)
Usando el array y = 1/(x+1)
del ejercicio anterior:
y
.y
y su mediaRepetir el ejercicio 4.2.2 de la Guía 4:
Escribir una función que reciba:
- Una lista y devuelva True si su longitud es par y False si su longitud es impar.
- Una lista de números cualesquiera y devuelva el elemento máximo y el mínimo.
- Una lista de números y devuelva otra lista con los mismos números ordenados de menor a mayor. Por ejemplo, si recibe [5, 10, 7, 3] debe devolver [3, 5, 7, 10].
Repetir el ejercicio 4.2.6. de la Guía 4:
Escribir una función que reciba dos vectores y devuelva su prod_escalar. El prod_escalar se calcula como: Siendo \(v1 = (v1_1, v1_2, ..., v1_n)\) y \(v2 = (v2_1, v2_2, ..., v2_n)\), entonces
\[v1 \cdot v2 = (v1_1 \cdot v2_1) + (v1_2 \cdot v2_2) + ... + (v1_n \cdot v2_n)\] Si los vectores no tienen las mismas dimensiones, la función debe devolverNone
.
Repetir el ejercicio 4.2.11 de la Guía 4:
Escribir una función que reciba una matriz y una tupla (fila, columna), y devuelva el valor ubicado en esa posición de la matriz. Ejemplo: si se recibe la matriz [[1, 2], [3, 4]] y la tupla (0, 1), debe devolver 2.
Repetir el ejercicio 4.2.15 de la Guía 4:
Desafio (obligatorio): Escribir una función que reciba un tamaño y devuelva una matriz con 1 en la diagonal principal y 0 en el resto. Ejemplo: si recibe 4, debe devolver la matriz identidad de tamaño 4x4.
\[ \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \]
Repetir el ejercicio 4.2.16 de la Guía 4:
Desafio (obligatorio): Escribir una función que reciba una matriz y devuelva su transpuesta. Ejemplo: si recibe la matriz
[[1, 2, 3], [4, 5, 6]]
, debe devolver[[1, 4], [2, 5], [3, 6]]
. Si se recibe:
\[ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{bmatrix} \]
Se debe devolver:
\[ \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \\ \end{bmatrix} \]
Una persona quiere cercar el frente de su casa con alambre. Los postes se deben poner a 1 metro de distancia como mínimo entre sí. Hacer una función que reciba un número entero que sea la cantidad de metros a cubrir, y devuelva un array con la posición de los postes necesarios. Por ejemplo, si se reciben 5
metros, debe devolver: [0. 1.25 2.5 3.75 5.]
Se va a realizar un concierto gratis en el Jardín Japonés, para lo cual se habilitó la reserva de asientos por internet. Por un error, las reservas se hicieron en una lista de 50 asientos, guardando el número de reserva si está ocupado o 0 sino: [1,2,3,0,7,6,4,0,0,8,9, ...]
.
Los asientos en el Jardín Japonés se van a organizar en forma de matriz, teniendo 5 filas de 10 asientos cada uno. Se quiere transformar la lista de asientos en una matriz. Hacer una función que reciba la lista de asientos y devuelva la matriz de asientos organizada por filas.
Ejemplo: Si se recibe [1,2,3,0,7,6,4,0,0,8,9,10,0,13,11,12]
, se debe devolver: [[1,2,3,0,7,6,4,0,0,8],[9,10,0,13,11,12]]
.
Desafio (no obligatorio): Se tiene una matriz de 10x10 que representa un tablero de Batalla Naval. Cada celda contiene un 0 si está vacía, o un 1 si no. Se pide hacer una función que cree un tablero con 10 barcos ubicados aleatoriamente (usar la biblioteca random
).
Para estos ejercicios, recomendamos usar Google Colab (ver apunte) y tener una celda por ejercicio.
Nos contratan para hacer un nuevo sistema de FIUBA para almacenar información de sus estudiantes.
Usando el siguiente DataFrame:
import pandas as pd
= {
data 'nombre': ['Violeta', 'Carla', 'Manuela', 'Lucia', 'Emilia', 'Mariana', 'Aldo'],
'apellido': ['Perez', 'Guanca', 'Gomez', 'Capon', 'Duzac', 'Szischik', 'Rastrelli'],
'dni': [42000000, 42001001, 42002002, 37010020, 40001002, 38090080, 38111222],
'año_nac': [1997, 1998, 1998, 1993, 2003, 1993, 1994],
'mail': ['[email protected]', '[email protected]', None, None, None, '[email protected]', '[email protected]'],
'carrera': ['Informática', 'Mecánica', 'Química', 'Informática', 'Informática', 'Electrónica', 'Informática']
}
= pd.DataFrame(data)
df df
nombre | apellido | dni | año_nac | carrera | ||
---|---|---|---|---|---|---|
0 | Violeta | Perez | 42000000 | 1997 | [email protected] | Informática |
1 | Carla | Guanca | 42001001 | 1998 | [email protected] | Mecánica |
2 | Manuela | Gomez | 42002002 | 1998 | None | Química |
3 | Lucia | Capon | 37010020 | 1993 | None | Informática |
4 | Emilia | Duzac | 40001002 | 2003 | None | Informática |
5 | Mariana | Szischik | 38090080 | 1993 | [email protected] | Electrónica |
6 | Aldo | Rastrelli | 38111222 | 1994 | [email protected] | Informática |
Mostrar el resumen de la información del DataFrame
Mostrar su forma
Mostrar la lista de los nombres de las columnas
Mostrar las primeras 3 filas
Mostrar las últimas 3 filas
Agregar la nueva columna al DataFrame con la información de la edad de los estudiantes para el año actual y mostrar el DataFrame resultante
Mostrar a los estudiantes que tienen edad mayor a 25.
Para los estudiantes que tienen edad mayor a 25, mostrar el promedio de edad.
Mostrar a la persona que es más joven.
Mostrar a la persona que se encuentra en la mitad de la tabla.
Mostrar sólo las columnas: “carrera” y “edad”.
Mostrar sólo los estudiantes que estudian Informática.
Mostrar sólo los estudiantes que estudian informática y tienen menos de 25 años.
Reemplazar Informática
por Informática o Sistemas
en la columna “carrera”.
Mostrar la cantidad de estudiantes por carrera.
Renombrar la columna “carrera” por “ingeniería”.
Para la primer estudiante, cambiar su carrera a “Electrónica”.
Agregar una nueva fila al DataFrame con tus datos.
Agregar una nueva columna ‘tiene_mail’, con un valor booleano que indique si la estudiante tiene mail en el sistema.
Agregar una nueva columna, con un valor booleano que indique si a la estudiante se le necesita pedir un mail (sólo se le tiene que pedir un mail si no tiene mail asignado). Asumir que todavía no se tiene la columna ‘tiene_mail’.
Ordenar el dataFrame por carrera y apellido, en ese orden.
Ordenar el dataFrame por carrera y edad. Carrera por forma ascendente, edad por forma descendente.
La profesora Llamell guarda las notas del parcial de Pensamiento Computacional en un dataFrame. Cada fila tiene la siguiente información: nombre, apellido, intento, nota.
Los intentos pueden ser 1 (si es la primera vez que rinde el parcial) o 2 (si está en el recuperatorio).
= {
data 'nombre': ['Violeta', 'Carla', 'Manuela'],
'apellido': ['Perez', 'Guanca', 'Gomez'],
'dni': [42000000, 42001001, 42002002],
'carrera': ['Informática', 'Mecánica', 'Química'],
'nota': [7, 4, 6],
'intento': [1, 2, 1]
}
= pd.DataFrame(data)
df_notas df_notas
nombre | apellido | dni | carrera | nota | intento | |
---|---|---|---|---|---|---|
0 | Violeta | Perez | 42000000 | Informática | 7 | 1 |
1 | Carla | Guanca | 42001001 | Mecánica | 4 | 2 |
2 | Manuela | Gomez | 42002002 | Química | 6 | 1 |
data = {
'nombre': ['Harry Potter', 'El Señor de los Anillos', 'Barbie', 'Rapido y Furioso 18'],
'año': [2001, 2003, 1972, 2040],
'puntuacion': [8, 9, 8, 3]
}
df_pelis = pd.DataFrame(data)
df_pelis
Graficar las funciones obtenidas en el ejercicio 3 de Numpy, usando los números del 1 al 100 del eje x. Hacerlo primero en distintos gráficos y luego las 4 en el mismo.
- y = x^2
- y = 3x + 2
- y = 1/(x+1)
- y = log10(x)
- ¿Hay alguna función que no se esté viendo correctamente en el gráfico? Tratar de entender por qué y graficarla en otro gráfico. Pista: mirar los valores que toma la función en el eje
y
.
Usando Numpy: Siendo x
un conjunto de 1000 valores de 0 a 2 * pi separados de forma uniforme:
seno de x
(sin(x)
).coseno de x
(cos(x)
).(seno de x) + x/2
.Se tienen los siguientes datos de ventas de un prod_en los últimos 10 años:
import matplotlib.pyplot as plt
import numpy as np
= np.arange(2012, 2022)
años
= [140, 60, 120, 250, 200, 180, 100, 300, 120, 160]
ventas = [14000, 45000, 20400, 100000, 50000, 25000, 100000, 30000, 15000, 35000]
ganancias = ["prod_1", "prod_2", "prod_3", "prod_4", "prod_5", "prod_6", "prod_7", "prod_8", "prod_9", "prod_10"]
productos = [180, 160, 190, 140, 100, 200, 120, 130, 150, 170] cant_ventas_productos_2024
En gráficos separados:
Usando el siguiente dataframe:
= {
data 'Jurisdicción': [
'Ciudad Autónoma de Buenos Aires', 'Buenos Aires', 'Catamarca', 'Chaco', 'Chubut',
'Córdoba', 'Corrientes', 'Entre Ríos', 'Formosa', 'Jujuy', 'La Pampa', 'La Rioja',
'Mendoza', 'Misiones', 'Neuquén', 'Río Negro', 'Salta', 'San Juan', 'San Luis',
'Santa Cruz', 'Santa Fe', 'Santiago del Estero', 'Tierra del Fuego, Antártida e Islas del Atlántico Sur',
'Tucumán'
],'Capital': [
'', 'La Plata', 'San Fernando del Valle de Catamarca', 'Resistencia', 'Rawson',
'Córdoba', 'Corrientes', 'Paraná', 'Formosa', 'San Salvador de Jujuy', 'Santa Rosa', 'La Rioja',
'Mendoza', 'Posadas', 'Neuquén', 'Viedma', 'Salta', 'San Juan', 'San Luis',
'Río Gallegos', 'Santa Fe', 'Santiago del Estero', 'Ushuaia', 'San Miguel de Tucumán'
],'Población (hab)': [
3075646, 17541141, 415438, 1204541, 618994, 3760450, 1120801, 1385961,
605193, 770881, 358428, 393531, 1990338, 1261294, 664057, 747610,
1424397, 781217, 508328, 365698, 3536418, 978313, 173715, 1694656
],'Superficie (km2)': [
205.9, 305907.4, 101486.1, 99763.3, 224302.3, 164707.8, 89123.3, 78383.7,
75488.3, 53244.2, 143492.5, 91493.7, 149069.2, 29911.4, 94422, 202168.6,
155340.5, 88296.2, 75347.1, 244457.5, 133249.1, 136934.3, 910324.4, 22592.1
],'PBI': [
154863803.5, 292689868, 6150949.159, 9832642.672, 17747854.21, 69363739.19,
7968012.982, 20743409.1, 3807057.419, 6484938.334, 6990262.458, 5590515.628,
33431369.11, 9646825.835, 22564106.16, 10264584.42, 13438834.91, 8262308.568,
11780849.36, 11663738.04, 81588690.27, 8387858.731, 7049276.383, 13856198.9
],
}
= pd.DataFrame(data)
df df.head()
¿Sabías que en Argentina hay un portal de datos abiertos?
Podés ingresar a datos.gob.ar y obtener información de diferentes áreas, como salud, educación, justicia, entre otras. ¡Es una excelente fuente de datos para hacer análisis!
Para usarlos, podés guardar el archivo csv en google drive e importarlo de la siguiente forma como un dataframe:
import pandas as pd
# Acá va el link público de tu archivo de google drive + '/export?format=csv'
= "https://drive.google.com/drive/folders/ABC123XYZ456/export?format=csv"
url = pd.read_csv(url) df
Para calcular la energía potencial elástica (Ep) almacenada en un material elástico, se utiliza la siguiente fórmula:
\[ Ep = \frac{1}{2}*k*x^{2} \]
donde k es la constante elástica (con unidad N/m) y x es la distancia que el resorte se estira o comprime (metros). La energía Ep resultante tiene como unidad el Joule (J).
Para un resorte con valor \(*k=0.15 N/m*\), graficar en línea continua la energía potencial elástica \(*Ep*\) en un rango de distancia \(x\) de 0 a 10m con pasos de 0.5. Incluir título, grilla, nombres de ejes y label (leyenda) con el valor de \(k\).
Para calcular la posición final de un móvil dada una posición inicial, velocidad inicial, tiempo y aceleración, se tiene la siguiente fórmula:
\[ x = x_0+v_0 . t + \frac{1}{2}.a.t^2 \]
Donde \(x_0\) es la posición inicial, \(v_0\) la velocidad inicial, \(t\) el tiempo y \(a\) la aceleración.
Se tiene la siguiente información de dos móviles:
movil 1:
movil 2:
Para 5000 valores del tiempo del 0 al 100, mostrar un único gráfico con la posición respecto del tiempo de ambos móviles. Incluir grilla, títulos y label (leyenda) indicando el valor de la posicion inicial, velocidad y aceleración.
Desafio (obligatorio): Teniendo la planilla de notas del primer parcial del 1C2024 de los alumnos de la materia “Pensamiento Computacional”, importar los datos como dataframe usando el siguiente código:
import pandas as pd
= "https://docs.google.com/spreadsheets/d/17ei_NER5i_R-9QLnkeIjNprzTyoSqGowJ8yrT9tbi_8/export?format=csv"
url_sheet = pd.read_csv(url_sheet)
df df.head()
Si la nota es “NaN”, significa que el o la estudiante no rindió el examen.
En gráficos diferentes: