Commit 05505297 authored by Fedrico Otaran's avatar Fedrico Otaran
Browse files

Agrego práctica 1 y 2

parent 6a35bfeb
This diff is collapsed.
{
"cells": [
{
"cell_type": "markdown",
"id": "massive-nancy",
"metadata": {},
"source": [
"# Python 2021 - Práctica 1\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "catholic-hawaii",
"metadata": {},
"source": [
"## Objetivos\n",
"\n",
"* Preparar el entorno de trabajo que utilizarán a lo largo de la materia instalando las herramientas básicas.\n",
"* Aprender a escribir nuestro primer programa Python y ejecutarlo.\n",
"* Investigar sobre repositorios conocidos de Python en distintos repositorios de código. \n",
"* Crear nuestro primer repositorio local y subir el código a un repositorio remoto.\n"
]
},
{
"cell_type": "markdown",
"id": "boxed-newark",
"metadata": {},
"source": [
"## Python"
]
},
{
"cell_type": "markdown",
"id": "fuzzy-bible",
"metadata": {},
"source": [
"\n",
"1- Realizar la instalación de Python 3.X. `recomendado 3.8`\n",
"\n",
"Para esta actividad existen 3 alternativas:\n",
"\n",
"* Instalar Python directamente en su sistema operativo ya sea Windows, OSX o Linux `recomendado`. [Guía de la cátedra](https://gitlab.catedras.linti.unlp.edu.ar/python/material/-/blob/master/guias/instalacion_python.ipynb).\n",
"* Utilizar una herramienta para realizar la instalación en tu sistema operativo: [Conda](https://docs.conda.io/en/latest/) o [Pyenv](https://pypi.org/project/pyenv/). \n",
"* Utilizar directamente la Máquina Virtual provista por la cátedra. Para esto es necesario que se instale en el sistema operativo una herramienta de virtualización como [VirtualBox](https://www.virtualbox.org/wiki/Downloads).\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "reverse-coach",
"metadata": {},
"source": [
"\n",
"2- Escriba un archivo llamado `run.py` un programa en Python que resuelva alguno de los desafíos que vieron en la [Clase 1 de la teoría](https://catedras.linti.unlp.edu.ar/pluginfile.php/86042/mod_resource/content/0/Clase1.pdf).\n",
"\n",
"3- Abra la consola interactiva de Python y escriba un programa que tome dos variables númericas, las sume e imprima el resultado."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "premium-progress",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"La suma es: 10\n"
]
}
],
"source": [
"a = 6\n",
"b = 4\n",
"suma = a + b\n",
"print(f\"La suma es: {suma}\")"
]
},
{
"cell_type": "markdown",
"id": "italian-gardening",
"metadata": {},
"source": [
"## Git\n"
]
},
{
"cell_type": "markdown",
"id": "radio-director",
"metadata": {},
"source": [
"### Introducción"
]
},
{
"cell_type": "markdown",
"id": "recreational-dependence",
"metadata": {},
"source": [
"Como ya vimos Git es una herramienta muy buena que nos permite manejar versiones de nuestro código de manera distribuida con nuestro equipo de trabajo. Para poder realizar esto es necesario contar con un Servidor de Git aparte de tener la herramienta instalada en su máquina. En esta oportunidad vamos a analizar un poco [GitHub](https://github.com/) que es el Servidor de Git más popular actualmente. \n",
"\n",
"### Responda lo siguiente\n"
]
},
{
"cell_type": "markdown",
"id": "liquid-frank",
"metadata": {},
"source": [
": For Center Alignment output string syntax define ‘^’ followed by the width number.\n",
"\n",
"# here 20 spaces are reserved for the \n",
"# particular output string. And the string \n",
"# is printed in the middle \n",
"print(f\"{'Centered' : ^10}\") \n",
"\n",
"1. ¿Cuáles son los repositorios de código de python más populares en Github?\n",
"\n",
"2. ¿Qué licencias tienen?\n",
"\n",
"3. Compare los directorios de los siguientes 3 repositorios:\n",
" a. [numpy](https://github.com/numpy/numpy).\n",
" b. [black](https://github.com/psf/black).\n",
" c. [requests-html](https://github.com/psf/requests-html).\n",
"\n",
" De cada uno indique:\n",
" - ¿Cuál es el objetivo principal de cada librería?\n",
" - ¿Cuál es el archivo que detalla objetivo y uso de cada uno?¿Todos tienen la misma extensión? ¿Qué extensión tiene cada uno?\n",
" - ¿Qué archivos son comunes en cada repositorio?\n",
" - ¿Qué directorios tienen en común?\n",
" - ¿Cuántos branches tienen cada uno?\n",
" - ¿Cuál es el/la mayor contribuyente?\n",
" - ¿Todos los archivos tienen documentación en docstring?"
]
},
{
"cell_type": "markdown",
"id": "confirmed-evans",
"metadata": {},
"source": [
"4. Crea tu propio repositorio en [Github](https://github.com/) siguiendo esta [guía](https://gitlab.catedras.linti.unlp.edu.ar/python/material/-/blob/master/guias/guia_git.ipynb)\n",
"5. Agrega el archivo `run.py`\n",
"6. Agrega el `README.md` con tu nombre y número de alumnx.\n",
"7. Sube todos los cambios al repositorio."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "PgHJzvphFMq-"
},
"source": [
"# Práctica 2 - Seminario de Lenguaje Python 2021"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WDwTAtUvicUt"
},
"source": [
"# Ejercicios"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0Ed-nHY5LdIk"
},
"source": [
"1. Tomando el texto del `README.md` de numpy, imprima todas las líneas que contienen 'http' o 'https'.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "n_EIQ-8VL8hG"
},
"source": [
"2. Indique la palabra que aparece mayor cantidad de veces en el texto del `README.md` de numpy."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EtO2KrCcMFeP"
},
"source": [
"3. Dado un texto solicite por teclado una letra e imprima las palabras que comienzan con dicha letra. En caso que no se haya inrgesado un letra, indique el error. *Ver: módulo string*"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cjJxw6alKpDL"
},
"source": [
"4. Retomamos el código visto en la teoría, que informaba si los caracteres \"@\" o \"!\" formaban parte de una palabra ingresada "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vb06b79_iB8n",
"outputId": "bfbbc040-070d-483e-90d3-91fc4c91dd09"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ingresa la clave (debe tener menos de 10 caracteres y no contener los símbolos:@ y !):@@ggg@@!!!\n",
"Ingresaste alguno de estos símbolos: @ o !\n"
]
}
],
"source": [
"cadena = input(\"Ingresa la clave (debe tener menos de 10 caracteres y no contener los símbolos:@ y !):\")\n",
"if len(cadena) > 10:\n",
" print(\"Ingresaste más de 10 carcateres\")\n",
"cant = 0\n",
"for car in cadena:\n",
" if car == \"@\" or car == \"!\":\n",
" cant = cant + 1\n",
"if cant >= 1:\n",
" print(\"Ingresaste alguno de estos símbolos: @ o !\" )\n",
"else:\n",
" print(\"Ingreoo OK\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AE2UTOU_Mvdv"
},
"source": [
"¿Cómo podemos simplificarlo?"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VwytQaHjFMrk"
},
"source": [
" 5. Dada una frase y un string ingresados por teclado (en ese orden), genere una lista de palabras, y sobre ella, informe la cantidad de palabras en las que se encuentra el string. No distingir entre mayúsculas y minúsculas.\n",
"\n",
"**Ejemplo 1**\n",
"\n",
"- **Para la frase**: \"Tres tristes tigres, tragaban trigo en un trigal, en tres tristes trastos, tragaban trigo tres tristes tigres.\"\n",
"- **Palabra**: \"tres\"\n",
"- **Resultado**: 3\n",
"\n",
"**Ejemplo 2**\n",
"\n",
"- **Para la frase**: \"Tres tristes tigres, tragaban trigo en un trigal, en tres tristes trastos, tragaban trigo tres tristes tigres.\"\n",
"- **Palabra**: \"tigres\"\n",
"- **Resultado**: 2\n",
"\n",
"**Ejemplo 3**\n",
"\n",
"- **Para la frase**: \"Tres tristes tigres, tragaban trigo en un trigal, en tres tristes trastos, tragaban trigo tres tristes tigres.\"\n",
"- **Palabra**: \"TRISTES\"\n",
"- **Resultado**: 3"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IGEwSgJiLEd8"
},
"source": [
"6. Dada una frase donde las palabras pueden estar repetidas e indistintamente en mayúsculas y minúsculas, imprimir una lista con todas las palabras sin repetir y en letra minúscula.\n",
"```python\n",
"frase = \"\"\"\n",
" Si trabajás mucho CON computadoras, eventualmente encontrarás que te gustaría\n",
" automatizar alguna tarea. Por ejemplo, podrías desear realizar una búsqueda y\n",
" reemplazo en un gran número DE archivos de texto, o renombrar y reorganizar\n",
" un montón de archivos con fotos de una manera compleja. Tal vez quieras\n",
" escribir alguna pequeña base de datos personalizada, o una aplicación\n",
" especializada con interfaz gráfica, o UN juego simple.\n",
" \"\"\"\n",
"```\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2LefGwJPFMro"
},
"source": [
"7. Trabajando con los contenidos de los archvios que pueden acceder en el curso:\n",
"* [nombres](https://catedras.linti.unlp.edu.ar/mod/resource/view.php?id=29929)\n",
"* [eval1](https://catedras.linti.unlp.edu.ar/mod/resource/view.php?id=29927)\n",
"* [eval2](https://catedras.linti.unlp.edu.ar/mod/resource/view.php?id=29928)\n",
"\n",
"Copiar el contenido de los archvios en variables de tipo string y realizar. \n",
"\n",
"* generar una estructura con los nombres de los estudiantes y la suma de ambas. \n",
"* Calcular el promedio de las notas totales e informar quiénes obtuvieron menos que el promedio.\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"notas.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zlcK-8SRa31t"
},
"source": [
"8. Con la información de los archivos de texto que se encuentran disponibles en el curso: \n",
"* [nombres_1](https://catedras.linti.unlp.edu.ar/mod/resource/view.php?id=29929)\n",
"* [nombres_2](https://catedras.linti.unlp.edu.ar/mod/resource/view.php?id=29930)\n",
"\n",
"**Nota**: Trabaje con los datos en variables de tipo string.\n",
"\n",
"\n",
"* Indique los nombres que se encuentran en ambos. **Nota**: pruebe utilizando list comprehension.\n",
"* Genere dos variables con la lista de notas que se incluyen en los archivos: *eval1.txt* y *eval2.txt* e imprima con formato los nombres de los estudiantes con las correspondientes nota y la suma de ambas como se ve en la imagen:\n",
"\n",
"<center>\n",
" <img src=\"https://i.imgur.com/0OD9FBr.png\" title=\"source: imgur.com\" />\n",
"</center>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "j0wd_13T77ob"
},
"source": [
"9. Escbriba un programa que solicite que se ingrese una palabra o frase y permita identificar si la misma es un [Heterograma](https://es.qaz.wiki/wiki/Isogram) (tenga en cuenta que el contenido del enlace es una traducción del inglés por lo cual las palabras que nombra no son heterogramas en español). Un Heterograma es una palabra o frase que no tiene ninguna letra repetida entre sus caracteres.\n",
"\n",
"**Tener en cuenta**\n",
"- Lo que no se puede repetir en la frase son sólo aquellos caracteres que sean letras.\n",
"- No se distingue entre mayúsculas y minúsculas, es decir si en la frase o palabra tenemos la letra \"T\" y la letra \"t\" la misma NO será un Hererograma.\n",
"- Para simplificar el ejercicio vamos a tomar como que las letras con tilde y sin tilde son distintas. Ya que Python las diferencia:\n",
"```python\n",
">>> 'u' == 'ú'\n",
"False\n",
"```\n",
"\n",
"**Ejemplos**\n",
"\n",
"|Entreda|¿Heterograma?|\n",
"|-----|-----|\n",
"|cruzamiento|Sí|\n",
"|centrifugados|Sí|\n",
"|portón|Sí|\n",
"|casa|No|\n",
"|día de sol|No|\n",
"|con diez uñas|Sí|\n",
"|no-se-duplica|Sí|"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YBU4hoEWzFw_"
},
"source": [
"10. Escriba un programa que solicite por teclado una palabra y calcule el valor de la misma dada la siguiente tabla de valores del juego Scrabble:\n",
"\n",
"\n",
"|Letra |valor|\n",
"|----- |-----|\n",
"|A, E, I, O, U, L, N, R, S, T|1|\n",
"|D, G |2|\n",
"|B, C, M, P |3|\n",
"|F, H, V, W, Y |4|\n",
"|K |5|\n",
"|J, X |8|\n",
"|Q, Z |10|\n",
"\n",
"<center>\n",
" <i>*Tenga en cuenta qué estructura elige para guardar estos valores en Python</i>\n",
"</center>\n",
"\n",
"**Ejemplo 1**\n",
"\n",
"- **Palabra**: \"solo\"\n",
"- **valor**: 4\n",
"\n",
"**Ejemplo 2**\n",
"\n",
"- **Palabra**: \"tomate\"\n",
"- **valor**: 8"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "PgdpCFuIko4l"
},
"source": [
"11. ¿Conoces [Pypi](https://pypi.org/)? Es un sitio con gran variedad de librerías que podés instalar libremente a través de la herramienta **[pip](https://pip.pypa.io/en/stable/)**. Te permite buscar proyectos según el área de interés. Queremos procesar esta lista de categorías como un string para poder saber las subcategorías tiene cada una. Copia el contenido del archivo [categorias](https://catedras.linti.unlp.edu.ar/mod/resource/view.php?id=29925) como contenido de una variable string para poder obtener información de la **cantidad de subcategorías** y la **lista que incluye cada categoría**. \n",
"\n",
"**Nota**: no es necesario diferenciar las subcategorías que se encuentren anidadas.\n",
"\n",
"**Ejemplo:**\n",
"De la categoría 'Communications' hay 23 subcategorías, y se debe contar con la lista que se encuentran dentro de la misma.\n",
"\n",
"\n",
"\n",
"|'Communications': |\n",
"|----- |\n",
"| 'cant': 23,|\n",
"| 'nombres': |\n",
"| 'BBS',|\n",
"| 'Chat',|\n",
"| 'ICQ',|\n",
"| 'Internet Relay Chat',|\n",
"| ......|"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NwjmBFdldsvX"
},
"source": [
"12. La idea es tratar de programar una de las partes principales del juego \"Buscaminas\". La idea es que dado una estructura que dice que celdas tienen minas y que celdas no las tienen, como la siguiente:\n",
"\n",
"```python\n",
"[\n",
" '-*-*-',\n",
" '--*--',\n",
" '----*',\n",
" '*----',\n",
"]\n",
"```\n",
"\n",
"Generar otra que indique en las celdas vacías la cantidad de bombas que la rodean, para el ejemplo anterior, sería:\n",
"\n",
"```python\n",
"[\n",
" '1*3*1',\n",
" '12*32',\n",
" '1212*',\n",
" '*1011',\n",
"]\n",
"```\n",
"\n",
"**Nota**: Defina al menos una función en el código (si hay mas mejor) y documente las mismas con **docstring** que es lo que hacen."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ejercitación por Python Plus (10 pts)\n",
"\n",
"Elija un ejercicio entre el 7 y el 12 de esta práctica y suba la resolución a su repositorio personal de Github donde subieron archivos en para la Práctica 1."
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "Practica 2.ipynb",
"provenance": [],
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment