From 36294db074590e25685f3ac65eec8299ac47ca18 Mon Sep 17 00:00:00 2001 From: 0xadrian Date: Sat, 7 Sep 2024 13:52:19 +0200 Subject: [PATCH] Solution Lab Data Estructures Extra --- lab-python-data-structures.ipynb | 212 ++++++++++++++++++++++++++++++- 1 file changed, 205 insertions(+), 7 deletions(-) diff --git a/lab-python-data-structures.ipynb b/lab-python-data-structures.ipynb index 8ba652c..eeae2db 100644 --- a/lab-python-data-structures.ipynb +++ b/lab-python-data-structures.ipynb @@ -61,7 +61,58 @@ "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# Creamos una lista vacía para almacenar las notas de los estudiantes\n", + "notas = []\n", + "\n", + "# Usamos un bucle para pedir las notas de los 5 estudiantes\n", + "for i in range(5):\n", + " nota = int(input(f\"Ingresa la nota del estudiante {i+1}: \"))\n", + " notas.append(nota)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Calculamos la suma total de las notas\n", + "suma_total = sum(notas)\n", + "print(f\"La suma total de las notas es: {suma_total}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Creamos una nueva lista con las notas del 1er, 3er y 5to estudiante\n", + "notas_seleccionadas = notas[0:5:2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Ordenamos la lista en orden ascendente\n", + "notas_seleccionadas.sort()\n", + "print(f\"Notas seleccionadas ordenadas: {notas_seleccionadas}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Mostramos la longitud de la lista y cuántas veces aparece el número 5\n", + "longitud = len(notas_seleccionadas)\n", + "ocurrencias_de_cinco = notas_seleccionadas.count(5)\n", + "print(f\"Longitud de la nueva lista: {longitud}\")\n", + "print(f\"El número 5 aparece {ocurrencias_de_cinco} veces.\")" ] }, { @@ -99,7 +150,73 @@ "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# Inicializamos una tupla con 5 frutas\n", + "frutas = (\"manzana\", \"naranja\", \"plátano\", \"pera\", \"uva\")\n", + "print(f\"Tupla inicial de frutas: {frutas}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Mostramos el primer y último elemento de la tupla\n", + "print(f\"Primera fruta: {frutas[0]}\")\n", + "print(f\"Última fruta: {frutas[-1]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convertimos la tupla a una lista para poder modificarla\n", + "frutas_lista = list(frutas)\n", + "# Reemplazamos el segundo elemento (índice 1)\n", + "frutas_lista[1] = \"kiwi\"\n", + "# Convertimos de nuevo la lista en tupla\n", + "frutas_actualizadas = tuple(frutas_lista)\n", + "print(f\"Tupla de frutas actualizada: {frutas_actualizadas}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Creamos una nueva tupla con frutas adicionales\n", + "nuevas_frutas = (\"mango\", \"piña\")\n", + "# Concatenamos las dos tuplas\n", + "frutas_expandida = frutas_actualizadas + nuevas_frutas\n", + "print(f\"Tupla expandida de frutas: {frutas_expandida}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Dividimos la tupla resultante en dos tuplas de 3 elementos\n", + "primera_parte = frutas_expandida[:3]\n", + "segunda_parte = frutas_expandida[-3:]\n", + "print(f\"Primera parte de la tupla: {primera_parte}\")\n", + "print(f\"Segunda parte de la tupla: {segunda_parte}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Combinamos las dos tuplas con la tupla original\n", + "tupla_combinada = primera_parte + segunda_parte + frutas\n", + "print(f\"Tupla combinada: {tupla_combinada}\")\n", + "print(f\"Longitud de la tupla combinada: {len(tupla_combinada)}\")" ] }, { @@ -167,7 +284,69 @@ "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "import string\n", + "\n", + "# Función para limpiar el texto\n", + "def limpiar_texto(texto):\n", + " # Convertir a minúsculas y eliminar puntuación\n", + " texto_limpio = texto.lower().translate(str.maketrans(\"\", \"\", string.punctuation))\n", + " # Dividir en palabras y convertirlo a set para obtener solo palabras únicas\n", + " return set(texto_limpio.split())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Crear conjuntos de palabras únicas\n", + "set_poema1 = limpiar_texto(poem)\n", + "set_poema2 = limpiar_texto(new_poem)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Imprimir el número de palabras únicas en cada poema\n", + "print(f\"Palabras únicas en el primer poema: {len(set_poema1)}\")\n", + "print(f\"Palabras únicas en el segundo poema: {len(set_poema2)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Palabras únicas en el primer poema pero no en el segundo\n", + "solo_poema1 = set_poema1 - set_poema2\n", + "print(f\"Palabras únicas en el primer poema que no están en el segundo: {solo_poema1}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Palabras únicas en el segundo poema pero no en el primero\n", + "solo_poema2 = set_poema2 - set_poema1\n", + "print(f\"Palabras únicas en el segundo poema que no están en el primero: {solo_poema2}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Palabras comunes entre ambos poemas\n", + "comunes = set_poema1 & set_poema2\n", + "print(f\"Palabras comunes en ambos poemas (ordenadas alfabéticamente): {sorted(comunes)}\")" ] }, { @@ -206,7 +385,11 @@ "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# Actualizamos la calificación de Filosofía de Bob a 100\n", + "grades['Bob']['Philosophy'] = 100\n", + "\n", + "# Imprimir el diccionario actualizado para verificar el cambio\n", + "print(grades)" ] }, { @@ -244,9 +427,20 @@ "outputs": [], "source": [ "keys = ['Physics', 'Math', 'Chemistry', 'Philosophy']\n", - "values = [75, 85, 60,90]\n", + "values = [75, 85, 60,90]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Paso 1: Convertir las listas en un diccionario\n", + "grades = dict(zip(keys, values))\n", "\n", - "# Your code here" + "# Imprimir el diccionario para verificar\n", + "print(\"Diccionario de calificaciones:\", grades)" ] }, { @@ -279,7 +473,11 @@ "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# Obtener la materia con la calificación mínima\n", + "subject_with_min_score = min(grades, key=grades.get)\n", + "\n", + "# Imprimir la materia con la calificación mínima\n", + "print(f\"Materia con la calificación mínima: {subject_with_min_score} ({grades[subject_with_min_score]})\")" ] } ],