{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "source": [ "# Cuaderno con ejercicios (con soluciones) del tema *Librerías*.\n", "\n", "Este cuaderno forma parte del curso de [Iniciación a la programación con Python](https://campusvirtual.ull.es/ocw/course/view.php?id=179) del programa de Open Course Ware (OCW) de la Universidad de La Laguna.\n", "\n", "En este cuaderno encontrarás una serie de ejercicios con su enunciado, seguido de celdas de código con las soluciones. Pueden existir múltiples soluciones válidas en programación, por lo que las soluciones proporcionadas pueden variar entre personas.\n", "\n", "Puedes acceder al cuaderno sin las soluciones pichando en [este enlace](https://colab.research.google.com/drive/1nlYpkrXaXyQYl1CMQWCR04kVDrDcFbsC)." ], "metadata": { "id": "FqyQPctiwLcl" } }, { "cell_type": "markdown", "source": [ "## Ejercicio 1\n", "\n", "Utilizando la librería `math`, calcular el área de un círculo dado su radio." ], "metadata": { "id": "uPiE9hldsDRa" } }, { "cell_type": "code", "source": [ "import math\n", "\n", "radio = 6\n", "\n", "print(\"El área del círculo es:\",math.pi*radio**2)" ], "metadata": { "id": "ZpiGsl5SsOUE" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 2\n", "\n", "Utilizando la librería `math`, definir una función que devuelva la raíz cuadrada de un número." ], "metadata": { "id": "yBKNFNOnxTY_" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "KBw0Wtczu6As" }, "outputs": [], "source": [ "import math\n", "\n", "def cuadrada(num):\n", " return math.sqrt(num)\n", "\n", "x=34\n", "print(\"La raíz cuadrada de\",x,\"es:\",cuadrada(x))" ] }, { "cell_type": "markdown", "source": [ "## Ejercicio 3\n", "\n", "Utilizando la función del ejercicio anterior, calcular las raíces cuadradas de 5 números enteros generados de manera aleatoria entre 12 y 120, utilizando la librería `random`." ], "metadata": { "id": "TLxSsjTAsi2G" } }, { "cell_type": "code", "source": [ "import math, random\n", "\n", "def cuadrada(num):\n", " return math.sqrt(num)\n", "\n", "for i in range(0,5):\n", " x=random.randint(12, 120)\n", " print(\"La raíz cuadrada de\",x,\"es:\",cuadrada(x))" ], "metadata": { "id": "erFNPlgUs0Zm" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 4\n", "\n", "Definir una función que reciba dos argumentos y permita calcular el seno, coseno o la tangente de un ángulo. El primero de los argumentos consiste en una cadena de texto que determina que operación realizar, y el segundo consiste en el ángulo en grados, que se debe convertir a radianes.\n", "\n", "Utilizar la librería `math`." ], "metadata": { "id": "-zzv4PeT4j96" } }, { "cell_type": "code", "source": [ "import math\n", "\n", "def funciones(operacion, angulo):\n", " resultado = math.radians(angulo)\n", " if operacion == \"seno\":\n", " return math.sin(resultado)\n", " elif operacion == \"coseno\":\n", " return math.cos(resultado)\n", " elif operacion == \"tangente\":\n", " return math.tan(resultado)\n", " else:\n", " return \"La operacion introducida no es válida.\"\n", "\n", "x = 45\n", "print(\"El seno del ángulo\",x,\"es:\",funciones(\"seno\",x))\n", "print(\"El coseno del ángulo\",x,\"es:\",funciones(\"coseno\",x))\n", "print(\"La tangente del ángulo\",x,\"es:\",funciones(\"tangente\",x))" ], "metadata": { "id": "4Zicfwtl4l5U" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 5\n", "\n", "Utilizando la librería `datetime`, calcular la diferencia en años, meses y días entre dos fechas." ], "metadata": { "id": "yXkhVYmR7ryG" } }, { "cell_type": "code", "source": [ "import datetime\n", "\n", "fecha_1 = datetime.datetime(2020,12,20)\n", "fecha_2 = datetime.datetime(2023,1,23)\n", "\n", "df = fecha_2 - fecha_1\n", "años = df.days // 365\n", "dias = df.days % 365\n", "meses = dias // 30 # Se tiene en cuenta que todos los meses son de 30 días\n", "dias = dias % 30\n", "\n", "print(\"Han pasado\",años,\"años,\",meses,\"meses y\",dias,\"días\")" ], "metadata": { "id": "fu-JpSI77sTD" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 6\n", "\n", "Utilizando la librería `numpy`, realizar el producto escalar de dos vectores." ], "metadata": { "id": "njcVsmd2kND-" } }, { "cell_type": "code", "source": [ "import numpy\n", "\n", "vector_1 = numpy.array([2,4,6])\n", "vector_2 = numpy.array([3,6,9])\n", "\n", "print(\"El producto escalar de los dos vectores es\", numpy.dot(vector_1,vector_2))" ], "metadata": { "id": "hXMg9xq_kTqN" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 7\n", "\n", "Utilizando la librería `numpy`, resolver un sistema de ecuaciones lineal. Por ejemplo: \n", "`7x + 8y = 23.5` \n", "`2.4x - 2y = 17`" ], "metadata": { "id": "qcxyDEG35ZrK" } }, { "cell_type": "code", "source": [ "import numpy\n", "\n", "ec_1 = numpy.array([[7, 8], [2.4, -2]])\n", "ec_2 = numpy.array([23.5, 17])\n", "\n", "solucion = numpy.linalg.solve(ec_1, ec_2)\n", "\n", "print(\"La x vale:\", solucion[0])\n", "print(\"La y vale:\", solucion[1])" ], "metadata": { "id": "OsNlwGz45bt8" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 8\n", "\n", "Utilizando la librería `pandas`, calcular la calificación media de unas estudiantes.\n", "\n", "Los datos serían:\n", "```python\n", "nombres = [\"María\",\"Mercedes\",\"Miriam\",\"Mónica\"]\n", "calificaciones = [[2,4.5,9],[5,3,10],[7.5,8.3,9],[4,6.5,7]]\n", "```" ], "metadata": { "id": "QhJpl7wpk_ii" } }, { "cell_type": "code", "source": [ "import pandas\n", "\n", "nombres = [\"María\",\"Mercedes\",\"Miriam\",\"Mónica\"]\n", "calificaciones = [[2,4.5,9],[5,3,10],[7.5,8.3,9],[4,6.5,7]]\n", "\n", "df = pandas.DataFrame({'Nombre': nombres, 'Calificaciones': calificaciones})\n", "\n", "medias = []\n", "for x in df['Calificaciones']:\n", " medias.append(sum(x)/len(x))\n", "\n", "df['Media'] = medias\n", "\n", "print(\"Resultado:\")\n", "print(df[['Nombre', 'Media']])" ], "metadata": { "id": "ofS43hEvk_05" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 9\n", "\n", "Teniendo en cuenta el ejercicio anterior, mostrar en un gráfico las calificaciones medias usando `matplotlib`, en un gráfico de barras con etiquetas de datos en cada una de las barras." ], "metadata": { "id": "8hivJuf2p5iX" } }, { "cell_type": "code", "source": [ "import pandas, matplotlib.pyplot as plt\n", "\n", "nombres = [\"María\",\"Mercedes\",\"Miriam\",\"Mónica\"]\n", "calificaciones = [[2,4.5,9],[5,3,10],[7.5,8.3,9],[4,6.5,7]]\n", "\n", "df = pandas.DataFrame({'Nombre': nombres, 'Calificaciones': calificaciones})\n", "\n", "medias = []\n", "for x in df['Calificaciones']:\n", " medias.append(sum(x)/len(x))\n", "\n", "df['Media'] = medias\n", "cnt=0\n", "\n", "plt.bar(df['Nombre'], df['Media'], color='darkorchid')\n", "plt.xlabel('Estudiantes')\n", "plt.ylabel('Medias')\n", "plt.title('Medias de calificaciones por estudiante')\n", "for i in df['Media']:\n", " plt.text(cnt, i, f'{i:.4f}', ha='center', va='bottom')\n", " cnt+=1\n", "plt.show()" ], "metadata": { "id": "uPSEYk09p6i7" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Ejercicio 10\n", "\n", "Utilizando la función de la raíz cuadrada del ejercicio 2, y las librerías `math`, `random` y `matplotlib`, generar un gráfico de dispersión en el que se muestre 20 números enteros aleatorios entre el 0 y 100 en el eje x, y su raíz cuadrada en el eje y." ], "metadata": { "id": "6MBoBoXm2f3G" } }, { "cell_type": "code", "source": [ "import random, math, matplotlib.pyplot as plt\n", "\n", "def cuadrada(num):\n", " return math.sqrt(num)\n", "\n", "numeros = []\n", "raices = []\n", "\n", "for i in range(0,20):\n", " x=random.randint(0, 100)\n", " numeros.append(x)\n", " raices.append(cuadrada(x))\n", "\n", "plt.scatter(numeros, raices, color='red')\n", "plt.xlabel('Número')\n", "plt.ylabel('Raíz cuadrada')\n", "plt.title('Gráfico de dispersión de números y sus raíces')\n", "\n", "plt.show()" ], "metadata": { "id": "jLwkjiy_y5UE" }, "execution_count": null, "outputs": [] } ] }