diff --git a/.eleventy.js b/.eleventy.js deleted file mode 100644 index 5e124456d..000000000 --- a/.eleventy.js +++ /dev/null @@ -1,72 +0,0 @@ -const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight') -const eleventyNavigationPlugin = require('@11ty/eleventy-navigation') -const toBootstrapNav = require('eleventy-navigation-bootstrap') -const pluginTOC = require('eleventy-plugin-toc') -const markdownIt = require('markdown-it') -const markdownItAnchor = require('markdown-it-anchor') -const markdownItHighlightJS = require('markdown-it-highlightjs') -const readerBar = require('henry-reader-bar') -const readingTime = require('henry-reading-time') - -const mdOptions = { - html: true, - breaks: true, - linkify: true, - typographer: true, -} - -const mdAnchorOpts = { - permalink: true, - permalinkClass: 'anchor-link', - permalinkSymbol: '', - level: [1, 2, 3, 4], -} - -module.exports = function (eleventyConfig) { - eleventyConfig.setLibrary( - 'md', - markdownIt(mdOptions) - .use(markdownItAnchor, mdAnchorOpts) - .use(markdownItHighlightJS) - ) - - eleventyConfig.addPlugin(eleventyNavigationPlugin) - eleventyConfig.addPlugin(readingTime) - eleventyConfig.addPlugin(readerBar) - eleventyConfig.addPlugin(syntaxHighlight) - - eleventyConfig.addPlugin(pluginTOC, { - tags: ['h2', 'h3'], - ul: true, - }) - - eleventyConfig.addPassthroughCopy('_src/assets') - eleventyConfig.addPassthroughCopy('_src/localStyles') - - eleventyConfig.addNunjucksFilter('bootstrapNav', toBootstrapNav) - - eleventyConfig.addLinter( - 'Spelling check', - function (content, inputPath, outputPath) { - let words = 'lenght, .lenght, .rigth'.split(',') - - // Eleventy 1.0+: use this.inputPath and this.outputPath instead - if (inputPath.endsWith('.md')) { - for (let word of words) { - let regexp = new RegExp('\\b(' + word + ')\\b', 'gi') - if (content.match(regexp)) { - console.warn(`Spelling check (${inputPath}) Found: ${word}`) - } - } - } - } - ) - - return { - dir: { - layouts: '/_src/layouts', - data: '/_src/data', - output: '_dist', - }, - } -} diff --git a/.eleventyignore b/.eleventyignore deleted file mode 100644 index 9c27e9471..000000000 --- a/.eleventyignore +++ /dev/null @@ -1,2 +0,0 @@ -**/node_modules -**/homework \ No newline at end of file diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe077042..000000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 36179ed71..000000000 --- a/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -node_modules -package-lock.json - -# Eleventy build -_dist -_cache -/_src/localStyles diff --git "a/01 - Introducci\303\263n a la Programaci\303\263n/.ipynb_checkpoints/Preliminares - 01-checkpoint.ipynb" "b/01 - Introducci\303\263n a la Programaci\303\263n/.ipynb_checkpoints/Preliminares - 01-checkpoint.ipynb" deleted file mode 100644 index a62bcd0ee..000000000 --- "a/01 - Introducci\303\263n a la Programaci\303\263n/.ipynb_checkpoints/Preliminares - 01-checkpoint.ipynb" +++ /dev/null @@ -1,2344 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variables" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola Mundo !\n" - ] - } - ], - "source": [ - "a = 'Hola '\n", - "b = 'Mundo !'\n", - "print(a + b)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "15\n" - ] - } - ], - "source": [ - "x = 3\n", - "y = 12\n", - "print(x + y)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "can only concatenate str (not \"int\") to str", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_18232/136165486.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str" - ] - } - ], - "source": [ - "print(a + x)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3.0\n" - ] - } - ], - "source": [ - "# Dividir \"y\" entre \"x\"\n", - "y = 9\n", - "x = 3\n", - "print(y/x)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "16\n" - ] - } - ], - "source": [ - "# Potencia de \"y\" elevado a la \"x\"\n", - "y = 2\n", - "x = 4\n", - "print(y**x)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "# Devolver el resto de la división\n", - "y = 13\n", - "x = 3\n", - "print(y%x)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número es igual a cero\n" - ] - } - ], - "source": [ - "valor = 0\n", - "if (valor < 0):\n", - " print('El número es negativo')\n", - "elif (valor > 0):\n", - " print('El número es positivo')\n", - "else:\n", - " print('El número es igual a cero')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n" - ] - } - ], - "source": [ - "for n in range(1,10):\n", - " print(n)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n" - ] - } - ], - "source": [ - "n = 1\n", - "while (n < 10):\n", - " print(n)\n", - " n = n + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "edad = (3,1,0.2,8,7)\n", - "print(len(edad))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Listas" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista = ['Rojo','Azul','Amarillo','Naranja','Violeta','Verde']" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul', 'Amarillo', 'Negro', 'Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul']\n" - ] - } - ], - "source": [ - "print(mi_lista[0:2])" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul']\n" - ] - } - ], - "source": [ - "print(mi_lista[:2])" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Azul', 'Amarillo']\n" - ] - } - ], - "source": [ - "print(mi_lista[1:])" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.insert(3,'Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "print(mi_lista.index('Azul'))" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.insert(3,'Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.extend(['Marrón','Gris'])" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']\n" - ] - } - ], - "source": [ - "print(['a','b','c'] * 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "print(mi_lista.index('Azul'))" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/2480624766.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmi_lista\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Blanco'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "mi_lista.remove('Blanco')" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/298389232.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmi_lista\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Negro'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "mi_lista.remove('Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "ultimo = mi_lista.pop()" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gris\n" - ] - } - ], - "source": [ - "ultimo = mi_lista.pop()\n", - "print(ultimo)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "ultimo = mi_lista.pop()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Amarillo'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ultimo" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla=tuple(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Azul\n" - ] - } - ], - "source": [ - "print(mi_tupla[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Rojo' in mi_tupla" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - " mi_tupla.count('Rojo')" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris', 'Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris', 'Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris']\n" - ] - } - ], - "source": [ - "print(mi_lista[:] * 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_tupla.count('Rojo')" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla='Gaspar', 5, 8, 1999" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nombre: Gaspar - Dia: 5 - Mes: 8 - Año: 1999\n" - ] - } - ], - "source": [ - "nombre, dia, mes, año = mi_tupla\n", - "print(\"Nombre: \", nombre, \" - Dia:\", dia, \" - Mes: \", mes, \" - Año: \", año)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Darío 39\n", - "Mi nombre es Darío . Mi edad es 39 años\n", - "Mi nombre es Darío. Mi edad es 39 años\n" - ] - } - ], - "source": [ - "nombre = 'Darío'\n", - "edad = 39\n", - "print(nombre, edad)\n", - "print(\"Mi nombre es\", nombre, \". Mi edad es\", edad, \"años\")\n", - "print(\"Mi nombre es {}. Mi edad es {} años\". format(nombre, edad))" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario = { 'Colores Primarios': ['Rojo','Azul','Amarillo'], \n", - " 'Colores secundarios': ['Naranja','Violeta','Verde'], \n", - " 'Clave3': 10,\n", - " 'Clave4': False}" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_diccionario['Colores secundarios'])" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':{'numeros':[1,2,3,4,5]}}" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['Clave1', 'Clave2'])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_values(['Valor1', {'numeros': [1, 2, 3, 4, 5]}])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.values())" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(mi_diccionario)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "50\n" - ] - } - ], - "source": [ - "edad = 60\n", - "edad_compa = 50\n", - "if (edad < edad_compa):\n", - " print(edad)\n", - " if (edad < 100):\n", - " print(edad + 100)\n", - " else:\n", - " print(edad - 100)\n", - "else:\n", - " print(edad_compa)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" - ] - } - ], - "source": [ - "primeros_10 = [0,1,2,3,4,5,6,7,8,9]\n", - "print(primeros_10)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "2\n", - "4\n", - "6\n", - "8\n", - "\n", - "va de nuevo....\n", - "\n" - ] - } - ], - "source": [ - "for n in primeros_10:\n", - " if (n%2 == 0):\n", - " print(n)\n", - " primeros_10[n]=0\n", - "print(\"\\nva de nuevo....\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 0, 3, 0, 5, 0, 7, 0, 9]\n" - ] - } - ], - "source": [ - "print(primeros_10)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "0\n", - "3\n", - "0\n", - "5\n", - "0\n", - "7\n", - "0\n", - "9\n", - "\n", - "va de nuevo....\n", - "\n" - ] - } - ], - "source": [ - "for n in primeros_10:\n", - " print(primeros_10[n])\n", - "print(\"\\nva de nuevo....\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "9\n" - ] - } - ], - "source": [ - "print(primeros_10[9])" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "primeros_10 = ['a','b','c','d']" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "ename": "IndexError", - "evalue": "list index out of range", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprimeros_10\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mIndexError\u001b[0m: list index out of range" - ] - } - ], - "source": [ - "primeros_10[4]" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "n = 40\n", - "sequence = [0,1]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986]\n" - ] - } - ], - "source": [ - "for i in range(2,n):\n", - " sequence.append(sequence[i-1]+sequence[i-2])\n", - "print (sequence)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario = { 'Colores Primarios': ['Rojo','Azul','Amarillo'], \n", - " 'Colores secundarios': ['Naranja','Violeta','Verde'], \n", - " 'Clave3': 10,\n", - " 'Clave4': False}" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_diccionario['Colores secundarios'])" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario['Clave3']=2" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Argentina': 'Buenos Aires', 'Italia': 'Roma', 'Inglaterra': 'Londres'}" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_diccionario" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario['Clave5']='Otro ejemplo'" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla=(\"Argentina\", \"Italia\", \"Inglaterra\")\n", - "mi_diccionario={mi_tupla[0]:\"Buenos Aires\", mi_tupla[1]:\"Roma\", mi_tupla[2]:\"Londres\"}" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':(1,2,3,4,5)}" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tuple" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':{'numeros':[1,2,3,4,5]}}" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':[1,2,3,4,5]}" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['Clave1', 'Clave2'])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_values(['Valor1', [1, 2, 3, 4, 5]])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.values())" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(mi_tupla)" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": {}, - "outputs": [], - "source": [ - "def imprimir_valor_variable(var):\n", - " print('El valor de la variable es' + str(var))" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor de la variable es['Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris']\n" - ] - } - ], - "source": [ - "imprimir_valor_variable(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def ordenar_dos_numeros(num1, num2):\n", - " if (num1 > num2):\n", - " return num2, num1\n", - " else:\n", - " return num1, num2" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 8)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ordenar_dos_numeros(8,1)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(numero):\n", - " '''\n", - " Devuelve el factorial\n", - " '''\n", - " if (numero > 1):\n", - " numero = numero * factorial(numero - 1)\n", - " return numero" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "factorial(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function factorial in module __main__:\n", - "\n", - "factorial(numero)\n", - " Devuelve el factorial\n", - "\n" - ] - } - ], - "source": [ - "help(factorial)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def dividir(dividendo, divisor = 1):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'divisor' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/1862935505.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdivisor\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mNameError\u001b[0m: name 'divisor' is not defined" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "divisor = 5\n", - "def dividir(dividendo):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "divisor = 5\n", - "def dividir(dividendo, divisor = 1):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lambda_producto = lambda x, y: x * y\n", - "lambda_producto(3, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "class Animal:\n", - " '''\n", - " En esta clase se crean los animales\n", - " '''\n", - " def __init__(self, especie, edad, color):\n", - " self.especie = especie\n", - " self.edad = edad\n", - " self.color = color\n", - " def mePresento(self):\n", - " print('Hola, soy ', self.especie, ', de color', self.color, ' y tengo ', self.edad, ' años')\n", - " def cumplirAños(self):\n", - " self.edad = self.edad + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ratón\n", - "2\n", - "Liebre\n", - "3\n" - ] - } - ], - "source": [ - "a1 = Animal('Ratón', 2, 'Marrón')\n", - "print(a1.especie)\n", - "print(a1.edad)\n", - "\n", - "a2 = Animal('Liebre', 3, 'Gris')\n", - "print(a2.especie)\n", - "print(a2.edad)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Ratón , de color Marrón y tengo 2 años\n" - ] - } - ], - "source": [ - "a1.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Liebre , de color Gris y tengo 3 años\n" - ] - } - ], - "source": [ - "a2.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Ratón , de color Marrón y tengo 3 años\n" - ] - } - ], - "source": [ - "a1.cumplirAños()\n", - "a1.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "# Caja Negra\n", - "import unittest\n" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def suma(num_1, num_2):\n", - " return num_1 + num_2" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "class CajaNegraTest(unittest.TestCase):\n", - "\n", - " def test_suma_dos_positivos(self):\n", - " num_1 = 10\n", - " num_2 = 5\n", - "\n", - " resultado = suma(num_1, num_2)\n", - "\n", - " self.assertEqual(resultado, 15)\n", - "\n", - " def test_suma_dos_negativos(self):\n", - " num_1 = -10\n", - " num_2 = -7\n", - "\n", - " resultado = suma(num_1, num_2)\n", - "\n", - " self.assertEqual(resultado, -17)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_suma_dos_negativos (__main__.CajaNegraTest) ... ok\n", - "test_suma_dos_positivos (__main__.CajaNegraTest) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if __name__ == '__main__':\n", - " unittest.main()" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_suma_dos_negativos (__main__.CajaNegraTest) ... ok\n", - "test_suma_dos_positivos (__main__.CajaNegraTest) ... ok\n", - "test_es_mayor_de_edad (__main__.PruebaDeCristalTest) ... ok\n", - "test_es_menor_de_edad (__main__.PruebaDeCristalTest) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 4 tests in 0.006s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Caja de Cristal\n", - "import unittest\n", - "\n", - "def es_mayor_de_edad(edad):\n", - " if edad >= 18:\n", - " return True\n", - " else:\n", - " return False\n", - "\n", - "class PruebaDeCristalTest(unittest.TestCase):\n", - "\n", - " def test_es_mayor_de_edad(self):\n", - " edad = 20\n", - "\n", - " resultado = es_mayor_de_edad(edad)\n", - "\n", - " self.assertEqual(resultado, True)\n", - "\n", - " def test_es_menor_de_edad(self):\n", - " edad = 15\n", - "\n", - " resultado = es_mayor_de_edad(edad)\n", - "\n", - " self.assertEqual(resultado, False)\n", - "\n", - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if __name__ == '__main__':\n", - " unittest.main()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# Python\n", - "\n", - "def busca_pais(paises, pais):\n", - " '''\n", - " Paises es un diccionario. Pais es la llave.\n", - " Codigo con el principio EAFP.\n", - " ''' \n", - " try:\n", - " return paises[pais]\n", - " except KeyError:\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "division by zero\n", - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" - ] - } - ], - "source": [ - "def divide_elementos_de_lista(lista, divisor):\n", - " '''\n", - " Cada elemento de una lista es dividida por un divisor definido.\n", - " En caso de error de tipo ZeroDivisionError que\n", - " significa error al dividir en cero\n", - " la función devuelve la lista inicial\n", - " '''\n", - " try:\n", - " return [i / divisor for i in lista]\n", - " \n", - " except ZeroDivisionError as e:\n", - " print(e)\n", - " return lista\n", - "\n", - "lista = list(range(10))\n", - "divisor = 0\n", - "\n", - "print(divide_elementos_de_lista(lista, divisor))" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 1.3333333333333333, 1.6666666666666667, 2.0, 2.3333333333333335, 2.6666666666666665, 3.0]\n" - ] - } - ], - "source": [ - "divisor = 3\n", - "print(divide_elementos_de_lista(lista, divisor))" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "4\n", - "9\n", - "2\n" - ] - } - ], - "source": [ - "lista = [5, 4, 9, 2]\n", - "i = 0\n", - "while i < len(lista):\n", - " elemento = lista[i]\n", - " print(elemento)\n", - " i += 1" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "4\n", - "9\n", - "2\n" - ] - } - ], - "source": [ - "lista = [5, 4, 9, 2]\n", - "for elemento in lista:\n", - " print(elemento)" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cadena True\n", - "numero False\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\lopez\\AppData\\Local\\Temp/ipykernel_10044/1562366592.py:1: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working\n", - " from collections import Iterable\n" - ] - } - ], - "source": [ - "from collections import Iterable\n", - "cadena = \"Hola\"\n", - "numero = 3\n", - "print(\"cadena\", isinstance(cadena, Iterable))\n", - "print(\"numero\", isinstance(numero, Iterable))" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['H', 'o', 'l', 'a']\n" - ] - } - ], - "source": [ - "print(list(\"Hola\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "print(sum([1, 2, 3]))" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H-o-l-a\n" - ] - } - ], - "source": [ - "print(\"-\".join(\"Hola\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 92, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a\n", - "b\n", - "c\n" - ] - } - ], - "source": [ - "mi_dict = {'a':1, 'b':2, 'c':3}\n", - "for i in mi_dict:\n", - " print(i)" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": {}, - "outputs": [], - "source": [ - "libro = ['página1', 'página2', 'página3', 'página4']\n", - "marcapaginas = iter(libro)" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "página1\n", - "página2\n", - "página3\n", - "página4\n" - ] - } - ], - "source": [ - "print(next(marcapaginas))\n", - "print(next(marcapaginas))\n", - "print(next(marcapaginas))\n", - "print(next(marcapaginas))" - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "metadata": {}, - "outputs": [ - { - "ename": "StopIteration", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mStopIteration\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/1391636315.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmarcapaginas\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mStopIteration\u001b[0m: " - ] - } - ], - "source": [ - "print(next(marcapaginas))" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 99, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "14 % 3" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 97, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "14 // 3" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "a = [1,2]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "b = a.copy()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "b.append(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2]\n" - ] - } - ], - "source": [ - "print(a)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3]\n" - ] - } - ], - "source": [ - "print(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "b.append(4)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3]\n" - ] - } - ], - "source": [ - "print(a)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4]\n" - ] - } - ], - "source": [ - "print(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "x = 7" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "7 & 7" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n" - ] - } - ], - "source": [ - "print(x)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "a = [1, 2]" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "b = [\"Uno\", \"Dos\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "c = zip(a, b)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "zip" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(c)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(1, 'Uno'), (2, 'Dos')]" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(c)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "frase = \"El perro de san roque no tiene rabo\"" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['r', 'r', 'r', 'r']\n" - ] - } - ], - "source": [ - "errores = [i for i in frase if i == 'r']\n", - "print(errores)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 1]\n", - "[0, 1, 1, 2]\n", - "[0, 1, 1, 2, 3]\n", - "[0, 1, 1, 2, 3, 5]\n", - "[0, 1, 1, 2, 3, 5, 8]\n", - "[0, 1, 1, 2, 3, 5, 8, 13]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169]\n", - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986]\n" - ] - } - ], - "source": [ - "n = 40 \n", - "sequence = [0,1] \n", - "for i in range(2,n): \n", - " sequence.append(sequence[i-1]+sequence[i-2]) \n", - " print (sequence)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git "a/01 - Introducci\303\263n a la Programaci\303\263n/.ipynb_checkpoints/README-checkpoint.md" "b/01 - Introducci\303\263n a la Programaci\303\263n/.ipynb_checkpoints/README-checkpoint.md" deleted file mode 100644 index bc5bbc46d..000000000 --- "a/01 - Introducci\303\263n a la Programaci\303\263n/.ipynb_checkpoints/README-checkpoint.md" +++ /dev/null @@ -1,39 +0,0 @@ -![HenryLogo](https://henry-11ty-resources.s3.sa-east-1.amazonaws.com/Assets/logo-henry-white-lg.png) - -# Introducción a la Programación - -## ¿Qué es la Programación? - -En la imagen, se representa un pequeño robot abeja en una esquina del cuadrilátero, y en la otra una flor. El objetivo del robot abeja es llegar hasta la flor, esquivando los arbustos que hay de por medio. Para esto, hay que decirle cómo se debe mover, pero puede saltar de a un casillero por vez y la forma en que se le puede "decir" es a travez de instrucciones. Esas instrucciones son "arriba", "abajo", "izquierda" y "derecha". Y por supuesto, teniendo en cuenta que debe moverse dentro del cuadrilátero. - -Ahora bien, surgen algunas preguntas: - -* ¿Cuántas instrucciones son necesarias? - -* Al ser más de una instrucción ¿Es importante el orden en que se ejecutan? - -* ¿Hay más de una forma, en que el robot abeja pueda llegar a la flor? - -* ¿Hay un camino más óptimo? - -* ¿Cómo puedo medir si un camino es más óptimo que otro? - -![unaImagenConBoxShadow](../_src/assets/01_imagen01.jpg) - -Cualquiera de las siguiente, podrían ser una solución: -* Derecha, Derecha, Arriba, Arriba, Derecha, Derecha, Arriba, Arriba, Arriba, Derecha, Derecha, Arriba -* Derecha, Derecha, Derecha, Derecha, Derecha, Derecha, Arriba, Arriba, Arriba, Izquierda, Izquierda, Arriba, Arriba, Derecha, Arriba, Derecha -* Arriba, Derecha, Derecha, Arriba, Arriba, Arriba, Arriba, Arriba, Derecha, Derecha, Derecha, Derecha, Arriba - -Lo importante, en principio, es que notemos que al resolver el problema planteado, lo que estamos haciendo, utilizando un pensamiento lógico, es precisamente, programación - -Entonces, programar, es armar una secuencia lógica de pasos a seguir, en pos de cumplir un objetivo. En el ejemplo visto, tuvimos un contexto que nos marcaba las posibilidades y restricciones del problema, por ejemplo moverse dentro del cuadrílatero ó no chocar con los arbustos. Y también un conjunto de instrucciones disponibles, que definian el lenguaje que teníamos que usar, para que el robot comprenda las instrucciones. Lo que usamos fue un lenguaje formal, muy básico y que fue suficiente para resolver el problema. Éstos lenguajes, se denominan lenguajes de programación, nos permiten plasmar esas instrucciones necesarias para darle una solución al problema que queremos resolver, generando así un programa (ó software). - -Los primeros lenguajes de programación se escribían en instrucciones que podían interpretar las computadores muy facilmente, pero que resultaban menos amigables a las personas, tales como el lenguaje ensamblador (o Assembler) o Fortran, desarrollado en 1955. Con el tiempo, esto fue cambiando, se fueron desarrolando lenguajes de programación de más alto nivel y con diferentes aplicaciones, que por lo general eran comerciales o científicas, pero tambien con fines educativos, es decir, lenguajes desarrollados para aprender a programar, y consecuentemente, también sea más sencillo. - -Éste último, es el caso de Python, que nace a finales de la década del 80, fue pensado para principiantes por su facilidad de aprendizaje y uso. Su código era compacto pero legible. Con el correr de los años fue incluyendo mejoras hasta llegar tambien a ser de licencia libre. Hoy por hoy, es usado desde en simples "scripts", hasta grandes servidores web que proveen servicio ininterrumpido las 24hs. Es utilizado para la programación de interfaces gráficas y bases de datos. Además tiene una amplia aceptación por científicos que hacen aplicaciones para las supercomputadores más rápidas del mundo y por los niños que recién están comenzando a programar. - - -```python - -``` diff --git "a/01 - Introducci\303\263n a la Programaci\303\263n/Practica.py" "b/01 - Introducci\303\263n a la Programaci\303\263n/Practica.py" deleted file mode 100644 index f3425b165..000000000 --- "a/01 - Introducci\303\263n a la Programaci\303\263n/Practica.py" +++ /dev/null @@ -1 +0,0 @@ -print('Hola Mundo!222') \ No newline at end of file diff --git "a/01 - Introducci\303\263n a la Programaci\303\263n/Preliminares - 01.ipynb" "b/01 - Introducci\303\263n a la Programaci\303\263n/Preliminares - 01.ipynb" deleted file mode 100644 index a0181f9c0..000000000 --- "a/01 - Introducci\303\263n a la Programaci\303\263n/Preliminares - 01.ipynb" +++ /dev/null @@ -1,2364 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variables" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola Mundo !\n" - ] - } - ], - "source": [ - "a = 'Hola '\n", - "b = 'Mundo !'\n", - "print(a + b)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "15\n" - ] - } - ], - "source": [ - "x = 3\n", - "y = 12\n", - "print(x + y)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "can only concatenate str (not \"int\") to str", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_18232/136165486.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str" - ] - } - ], - "source": [ - "print(a + x)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3.0\n" - ] - } - ], - "source": [ - "# Dividir \"y\" entre \"x\"\n", - "y = 9\n", - "x = 3\n", - "print(y/x)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "16\n" - ] - } - ], - "source": [ - "# Potencia de \"y\" elevado a la \"x\"\n", - "y = 2\n", - "x = 4\n", - "print(y**x)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "# Devolver el resto de la división\n", - "y = 13\n", - "x = 3\n", - "print(y%x)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número es igual a cero\n" - ] - } - ], - "source": [ - "valor = 0\n", - "if (valor < 0):\n", - " print('El número es negativo')\n", - "elif (valor > 0):\n", - " print('El número es positivo')\n", - "else:\n", - " print('El número es igual a cero')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n" - ] - } - ], - "source": [ - "for n in range(1,10):\n", - " print(n)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n" - ] - } - ], - "source": [ - "n = 1\n", - "while (n < 10):\n", - " print(n)\n", - " n = n + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "edad = (3,1,0.2,8,7)\n", - "print(len(edad))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Listas" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista = ['Rojo','Azul','Amarillo','Naranja','Violeta','Verde']" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul', 'Amarillo', 'Negro', 'Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul']\n" - ] - } - ], - "source": [ - "print(mi_lista[0:2])" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul']\n" - ] - } - ], - "source": [ - "print(mi_lista[:2])" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Azul', 'Amarillo']\n" - ] - } - ], - "source": [ - "print(mi_lista[1:])" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.insert(3,'Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "print(mi_lista.index('Azul'))" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.insert(3,'Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.extend(['Marrón','Gris'])" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']\n" - ] - } - ], - "source": [ - "print(['a','b','c'] * 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "print(mi_lista.index('Azul'))" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/2480624766.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmi_lista\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Blanco'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "mi_lista.remove('Blanco')" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/298389232.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmi_lista\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Negro'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "mi_lista.remove('Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "ultimo = mi_lista.pop()" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gris\n" - ] - } - ], - "source": [ - "ultimo = mi_lista.pop()\n", - "print(ultimo)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "ultimo = mi_lista.pop()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Amarillo'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ultimo" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla=tuple(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Azul\n" - ] - } - ], - "source": [ - "print(mi_tupla[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Rojo' in mi_tupla" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - " mi_tupla.count('Rojo')" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris', 'Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris', 'Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris']\n" - ] - } - ], - "source": [ - "print(mi_lista[:] * 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_tupla.count('Rojo')" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla='Gaspar', 5, 8, 1999" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nombre: Gaspar - Dia: 5 - Mes: 8 - Año: 1999\n" - ] - } - ], - "source": [ - "nombre, dia, mes, año = mi_tupla\n", - "print(\"Nombre: \", nombre, \" - Dia:\", dia, \" - Mes: \", mes, \" - Año: \", año)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Darío 39\n", - "Mi nombre es Darío . Mi edad es 39 años\n", - "Mi nombre es Darío. Mi edad es 39 años\n" - ] - } - ], - "source": [ - "nombre = 'Darío'\n", - "edad = 39\n", - "print(nombre, edad)\n", - "print(\"Mi nombre es\", nombre, \". Mi edad es\", edad, \"años\")\n", - "print(\"Mi nombre es {}. Mi edad es {} años\". format(nombre, edad))" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario = { 'Colores Primarios': ['Rojo','Azul','Amarillo'], \n", - " 'Colores secundarios': ['Naranja','Violeta','Verde'], \n", - " 'Clave3': 10,\n", - " 'Clave4': False}" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_diccionario['Colores secundarios'])" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':{'numeros':[1,2,3,4,5]}}" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['Clave1', 'Clave2'])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_values(['Valor1', {'numeros': [1, 2, 3, 4, 5]}])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.values())" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(mi_diccionario)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "50\n" - ] - } - ], - "source": [ - "edad = 60\n", - "edad_compa = 50\n", - "if (edad < edad_compa):\n", - " print(edad)\n", - " if (edad < 100):\n", - " print(edad + 100)\n", - " else:\n", - " print(edad - 100)\n", - "else:\n", - " print(edad_compa)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" - ] - } - ], - "source": [ - "primeros_10 = [0,1,2,3,4,5,6,7,8,9]\n", - "print(primeros_10)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "2\n", - "4\n", - "6\n", - "8\n", - "\n", - "va de nuevo....\n", - "\n" - ] - } - ], - "source": [ - "for n in primeros_10:\n", - " if (n%2 == 0):\n", - " print(n)\n", - " primeros_10[n]=0\n", - "print(\"\\nva de nuevo....\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 0, 3, 0, 5, 0, 7, 0, 9]\n" - ] - } - ], - "source": [ - "print(primeros_10)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "0\n", - "3\n", - "0\n", - "5\n", - "0\n", - "7\n", - "0\n", - "9\n", - "\n", - "va de nuevo....\n", - "\n" - ] - } - ], - "source": [ - "for n in primeros_10:\n", - " print(primeros_10[n])\n", - "print(\"\\nva de nuevo....\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "9\n" - ] - } - ], - "source": [ - "print(primeros_10[9])" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "primeros_10 = ['a','b','c','d']" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "ename": "IndexError", - "evalue": "list index out of range", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprimeros_10\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mIndexError\u001b[0m: list index out of range" - ] - } - ], - "source": [ - "primeros_10[4]" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "n = 40\n", - "sequence = [0,1]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986]\n" - ] - } - ], - "source": [ - "for i in range(2,n):\n", - " sequence.append(sequence[i-1]+sequence[i-2])\n", - "print (sequence)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario = { 'Colores Primarios': ['Rojo','Azul','Amarillo'], \n", - " 'Colores secundarios': ['Naranja','Violeta','Verde'], \n", - " 'Clave3': 10,\n", - " 'Clave4': False}" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_diccionario['Colores secundarios'])" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario['Clave3']=2" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Argentina': 'Buenos Aires', 'Italia': 'Roma', 'Inglaterra': 'Londres'}" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_diccionario" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario['Clave5']='Otro ejemplo'" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla=(\"Argentina\", \"Italia\", \"Inglaterra\")\n", - "mi_diccionario={mi_tupla[0]:\"Buenos Aires\", mi_tupla[1]:\"Roma\", mi_tupla[2]:\"Londres\"}" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':(1,2,3,4,5)}" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tuple" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':{'numeros':[1,2,3,4,5]}}" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':[1,2,3,4,5]}" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['Clave1', 'Clave2'])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_values(['Valor1', [1, 2, 3, 4, 5]])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.values())" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(mi_tupla)" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": {}, - "outputs": [], - "source": [ - "def imprimir_valor_variable(var):\n", - " print('El valor de la variable es' + str(var))" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor de la variable es['Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris']\n" - ] - } - ], - "source": [ - "imprimir_valor_variable(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def ordenar_dos_numeros(num1, num2):\n", - " if (num1 > num2):\n", - " return num2, num1\n", - " else:\n", - " return num1, num2" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 8)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ordenar_dos_numeros(8,1)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(numero):\n", - " '''\n", - " Devuelve el factorial\n", - " '''\n", - " if (numero > 1):\n", - " numero = numero * factorial(numero - 1)\n", - " return numero" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "factorial(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function factorial in module __main__:\n", - "\n", - "factorial(numero)\n", - " Devuelve el factorial\n", - "\n" - ] - } - ], - "source": [ - "help(factorial)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def dividir(dividendo, divisor = 1):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'divisor' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/1862935505.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdivisor\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mNameError\u001b[0m: name 'divisor' is not defined" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "divisor = 5\n", - "def dividir(dividendo):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "divisor = 5\n", - "def dividir(dividendo, divisor = 1):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lambda_producto = lambda x, y: x * y\n", - "lambda_producto(3, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "class Animal:\n", - " '''\n", - " En esta clase se crean los animales\n", - " '''\n", - " def __init__(self, especie, edad, color):\n", - " self.especie = especie\n", - " self.edad = edad\n", - " self.color = color\n", - " def mePresento(self):\n", - " print('Hola, soy ', self.especie, ', de color', self.color, ' y tengo ', self.edad, ' años')\n", - " def cumplirAños(self):\n", - " self.edad = self.edad + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ratón\n", - "2\n", - "Liebre\n", - "3\n" - ] - } - ], - "source": [ - "a1 = Animal('Ratón', 2, 'Marrón')\n", - "print(a1.especie)\n", - "print(a1.edad)\n", - "\n", - "a2 = Animal('Liebre', 3, 'Gris')\n", - "print(a2.especie)\n", - "print(a2.edad)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Ratón , de color Marrón y tengo 2 años\n" - ] - } - ], - "source": [ - "a1.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Liebre , de color Gris y tengo 3 años\n" - ] - } - ], - "source": [ - "a2.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Ratón , de color Marrón y tengo 3 años\n" - ] - } - ], - "source": [ - "a1.cumplirAños()\n", - "a1.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "# Caja Negra\n", - "import unittest\n" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def suma(num_1, num_2):\n", - " return num_1 + num_2" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "class CajaNegraTest(unittest.TestCase):\n", - "\n", - " def test_suma_dos_positivos(self):\n", - " num_1 = 10\n", - " num_2 = 5\n", - "\n", - " resultado = suma(num_1, num_2)\n", - "\n", - " self.assertEqual(resultado, 15)\n", - "\n", - " def test_suma_dos_negativos(self):\n", - " num_1 = -10\n", - " num_2 = -7\n", - "\n", - " resultado = suma(num_1, num_2)\n", - "\n", - " self.assertEqual(resultado, -17)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_suma_dos_negativos (__main__.CajaNegraTest) ... ok\n", - "test_suma_dos_positivos (__main__.CajaNegraTest) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if __name__ == '__main__':\n", - " unittest.main()" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_suma_dos_negativos (__main__.CajaNegraTest) ... ok\n", - "test_suma_dos_positivos (__main__.CajaNegraTest) ... ok\n", - "test_es_mayor_de_edad (__main__.PruebaDeCristalTest) ... ok\n", - "test_es_menor_de_edad (__main__.PruebaDeCristalTest) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 4 tests in 0.006s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Caja de Cristal\n", - "import unittest\n", - "\n", - "def es_mayor_de_edad(edad):\n", - " if edad >= 18:\n", - " return True\n", - " else:\n", - " return False\n", - "\n", - "class PruebaDeCristalTest(unittest.TestCase):\n", - "\n", - " def test_es_mayor_de_edad(self):\n", - " edad = 20\n", - "\n", - " resultado = es_mayor_de_edad(edad)\n", - "\n", - " self.assertEqual(resultado, True)\n", - "\n", - " def test_es_menor_de_edad(self):\n", - " edad = 15\n", - "\n", - " resultado = es_mayor_de_edad(edad)\n", - "\n", - " self.assertEqual(resultado, False)\n", - "\n", - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if __name__ == '__main__':\n", - " unittest.main()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# Python\n", - "\n", - "def busca_pais(paises, pais):\n", - " '''\n", - " Paises es un diccionario. Pais es la llave.\n", - " Codigo con el principio EAFP.\n", - " ''' \n", - " try:\n", - " return paises[pais]\n", - " except KeyError:\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "division by zero\n", - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" - ] - } - ], - "source": [ - "def divide_elementos_de_lista(lista, divisor):\n", - " '''\n", - " Cada elemento de una lista es dividida por un divisor definido.\n", - " En caso de error de tipo ZeroDivisionError que\n", - " significa error al dividir en cero\n", - " la función devuelve la lista inicial\n", - " '''\n", - " try:\n", - " return [i / divisor for i in lista]\n", - " \n", - " except ZeroDivisionError as e:\n", - " print(e)\n", - " return lista\n", - "\n", - "lista = list(range(10))\n", - "divisor = 0\n", - "\n", - "print(divide_elementos_de_lista(lista, divisor))" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 1.3333333333333333, 1.6666666666666667, 2.0, 2.3333333333333335, 2.6666666666666665, 3.0]\n" - ] - } - ], - "source": [ - "divisor = 3\n", - "print(divide_elementos_de_lista(lista, divisor))" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "4\n", - "9\n", - "2\n" - ] - } - ], - "source": [ - "lista = [5, 4, 9, 2]\n", - "i = 0\n", - "while i < len(lista):\n", - " elemento = lista[i]\n", - " print(elemento)\n", - " i += 1" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "4\n", - "9\n", - "2\n" - ] - } - ], - "source": [ - "lista = [5, 4, 9, 2]\n", - "for elemento in lista:\n", - " print(elemento)" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cadena True\n", - "numero False\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\lopez\\AppData\\Local\\Temp/ipykernel_10044/1562366592.py:1: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working\n", - " from collections import Iterable\n" - ] - } - ], - "source": [ - "from collections import Iterable\n", - "cadena = \"Hola\"\n", - "numero = 3\n", - "print(\"cadena\", isinstance(cadena, Iterable))\n", - "print(\"numero\", isinstance(numero, Iterable))" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['H', 'o', 'l', 'a']\n" - ] - } - ], - "source": [ - "print(list(\"Hola\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "print(sum([1, 2, 3]))" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H-o-l-a\n" - ] - } - ], - "source": [ - "print(\"-\".join(\"Hola\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 92, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a\n", - "b\n", - "c\n" - ] - } - ], - "source": [ - "mi_dict = {'a':1, 'b':2, 'c':3}\n", - "for i in mi_dict:\n", - " print(i)" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": {}, - "outputs": [], - "source": [ - "libro = ['página1', 'página2', 'página3', 'página4']\n", - "marcapaginas = iter(libro)" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "página1\n", - "página2\n", - "página3\n", - "página4\n" - ] - } - ], - "source": [ - "print(next(marcapaginas))\n", - "print(next(marcapaginas))\n", - "print(next(marcapaginas))\n", - "print(next(marcapaginas))" - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "metadata": {}, - "outputs": [ - { - "ename": "StopIteration", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mStopIteration\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/1391636315.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmarcapaginas\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mStopIteration\u001b[0m: " - ] - } - ], - "source": [ - "print(next(marcapaginas))" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 99, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "14 % 3" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 97, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "14 // 3" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "a = [1,2]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "b = a.copy()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "b.append(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2]\n" - ] - } - ], - "source": [ - "print(a)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3]\n" - ] - } - ], - "source": [ - "print(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "b.append(4)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3]\n" - ] - } - ], - "source": [ - "print(a)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4]\n" - ] - } - ], - "source": [ - "print(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "x = 7" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "7 & 7" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n" - ] - } - ], - "source": [ - "print(x)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "a = [1, 2]" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "b = [\"Uno\", \"Dos\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "c = zip(a, b)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "zip" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(c)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(1, 'Uno'), (2, 'Dos')]" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(c)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "frase = \"El perro de san roque no tiene rabo\"" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['r', 'r', 'r', 'r']\n" - ] - } - ], - "source": [ - "errores = [i for i in frase if i == 'r']\n", - "print(errores)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n", - "10\n", - "11\n", - "12\n", - "13\n", - "14\n", - "15\n", - "16\n", - "17\n", - "18\n", - "19\n", - "20\n", - "21\n", - "22\n", - "23\n", - "24\n", - "25\n", - "26\n", - "27\n", - "28\n", - "29\n", - "30\n", - "31\n", - "32\n", - "33\n", - "34\n", - "35\n", - "36\n", - "37\n", - "38\n", - "39\n" - ] - } - ], - "source": [ - "n = 40 \n", - "sequence = [0,1] \n", - "for i in range(2,n): \n", - " sequence.append(sequence[i-1]+sequence[i-2]) \n", - " print (sequence)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "8" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "4 << 1" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git "a/01 - Introducci\303\263n a la Programaci\303\263n/README.json" "b/01 - Introducci\303\263n a la Programaci\303\263n/README.json" deleted file mode 100644 index c493f67d5..000000000 --- "a/01 - Introducci\303\263n a la Programaci\303\263n/README.json" +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Introducción a la Programación", - "permalink": "/Clase_Uno/", - "eleventyNavigation": { - "key": "Clase 1", - "order": 1 - }, - "feedbackID": "01 - Introducción a la Programación" -} diff --git "a/01 - Introducci\303\263n a la Programaci\303\263n/README.md" "b/01 - Introducci\303\263n a la Programaci\303\263n/README.md" deleted file mode 100644 index 8327a6268..000000000 --- "a/01 - Introducci\303\263n a la Programaci\303\263n/README.md" +++ /dev/null @@ -1,407 +0,0 @@ -![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) - -# Primeros Pasos - -## Grabación de la Clase 1 - -
- -
- -#### Preparando tu computadora -Antes de comenzar deberás descargar en tu computadora las siguientes herramientas de trabajo: -1. Editor de texto -2. Git -3. Github -4. Python - -Luego deberás realizar la clonación del [repositorio](https://github.com/soyHenry/Python-Prep). Te explicamos cómo hacerlo en el tutorial: - - -
- -
- -> **Importante**: Github cambió el método de autenticación, ahora es por PAT (Personal Access Token), para crearlo pueden seguir este [link](https://docs.github.com/es/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). Pueden elegir expiration infinita para hacerlo una sóla vez. - -## SLACK - -Slack es una plataforma de comunicación que utilizamos en Henry para estar conectados. Por este medio podrás recibir comunicados y mantener conversaciones con toda la comunidad de Henry. - -### ¿Cómo usar SLACK? - -A continuación te mostramos cómo funciona: -
- -
- -> Gracias [Nico Constantin (FT#12)](https://github.com/NicoConstantin) por el video y la explicación! - -## Editores de Texto - -Para poder escribir código que pueda ser interpretado por un lenguaje de programación, necesitamos utilizar un editor de texto. - -Hay varios, puedes probarlos y optar por el que te sientas más a gusto. - -A continuación veremos una lista de los más populares: - -## Sublime Text - -![Sublime Text](/_src/assets/00-PrimerosPasos/sublimeText_screen.png) - -Es un editor de texto liviano, que cuenta con una serie de plugins para adaptarlo a las necesidades de cada desarrollador. - -Es multiplataforma, por lo que se puede instalar tanto en Windows, como Linux y OS X. - -Para instalarlo, realizaremos los siguientes pasos: - -#### En Windows o en OS X - -1. Nos dirigimos a la página oficial de [Sublime Text](https://www.sublimetext.com). - -2. Al ingresar, detectará automáticamente el sistema operativo que tenemos, y nos sugerirá descargar el instalador apropiado. - -3. Presionamos el botón **_Download_**. - -4. Elegimos la opción adecuada según nuestro sistema operativo e iniciamos la descarga. - -![Sublime Text Download](/_src/assets/00-PrimerosPasos/sublimeText_download.png) - -5. Finalizada la descarga, ejecutamos el instalador, seleccionamos las opciones **_siguiente, siguiente, etc_**, hasta completar el proceso. - -#### En Linux, en la distribución Ubuntu y derivados - -1. Nos dirigimos al sitio oficial de Sublime Text. Aquí encontrarás las instrucciones para instalarlo: - -[Descargar Sublime Text para Linux](https://www.sublimetext.com/docs/3/linux_repositories.html) - -2. En la terminal, ejecutamos el siguiente comando, para instalar la clave GPG: - -```shell -wget -q0 - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - -``` - -3. Para asegurarnos de que `apt` esté configurado para trabajar con orígenes https, ejecutamos: - -```shell -sudo apt-get install apt-transport-https -``` - -4. Luego para agregar el repositorio estable, ejecutamos: - -```shell -echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list -``` - -5. Finalmente, procedemos a instalar el programa: - -```shell -sudo apt-get install sublime-text -``` - -Ahora, si en el **Menú de inicio** buscamos **Sublime text**, veremos la siguiente imagen: - -![Sublime Text Linux](/_src/assets/00-PrimerosPasos/sublimeText_linux.png) - -## Atom - -![Atom Site](/_src/assets/00-PrimerosPasos/atom_site.png) - -Es un editor de código abierto, disponible tanto para Windows, como Linux y para OS X. - -Tiene integrada una consola de Git y Github, para llevar un control de versiones de tus proyectos. -Para comenzar el proceso de instalación, realizamos los siguientes pasos: - -En Windows, Linux o en OS X, nos dirigimos al sitio oficial, mediante el siguiente enlace: - - - -Al ingresar, el navegador detecta automáticamente el instalador que necesitamos bajar, según nuestro sistema operativo. - -Allí, presionamos el botón Download para almacenarlo en nuestra computadora. - -#### En Windows - -Una vez finalizada la descarga, hacemos doble click en el instalador y esperamos a que finalice el proceso de instalación. - -#### En Ubuntu y derivados - -Descomprimimos el instalador, hacemos doble click, y nos dirigimos a: `/usr/bin/atom` - -Al hacer doble click, se abrirá el editor. - -## Visual Studio Code - -![VSC Console](/_src/assets/00-PrimerosPasos/vsc_console.png) - -Es un editor desarrollado por Microsoft. - -Tiene integrado el control de versiones mediante Git y Github para tener un seguimiento de tus proyectos. Brinda una cantidad de extensiones que facilitan el trabajo de un desarrollador. - -Para descargarlo, nos dirigimos al sitio oficial, en la sección Download y descargamos el instalador según nuestro Sistema Operativo: - - - -![VSC Download](/_src/assets/00-PrimerosPasos/vsc_download.png) - -Una vez finalizada la descarga, procedemos a ejecutar el instalador. - -## Git - -### ¿Qué es Git? - -Git es un sistema de control de versiones, distribuido y open source. Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante. - -### Instalación - -#### Para Mac y Linux - -Ver estos enlaces: - - - - - - - -#### Para Windows - -Ingreso a y descargo la última versión. - -![installGit](/_src/assets/00-PrimerosPasos/instalar_window.png) - -Una vez descargado, se abre el archivo .exe y van a visualizar la siguiente ventana - -![installGit](/_src/assets/00-PrimerosPasos/1.png) - -Clickeamos “Next” hasta que llegamos a esta parte: - -![installGit](/_src/assets/00-PrimerosPasos/2.png) - -En este momento de la instalación, si quieren, pueden elegir el editor de texto que van a usar. (Importante, ténganlo instalado antes de instalar Git) - -Seguimos clickeando “Next” y luego “Install” - -![installGit](/_src/assets/00-PrimerosPasos/3.png) - -Por último, ¡finalizar! Si seleccionan la opción "Launch Git Bash", una vez que finalizan la instalación se va a abrir la consola - -![installGit](/_src/assets/00-PrimerosPasos/4.png) - -Otra forma de abrir la consola es haciendo click derecho sobre el escritorio y elegir la opción "Git Bash Here" - -![installGit](/_src/assets/00-PrimerosPasos/consola.png) - -Una vez instalado Git van a poder visualizar la consola: ingresamos el comando `git --version` para chequear que está instalado. Si ven la consola así, ya están listos para comenzar a trabajar! - -![installGit](/_src/assets/00-PrimerosPasos/5.png) - -## GitHub - -### ¿Qué es GitHub? - -Es una red para almacenar tus repositorios, sería un repositorio de repositorios. Es uno de los tantos disponibles en internet, y el más popular. GitHub **NO** es lo mismo que Git, aunque funcionen muy bien juntos. Github es un lugar donde podés compartir tu código o encontrar otros proyectos. También actúa como portfolio para cualquier código en el que hayas trabajado. - -### Comenzando - -1. Para comenzar nos creamos una cuenta --- > 🚀 - -![GitHub-Register](/_src/assets/00-PrimerosPasos/github_register.png) - -2. Una vez registrados, ingresamos con usuario y contraseña: - -![GitHub-Login](/_src/assets/00-PrimerosPasos/github_login.png) - -3. Listo! Ahora vemos una página de inicio como la siguiente: - -![GitHub-Home](/_src/assets/00-PrimerosPasos/github_home.png) - -A la izquierda tenemos un acceso rápido a **mis repositorios**. - -En el centro vemos la actividad de los usuarios a quienes seguimos. - -En la parte superior derecha, vemos nuestra imagen de perfil. Desde ahí podemos desplegar opciones para gestionar nuestro perfil, repositorios y configuración. Si accedemos a nuestro perfil encontramos algo parecido a esto: - -![GitHub-profile](/_src/assets/00-PrimerosPasos/github_profile.png) - -Podemos poner una foto de perfil, editar el nombre, agregar la ubicación, link y organizaciones a las que pertenecemos. En el centro podemos fijar los repositorios que queremos mostrar para que estén visibles en nuestro perfil. - -Más abajo se muestra un diagrama de todas las contribuciones que vamos haciendo a los repositorios. - -Si accedemos a la pestaña de arriba que dice `repositorios` veremos una lista de todos ellos. Cuando elegimos un repositorio para ver, nos lleva a una página como esta: - -![GitHub-repo](/_src/assets/00-PrimerosPasos/github_repo.png) - -Así se ve un repositorio. Arriba a la izquierda tenemos el `nombre de usuario/nombre del repo`. - -En el centro podemos ver todos los archivos que tiene dentro el repo. El botón verde que dice `Code` es importante, si clickeamos ahí vamos a poder obtener la url del repo, para así poder **_clonarlo_** (esto lo veremos más adelante). - -Arriba a la derecha encontramos tres botones. `Watch` nos permite seguir un repositorio, mientras que con `Star` podemos marcar como favorito un repo que nos guste. Por último tenemos `Fork`, este es **muy** importante, lo vamos a necesitar cuando hagamos el **_Challenge!_** - -Ya tenemos todo para empezar... Éxitos!!! 🍀 - -## Python - -### ¿Qué es Python? - -Es un lenguaje de programación sencillo de leer y escribir debido a su alta similitud con el lenguaje humano. Además, se trata de un lenguaje multiplataforma de código abierto y, por lo tanto, gratuito, lo que permite desarrollar software sin límites - -### Instalación - -Si estás usando Windows: - -Python 3.7 (o superior) -1. Para obtener el instalador dirígete a [https://www.python.org/downloads/](https://www.python.org/downloads/) -2. Descarga el instalador y ejecútalo en tu computadora. -3. Habilita la casilla de verificación en Install launcher for all users y Add Python 3.8 to PATH. A continuación presiona en Install Now. Windows te solicitará permisos para instalar Python en tu computadora. -4. Al finalizar la instalación se abrirá una ventana, en ella deberás presionar en la opción Disable path length limit. Windows te solicitará permisos para realizar este cambio. - -Si estás usando Mac: - -Mac OS X suele tener python instalado por defecto. Para verificarlo abrí la terminal, en el buscador de tu Mac, y escribí Python. Comprobar que está correctamente instalado: - -```bash -Python -Python 2.7.13 (default, Mar 25 2021, 18:52:10) -[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin -Type "help", "copyright", "credits" or "license" for more information. ->>> -``` - -Si no te figura o queres descargar la última versión dirígete a: [https://es.wikibooks.org/wiki/Python/Instalaci%C3%B3n_de_Python/Python_en_Mac_OS_X](https://es.wikibooks.org/wiki/Python/Instalaci%C3%B3n_de_Python/Python_en_Mac_OS_X) - -Si estás usando Linux: - -En una distribución estándar Linux dispone por defecto el intérprete Python instalado, para comprobar la correcta instalación solamente debería ejecutar el comando en la consola: - -```bash -python -Python 2.7.13 (default, Sep 26 2018, 18:42:22) -[GCC 6.3.0 20170516] on linux2 -Type "help", "copyright", "credits" or "license" for more information. ->>> -``` - -Si le muestra los mensajes anteriores está correctamente instalado el intérprete Python en su Linux. - -Si al ejecutar el comando anterior muestra el mensaje: - -```bash -python -bash: python: no se encontró la orden -``` - -Esto es debido a que no tiene instalado el intérprete, así que debe ejecutar el siguiente comando: -```bash -sudo apt-get install -y python-dev -``` - -De nuevo vuelva a ejecutar en su consola de comando el comando python. Ya están listos para comenzar a trabajar - -# Temario del Curso - -1) Introducción a la programación -2) Variables y Tipos de Datos -3) Flujos de Control -4) Estructuras de Datos -5) Iteradores e Iterables -6) Funciones -7) Clases y POO -8) Manejo de Errores -9) Vinculación con datos externos - -## Repositorio del curso - -https://github.com/soyHenry/Python-Prep - -# Introducción a la Programación - -## ¿Qué es la Programación? - -Comencemos con un ejemplo, en la imagen se representa un pequeño robot abeja en una esquina del cuadrilátero, y en la otra esquina una flor. El objetivo del robot abeja es llegar hasta la flor, esquivando los arbustos que hay de por medio. Para esto, hay que decirle cómo se debe mover, pero solo puede saltar de a un casillero por vez. La forma en que se le puede "decir" es a través de instrucciones y esttas son: "arriba", "abajo", "izquierda" y "derecha". Por supuesto, teniendo en cuenta que debe moverse dentro del cuadrilátero. - -Ahora bien, surgen algunas preguntas: - -* ¿Cuántas instrucciones son necesarias? - -* Al ser más de una instrucción ¿Es importante el orden en que se ejecutan? - -* ¿Hay más de una forma, en que el robot abeja pueda llegar a la flor? - -* ¿Hay un camino óptimo? - -* ¿Cómo puedo medir si un camino es el óptimo con respecto a otros caminos? - -![unaImagenConBoxShadow](../_src/assets/01_imagen01.jpg) - -Cualquiera de las siguiente, podrían ser una solución: -* Derecha, Derecha, Arriba, Arriba, Derecha, Derecha, Arriba, Arriba, Arriba, Derecha, Derecha, Arriba -* Derecha, Derecha, Derecha, Derecha, Derecha, Derecha, Arriba, Arriba, Arriba, Izquierda, Izquierda, Arriba, Arriba, Derecha, Arriba, Derecha -* Arriba, Derecha, Derecha, Arriba, Arriba, Arriba, Arriba, Arriba, Derecha, Derecha, Derecha, Derecha, Arriba - -Lo importante, en principio, es que notemos que al resolver el problema planteado, lo que estamos haciendo, utilizando un pensamiento lógico, es precisamente, **programación** - -Entonces, **programar, es armar una secuencia lógica de pasos a seguir, en pos de cumplir un objetivo.** En el ejemplo visto, tuvimos un contexto que nos marcaba las posibilidades y restricciones del problema, por ejemplo moverse dentro del cuadrilátero ó no chocar con los arbustos. Y también un conjunto de instrucciones disponibles, que definian el lenguaje que teníamos que usar, para que el robot comprenda las instrucciones. Lo que usamos fue un lenguaje formal, muy básico y que fue suficiente para resolver el problema. Éstos lenguajes, se denominan lenguajes de programación, nos permiten plasmar esas instrucciones necesarias para darle una solución al problema que queremos resolver, generando así un programa (o software). - -Los primeros lenguajes de programación se escribían en instrucciones que podían interpretar las computadoras muy fácilmente, pero que resultaban menos amigables a las personas, tales como el lenguaje ensamblador (o Assembler) o Fortran, desarrollado en 1955. Con el tiempo, esto fue cambiando, se fueron desarrollando lenguajes de programación de más alto nivel y con diferentes aplicaciones, que por lo general eran comerciales o científicas, pero también con fines educativos, es decir, lenguajes desarrollados para aprender a programar, y consecuentemente, más sencillos. - -Éste último, es el caso de **Python**, que nace a finales de la década del 80 y fue pensado para principiantes por su facilidad de aprendizaje y uso. Su código era compacto pero legible. Con el correr de los años fue incluyendo mejoras hasta llegar también a ser de licencia libre. Hoy por hoy, es usado desde simples "scripts", hasta grandes servidores web que proveen servicio ininterrumpido las 24hs. Es utilizado para la programación de interfaces gráficas y bases de datos. Además tiene una amplia aceptación por científicos que hacen aplicaciones para las supercomputadoras más rápidas del mundo y por los niños que recién están comenzando a programar. -La generalización del Big Data en los últimos años, seguida de la explosión de la Inteligencia Artificial, Machine Learning y el surgimiento de la Ciencia de Datos como un nuevo área de trabajo con especialistas propios, ha revolucionado el panorama ya que muchas de las nuevas herramientas que han surgido han sido desarrolladas en Python o nos ofrecen Python como la forma predilecta de interactuar con ellas. -Podemos hablar de tecnología para Big Data como PySpark, de herramientas para Data Science como Pandas, NumPy, Matplotlib o Jupyter. De herramientas del procesamiento del lenguaje natural como NLTK, y por último el área de Deep Learning como Tensorflow, MXNet o Scikit-Learn. - -## Sintaxis de un lenguaje de programación - -Para el ejemplo se utilizó un lenguaje con el que era posible determinar los pasos a seguir por el robot abeja hasta llegar a la flor, y nos fue suficiente para poder entender cómo resolver el problema. El hecho es que, los lenguajes de programación que utilizamos, deben ser más específicos todavía, necesitamos tener un nivel de detalle mayor en nuestras instrucciones, por ejemplo, en lugar de la instrucción "Arriba", podría ser, especificar la cantidad de celdas que hay que moverse, e incluso qué implica "moverse", que seguramente será cambiar el estado de la propia abeja. -Por otro lado también habrá un marco de referencia, es decir, el tablero donde se mueve la abeja y está la flor, en sí mismo, es algo que debemos conocer, saber donde hay ubicado un arbusto y donde no, saber cuales son los límites, y que pasa si con las instrucciones que le damos a la abeja, hacemos que rebase esos límites. -Para solventar esa complejidad, necesitamos un **set de instrucciones** un poco más complejo para poder interactuar con el computador y una forma de representar los datos de la realidad, es decir, dimensiones del tablero donde se mueve la abeja, posición de la abeja, posición de la flor, ubicaciones de los arbustos. Esto se hace mediante lo que se conoce como **estructuras** de datos, las cuales permiten representar la realidad. De hecho, todos **los datos son una representación de la realidad**. -La sintaxis de un programa, consiste en un conjunto de palabras reservadas a instrucciones, con una estructura específica, tal y como funciona un lenguaje como el que usamos los humanos para comunicarnos, como el español o el inglés. Los lenguajes de programación también tienen su sintaxis, que está compuesta por diferentes elementos, como ser variables para representar el dato de la realidad, sentencias para representar las instrucciones o estructuras de control que conforman el cuerpo del programa. - -## El Zen de Python - -Para conocer mejor el lenguaje que estaremos aprendiendo les compartimos una colección de los 19 principios que influyen en el diseño del lenguaje Python. De alguna manera, muestran la filosofía del mismo: - -1) Bello es mejor que feo. -2) Explícito es mejor que implícito. -3) Simple es mejor que complejo. -4) Complejo es mejor que complicado. -5) Plano es mejor que anidado. -6) Espaciado es mejor que denso. -7) La legibilidad es importante. -8) Los casos especiales no son lo suficientemente especiales como para romper las reglas. -9) Sin embargo la practicidad gana a la pureza. -10) Los errores nunca deben pasar silenciosamente. -11) A menos que se silencien explícitamente. -12) Frente a la ambigüedad, evitar la tentación de adivinar. -13) Debería haber una, y preferiblemente solo una, manera obvia de hacerlo. -14) A pesar de que esa manera no sea obvia a menos que seas Holandés (el creador lo era) -15) Ahora es mejor que nunca. -16) A pesar de que nunca es muchas veces mejor que ahora mismo. -17) Si la implementación es difícil de explicar, es una mala idea. -18) Si la implementación es fácil de explicar, puede que sea una buena idea. -19) Los namespaces son una gran idea, ¡tengamos más de esos! - -## Recursos adicionales - -* [Introducción al Pensamiento Computacional] (https://github.com/karlbehrensg/introduccion-pensamiento-computacional) -* [Entrenamiento Básico] (https://entrenamiento-python-basico.readthedocs.io/es/latest) -* [El Libro de Python] (https://ellibrodepython.com/) -* [Python para todos] (https://www.py4e.com) -* [Curso Python Videos] (https://youtu.be/G2FCfQj-9ig) -* [Visualizar tu código] (https://memlayout.com/) -* [Visualizar tu código] (https://pythontutor.com/visualize.html#mode=edit) - -## Homework - -Instalar Visual Studio Code, GitHub y Python para poder comenzar! - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
diff --git a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_01-checkpoint.ipynb b/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_01-checkpoint.ipynb deleted file mode 100644 index d7c1a0d98..000000000 --- a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_01-checkpoint.ipynb +++ /dev/null @@ -1,46 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "algo\n" - ] - } - ], - "source": [ - "print('algo')" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3.9.7 64-bit ('henry': conda)", - "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.9.7" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-checkpoint.md b/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-checkpoint.md deleted file mode 100644 index 2b3da40d3..000000000 --- a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-checkpoint.md +++ /dev/null @@ -1,53 +0,0 @@ -## Variables - -1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla - -2) Imprimir el tipo de dato de la constante 8.5 - -3) Imprimir el tipo de dato de la variable creada en el punto 1 - -4) Crear una variable que contenga tu nombre - -5) Crear una variable que contenga un número complejo - -6) Mostrar el tipo de dato de la variable crada en el punto 5 - -7) Crear una variable que contenga el valor del número Pi redondeado a 4 decimales - -8) Crear una variable que contenga el valor 'True' y otra que contenga el valor True. ¿Se trata de lo mismo? - -9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 9 - -10) Asignar a una variable, la suma de un número entero y otro decimal - -11) Realizar una operación de suma de números complejos - -12) Realizar una operación de suma de un número real y otro complejo - -13) Realizar una operación de multiplicación - -14) Mostrar el resultado de elevar 2 a la octava potencia - -15) Obtener el cociente de la división de 27 entre 4 en una variable y luego mostrarla - -16) De la división anterior solamente mostrar la parte entera - -17) De la división de 27 entre 4 mostrar solamente el resto - -18) Utilizando como operandos el número 4 y los resultados obtenidos en los puntos 16 y 17. Obtener 27 como resultado - -19) Utilizar el operador "+" en una operación donde intervengan solo variables alfanuméricas - -20) Evaluar si "2" es igual a 2. ¿Por qué ocurre eso? - -21) Utilizar las funciones de cambio de tipo de dato, para que la validación del punto 20 resulte verdadera - -22) ¿Por qué arroja error el siguiente cambio de tipo de datos? a = float('3,8') - -23) Crear una variable con el valor 3, y utilizar el operador '-=' para modificar su contenido - -24) Realizar la operacion 1 << 2 ¿Por qué da ese resultado? ¿Qué es el sistema de numeración binario? - -25) Realizar la operación 2 + '2' ¿Por qué no está permitido? ¿Si los dos operandos serían del mismo tipo, siempre arrojaría el mismo resultado? - -26) Realizar una operación válida entre valores de tipo entero y string diff --git a/02 - Variables y Tipos de Datos/Practica en Clase.py b/02 - Variables y Tipos de Datos/Practica en Clase.py deleted file mode 100644 index 61df2efb3..000000000 --- a/02 - Variables y Tipos de Datos/Practica en Clase.py +++ /dev/null @@ -1,12 +0,0 @@ -mi_variable = 12 -print(mi_variable) - -mi_variable2 = 'dario' -print(mi_variable2) - -mi_complejo = 5 + 7j -print(mi_complejo) - - -mi_numero = input('Ingrese un valor') -print('el valor ingresado fue', mi_numero) \ No newline at end of file diff --git a/02 - Variables y Tipos de Datos/Preliminares en Clase - 02.ipynb b/02 - Variables y Tipos de Datos/Preliminares en Clase - 02.ipynb deleted file mode 100644 index a2fc129a3..000000000 --- a/02 - Variables y Tipos de Datos/Preliminares en Clase - 02.ipynb +++ /dev/null @@ -1,2632 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variables" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "mi_var = 12 + 1j" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "12\n" - ] - } - ], - "source": [ - "print(mi_var)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "mi_variable1 = 10.25\n", - "mi_variable2 = 10\n", - "mi_variable3 = 'hola'\n", - "mi_variable4 = True\n", - "mi_variable5 = 1 + 1j" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_variable2 != 2" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "mi_var1 = \"True\"\n", - "mi_var2 = False" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "str" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_var1)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bool(mi_var1)" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_var1 and mi_var2" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [], - "source": [ - "mi_variable1 = \"10.75\"\n", - "mi_variable2 = 0.75" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "float" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_variable1)" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [], - "source": [ - "mi_variable1 = float(mi_variable1)" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11.5\n" - ] - } - ], - "source": [ - "print(mi_variable1 + mi_variable2)" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "10 % 3" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "9" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "3 * 3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "float()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10.25\n" - ] - } - ], - "source": [ - "print(mi_variable3)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "mi_variable6 = True\n", - "mi_variable7 = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola Mundo !\n" - ] - } - ], - "source": [ - "a = 'Hola '\n", - "b = 'Mundo !'\n", - "print(a + b)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "15\n" - ] - } - ], - "source": [ - "x = 3\n", - "y = 12\n", - "print(x + y)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "can only concatenate str (not \"int\") to str", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_18232/136165486.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str" - ] - } - ], - "source": [ - "print(a + x)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3.0\n" - ] - } - ], - "source": [ - "# Dividir \"y\" entre \"x\"\n", - "y = 9\n", - "x = 3\n", - "print(y/x)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "16\n" - ] - } - ], - "source": [ - "# Potencia de \"y\" elevado a la \"x\"\n", - "y = 2\n", - "x = 4\n", - "print(y**x)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "# Devolver el resto de la división\n", - "y = 13\n", - "x = 3\n", - "print(y%x)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número es igual a cero\n" - ] - } - ], - "source": [ - "valor = 0\n", - "if (valor < 0):\n", - " print('El número es negativo')\n", - "elif (valor > 0):\n", - " print('El número es positivo')\n", - "else:\n", - " print('El número es igual a cero')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n" - ] - } - ], - "source": [ - "for n in range(1,10):\n", - " print(n)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n" - ] - } - ], - "source": [ - "n = 1\n", - "while (n < 10):\n", - " print(n)\n", - " n = n + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "edad = (3,1,0.2,8,7)\n", - "print(len(edad))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Listas" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista = ['Rojo','Azul','Amarillo','Naranja','Violeta','Verde']" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul', 'Amarillo', 'Negro', 'Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul']\n" - ] - } - ], - "source": [ - "print(mi_lista[0:2])" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul']\n" - ] - } - ], - "source": [ - "print(mi_lista[:2])" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Azul', 'Amarillo']\n" - ] - } - ], - "source": [ - "print(mi_lista[1:])" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.insert(3,'Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "print(mi_lista.index('Azul'))" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.insert(3,'Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.extend(['Marrón','Gris'])" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']\n" - ] - } - ], - "source": [ - "print(['a','b','c'] * 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "print(mi_lista.index('Azul'))" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/2480624766.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmi_lista\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Blanco'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "mi_lista.remove('Blanco')" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/298389232.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmi_lista\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Negro'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "mi_lista.remove('Negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "ultimo = mi_lista.pop()" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gris\n" - ] - } - ], - "source": [ - "ultimo = mi_lista.pop()\n", - "print(ultimo)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "ultimo = mi_lista.pop()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Amarillo'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ultimo" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla=tuple(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Azul\n" - ] - } - ], - "source": [ - "print(mi_tupla[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "'Rojo' in mi_tupla" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - " mi_tupla.count('Rojo')" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris', 'Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris', 'Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris']\n" - ] - } - ], - "source": [ - "print(mi_lista[:] * 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_tupla.count('Rojo')" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla='Gaspar', 5, 8, 1999" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nombre: Gaspar - Dia: 5 - Mes: 8 - Año: 1999\n" - ] - } - ], - "source": [ - "nombre, dia, mes, año = mi_tupla\n", - "print(\"Nombre: \", nombre, \" - Dia:\", dia, \" - Mes: \", mes, \" - Año: \", año)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Darío 39\n", - "Mi nombre es Darío . Mi edad es 39 años\n", - "Mi nombre es Darío. Mi edad es 39 años\n" - ] - } - ], - "source": [ - "nombre = 'Darío'\n", - "edad = 39\n", - "print(nombre, edad)\n", - "print(\"Mi nombre es\", nombre, \". Mi edad es\", edad, \"años\")\n", - "print(\"Mi nombre es {}. Mi edad es {} años\". format(nombre, edad))" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario = { 'Colores Primarios': ['Rojo','Azul','Amarillo'], \n", - " 'Colores secundarios': ['Naranja','Violeta','Verde'], \n", - " 'Clave3': 10,\n", - " 'Clave4': False}" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_diccionario['Colores secundarios'])" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':{'numeros':[1,2,3,4,5]}}" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['Clave1', 'Clave2'])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_values(['Valor1', {'numeros': [1, 2, 3, 4, 5]}])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.values())" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(mi_diccionario)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "50\n" - ] - } - ], - "source": [ - "edad = 60\n", - "edad_compa = 50\n", - "if (edad < edad_compa):\n", - " print(edad)\n", - " if (edad < 100):\n", - " print(edad + 100)\n", - " else:\n", - " print(edad - 100)\n", - "else:\n", - " print(edad_compa)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" - ] - } - ], - "source": [ - "primeros_10 = [0,1,2,3,4,5,6,7,8,9]\n", - "print(primeros_10)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "2\n", - "4\n", - "6\n", - "8\n", - "\n", - "va de nuevo....\n", - "\n" - ] - } - ], - "source": [ - "for n in primeros_10:\n", - " if (n%2 == 0):\n", - " print(n)\n", - " primeros_10[n]=0\n", - "print(\"\\nva de nuevo....\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 0, 3, 0, 5, 0, 7, 0, 9]\n" - ] - } - ], - "source": [ - "print(primeros_10)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "0\n", - "3\n", - "0\n", - "5\n", - "0\n", - "7\n", - "0\n", - "9\n", - "\n", - "va de nuevo....\n", - "\n" - ] - } - ], - "source": [ - "for n in primeros_10:\n", - " print(primeros_10[n])\n", - "print(\"\\nva de nuevo....\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "9\n" - ] - } - ], - "source": [ - "print(primeros_10[9])" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "primeros_10 = ['a','b','c','d']" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "ename": "IndexError", - "evalue": "list index out of range", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprimeros_10\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mIndexError\u001b[0m: list index out of range" - ] - } - ], - "source": [ - "primeros_10[4]" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "n = 40\n", - "sequence = [0,1]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986]\n" - ] - } - ], - "source": [ - "for i in range(2,n):\n", - " sequence.append(sequence[i-1]+sequence[i-2])\n", - "print (sequence)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario = { 'Colores Primarios': ['Rojo','Azul','Amarillo'], \n", - " 'Colores secundarios': ['Naranja','Violeta','Verde'], \n", - " 'Clave3': 10,\n", - " 'Clave4': False}" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Naranja', 'Violeta', 'Verde']\n" - ] - } - ], - "source": [ - "print(mi_diccionario['Colores secundarios'])" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario['Clave3']=2" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Argentina': 'Buenos Aires', 'Italia': 'Roma', 'Inglaterra': 'Londres'}" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_diccionario" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario['Clave5']='Otro ejemplo'" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla=(\"Argentina\", \"Italia\", \"Inglaterra\")\n", - "mi_diccionario={mi_tupla[0]:\"Buenos Aires\", mi_tupla[1]:\"Roma\", mi_tupla[2]:\"Londres\"}" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':(1,2,3,4,5)}" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tuple" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':{'numeros':[1,2,3,4,5]}}" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "mi_diccionario={'Clave1':'Valor1', 'Clave2':[1,2,3,4,5]}" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_diccionario['Clave2'])" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['Clave1', 'Clave2'])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.keys())" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_values(['Valor1', [1, 2, 3, 4, 5]])\n" - ] - } - ], - "source": [ - "print(mi_diccionario.values())" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(mi_tupla)" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": {}, - "outputs": [], - "source": [ - "def imprimir_valor_variable(var):\n", - " print('El valor de la variable es' + str(var))" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor de la variable es['Rojo', 'Azul', 'Amarillo', 'Negro', 'Marrón', 'Gris']\n" - ] - } - ], - "source": [ - "imprimir_valor_variable(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def ordenar_dos_numeros(num1, num2):\n", - " if (num1 > num2):\n", - " return num2, num1\n", - " else:\n", - " return num1, num2" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1, 8)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ordenar_dos_numeros(8,1)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "def factorial(numero):\n", - " '''\n", - " Devuelve el factorial\n", - " '''\n", - " if (numero > 1):\n", - " numero = numero * factorial(numero - 1)\n", - " return numero" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "factorial(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function factorial in module __main__:\n", - "\n", - "factorial(numero)\n", - " Devuelve el factorial\n", - "\n" - ] - } - ], - "source": [ - "help(factorial)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def dividir(dividendo, divisor = 1):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'divisor' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/1862935505.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdivisor\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mNameError\u001b[0m: name 'divisor' is not defined" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "divisor = 5\n", - "def dividir(dividendo):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "divisor = 5\n", - "def dividir(dividendo, divisor = 1):\n", - " if (divisor == 0):\n", - " return 'No se puede dividir por cero'\n", - " else:\n", - " return dividendo / divisor" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10.0\n" - ] - } - ], - "source": [ - "print(dividir(10))" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "print(divisor)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lambda_producto = lambda x, y: x * y\n", - "lambda_producto(3, 4)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "class Animal:\n", - " '''\n", - " En esta clase se crean los animales\n", - " '''\n", - " def __init__(self, especie, edad, color):\n", - " self.especie = especie\n", - " self.edad = edad\n", - " self.color = color\n", - " def mePresento(self):\n", - " print('Hola, soy ', self.especie, ', de color', self.color, ' y tengo ', self.edad, ' años')\n", - " def cumplirAños(self):\n", - " self.edad = self.edad + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ratón\n", - "2\n", - "Liebre\n", - "3\n" - ] - } - ], - "source": [ - "a1 = Animal('Ratón', 2, 'Marrón')\n", - "print(a1.especie)\n", - "print(a1.edad)\n", - "\n", - "a2 = Animal('Liebre', 3, 'Gris')\n", - "print(a2.especie)\n", - "print(a2.edad)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Ratón , de color Marrón y tengo 2 años\n" - ] - } - ], - "source": [ - "a1.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Liebre , de color Gris y tengo 3 años\n" - ] - } - ], - "source": [ - "a2.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hola, soy Ratón , de color Marrón y tengo 3 años\n" - ] - } - ], - "source": [ - "a1.cumplirAños()\n", - "a1.mePresento()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "# Caja Negra\n", - "import unittest\n" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def suma(num_1, num_2):\n", - " return num_1 + num_2" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "class CajaNegraTest(unittest.TestCase):\n", - "\n", - " def test_suma_dos_positivos(self):\n", - " num_1 = 10\n", - " num_2 = 5\n", - "\n", - " resultado = suma(num_1, num_2)\n", - "\n", - " self.assertEqual(resultado, 15)\n", - "\n", - " def test_suma_dos_negativos(self):\n", - " num_1 = -10\n", - " num_2 = -7\n", - "\n", - " resultado = suma(num_1, num_2)\n", - "\n", - " self.assertEqual(resultado, -17)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_suma_dos_negativos (__main__.CajaNegraTest) ... ok\n", - "test_suma_dos_positivos (__main__.CajaNegraTest) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 2 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if __name__ == '__main__':\n", - " unittest.main()" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_suma_dos_negativos (__main__.CajaNegraTest) ... ok\n", - "test_suma_dos_positivos (__main__.CajaNegraTest) ... ok\n", - "test_es_mayor_de_edad (__main__.PruebaDeCristalTest) ... ok\n", - "test_es_menor_de_edad (__main__.PruebaDeCristalTest) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 4 tests in 0.006s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Caja de Cristal\n", - "import unittest\n", - "\n", - "def es_mayor_de_edad(edad):\n", - " if edad >= 18:\n", - " return True\n", - " else:\n", - " return False\n", - "\n", - "class PruebaDeCristalTest(unittest.TestCase):\n", - "\n", - " def test_es_mayor_de_edad(self):\n", - " edad = 20\n", - "\n", - " resultado = es_mayor_de_edad(edad)\n", - "\n", - " self.assertEqual(resultado, True)\n", - "\n", - " def test_es_menor_de_edad(self):\n", - " edad = 15\n", - "\n", - " resultado = es_mayor_de_edad(edad)\n", - "\n", - " self.assertEqual(resultado, False)\n", - "\n", - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if __name__ == '__main__':\n", - " unittest.main()" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "# Python\n", - "\n", - "def busca_pais(paises, pais):\n", - " '''\n", - " Paises es un diccionario. Pais es la llave.\n", - " Codigo con el principio EAFP.\n", - " ''' \n", - " try:\n", - " return paises[pais]\n", - " except KeyError:\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "division by zero\n", - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" - ] - } - ], - "source": [ - "def divide_elementos_de_lista(lista, divisor):\n", - " '''\n", - " Cada elemento de una lista es dividida por un divisor definido.\n", - " En caso de error de tipo ZeroDivisionError que\n", - " significa error al dividir en cero\n", - " la función devuelve la lista inicial\n", - " '''\n", - " try:\n", - " return [i / divisor for i in lista]\n", - " \n", - " except ZeroDivisionError as e:\n", - " print(e)\n", - " return lista\n", - "\n", - "lista = list(range(10))\n", - "divisor = 0\n", - "\n", - "print(divide_elementos_de_lista(lista, divisor))" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.0, 0.3333333333333333, 0.6666666666666666, 1.0, 1.3333333333333333, 1.6666666666666667, 2.0, 2.3333333333333335, 2.6666666666666665, 3.0]\n" - ] - } - ], - "source": [ - "divisor = 3\n", - "print(divide_elementos_de_lista(lista, divisor))" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "4\n", - "9\n", - "2\n" - ] - } - ], - "source": [ - "lista = [5, 4, 9, 2]\n", - "i = 0\n", - "while i < len(lista):\n", - " elemento = lista[i]\n", - " print(elemento)\n", - " i += 1" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "4\n", - "9\n", - "2\n" - ] - } - ], - "source": [ - "lista = [5, 4, 9, 2]\n", - "for elemento in lista:\n", - " print(elemento)" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cadena True\n", - "numero False\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\lopez\\AppData\\Local\\Temp/ipykernel_10044/1562366592.py:1: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working\n", - " from collections import Iterable\n" - ] - } - ], - "source": [ - "from collections import Iterable\n", - "cadena = \"Hola\"\n", - "numero = 3\n", - "print(\"cadena\", isinstance(cadena, Iterable))\n", - "print(\"numero\", isinstance(numero, Iterable))" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['H', 'o', 'l', 'a']\n" - ] - } - ], - "source": [ - "print(list(\"Hola\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "print(sum([1, 2, 3]))" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H-o-l-a\n" - ] - } - ], - "source": [ - "print(\"-\".join(\"Hola\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 92, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a\n", - "b\n", - "c\n" - ] - } - ], - "source": [ - "mi_dict = {'a':1, 'b':2, 'c':3}\n", - "for i in mi_dict:\n", - " print(i)" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": {}, - "outputs": [], - "source": [ - "libro = ['página1', 'página2', 'página3', 'página4']\n", - "marcapaginas = iter(libro)" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "página1\n", - "página2\n", - "página3\n", - "página4\n" - ] - } - ], - "source": [ - "print(next(marcapaginas))\n", - "print(next(marcapaginas))\n", - "print(next(marcapaginas))\n", - "print(next(marcapaginas))" - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "metadata": {}, - "outputs": [ - { - "ename": "StopIteration", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mStopIteration\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10044/1391636315.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmarcapaginas\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mStopIteration\u001b[0m: " - ] - } - ], - "source": [ - "print(next(marcapaginas))" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 99, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "14 % 3" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 97, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "14 // 3" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "a = [1,2]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "b = a.copy()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "b.append(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2]\n" - ] - } - ], - "source": [ - "print(a)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3]\n" - ] - } - ], - "source": [ - "print(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "b.append(4)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3]\n" - ] - } - ], - "source": [ - "print(a)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4]\n" - ] - } - ], - "source": [ - "print(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "x = 7" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "7 & 7" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n" - ] - } - ], - "source": [ - "print(x)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "a = [1, 2]" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "b = [\"Uno\", \"Dos\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "c = zip(a, b)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "zip" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(c)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(1, 'Uno'), (2, 'Dos')]" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(c)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "frase = \"El perro de san roque no tiene rabo\"" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['r', 'r', 'r', 'r']\n" - ] - } - ], - "source": [ - "errores = [i for i in frase if i == 'r']\n", - "print(errores)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n", - "3\n", - "4\n", - "5\n", - "6\n", - "7\n", - "8\n", - "9\n", - "10\n", - "11\n", - "12\n", - "13\n", - "14\n", - "15\n", - "16\n", - "17\n", - "18\n", - "19\n", - "20\n", - "21\n", - "22\n", - "23\n", - "24\n", - "25\n", - "26\n", - "27\n", - "28\n", - "29\n", - "30\n", - "31\n", - "32\n", - "33\n", - "34\n", - "35\n", - "36\n", - "37\n", - "38\n", - "39\n" - ] - } - ], - "source": [ - "n = 40 \n", - "sequence = [0,1] \n", - "for i in range(2,n): \n", - " sequence.append(sequence[i-1]+sequence[i-2]) \n", - " print (sequence)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "8" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "4 << 1" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto Clase.ipynb b/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto Clase.ipynb deleted file mode 100644 index 942bff045..000000000 --- a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto Clase.ipynb +++ /dev/null @@ -1,723 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "12\n" - ] - } - ], - "source": [ - "a = 12\n", - "print(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Imprimir el tipo de dato de la constante 8.5" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "float" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(8.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Imprimir el tipo de dato de la variable creada en el punto 1" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "int" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Crear una variable que contenga tu nombre" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "mi_nombre = 'juan carlos perez'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una variable que contenga un número complejo" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "n_complejo = 5 + 5j" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Mostrar el tipo de dato de la variable crada en el punto 5" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "complex" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(n_complejo)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Crear una variable que contenga el valor del número Pi redondeado a 4 decimales" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "pi = 3.1416" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Crear una variable que contenga el valor 'True' y otra que contenga el valor True. ¿Se trata de lo mismo?" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "var1 = 'True'\n", - "var2 = True" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 9" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "La variable 1 es de tipo y la variable 2 es de tipo \n" - ] - } - ], - "source": [ - "print('La variable 1 es de tipo ', type(var1), ' y la variable 2 es de tipo ', type(var2))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "10) Asignar a una variable, la suma de un número entero y otro decimal" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "a = 5.2 + 4" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "11) Realizar una operación de suma de números complejos" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(4+4j)\n" - ] - } - ], - "source": [ - "a = 3 + 1j\n", - "b = 1 + 3j\n", - "print(a + b)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "12) Realizar una operación de suma de un número real y otro complejo" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(4.61+1j)\n" - ] - } - ], - "source": [ - "c = a + 1.61\n", - "print(c)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "13) Realizar una operación de multiplicación" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "print(3 * 2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "14) Mostrar el resultado de elevar 2 a la octava potencia" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "256\n" - ] - } - ], - "source": [ - "print(2**8)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "15) Obtener el cociente de la división de 27 entre 4 en una variable y luego mostrarla" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6.75\n" - ] - } - ], - "source": [ - "a = 27 / 4\n", - "print(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "16) De la división anterior solamente mostrar la parte entera" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "print(27 // 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "17) De la división de 27 entre 4 mostrar solamente el resto" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "27 % 4" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "18) Utilizando como operandos el número 4 y los resultados obtenidos en los puntos 16 y 17. Obtener 27 como resultado" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "27" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "6 * 4 + 3" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "19) Utilizar el operador \"+\" en una operación donde intervengan solo variables alfanuméricas" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Buenos Aires\n" - ] - } - ], - "source": [ - "var1 = 'Buenos '\n", - "var2 = 'Aires'\n", - "print(var1 + var2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "20) Evaluar si \"2\" es igual a 2. ¿Por qué ocurre eso?" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2 == '2'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "21) Utilizar las funciones de cambio de tipo de dato, para que la validación del punto 20 resulte verdadera" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2 == int('2')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "22) ¿Por qué arroja error el siguiente cambio de tipo de datos? a = float('3,8')" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "could not convert string to float: '3,8'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17308/3442311956.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0ma\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'3,8'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: could not convert string to float: '3,8'" - ] - } - ], - "source": [ - "a = float('3,8')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "23) Crear una variable con el valor 3, y utilizar el operador '-=' para modificar su contenido" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-4\n" - ] - } - ], - "source": [ - "a = -3\n", - "a -= 1\n", - "print(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "24) Realizar la operacion 1 << 2 ¿Por qué da ese resultado? ¿Qué es el sistema de numeración binario?" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1 << 2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "25) Realizar la operación 2 + '2' ¿Por qué no está permitido? ¿Si los dos operandos serían del mismo tipo, siempre arrojaría el mismo resultado?" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "unsupported operand type(s) for +: 'int' and 'str'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17308/1287754560.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m2\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m'2'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'str'" - ] - } - ], - "source": [ - "2 + '2'" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.0" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "float(2) + float('2')" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "int(2) + int('2')" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'22'" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str(2) + str('2')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "26) Realizar una operación válida entre valores de tipo entero y string" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "este texto se repite este texto se repite este texto se repite 3 veces\n" - ] - } - ], - "source": [ - "var1 = 'este texto se repite '\n", - "var2 = 3\n", - "print(var1 * var2 + str(var2) + ' veces')" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto.ipynb b/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto.ipynb deleted file mode 100644 index 942bff045..000000000 --- a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto.ipynb +++ /dev/null @@ -1,723 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "12\n" - ] - } - ], - "source": [ - "a = 12\n", - "print(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Imprimir el tipo de dato de la constante 8.5" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "float" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(8.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Imprimir el tipo de dato de la variable creada en el punto 1" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "int" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Crear una variable que contenga tu nombre" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "mi_nombre = 'juan carlos perez'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una variable que contenga un número complejo" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "n_complejo = 5 + 5j" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Mostrar el tipo de dato de la variable crada en el punto 5" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "complex" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(n_complejo)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Crear una variable que contenga el valor del número Pi redondeado a 4 decimales" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "pi = 3.1416" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Crear una variable que contenga el valor 'True' y otra que contenga el valor True. ¿Se trata de lo mismo?" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "var1 = 'True'\n", - "var2 = True" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 9" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "La variable 1 es de tipo y la variable 2 es de tipo \n" - ] - } - ], - "source": [ - "print('La variable 1 es de tipo ', type(var1), ' y la variable 2 es de tipo ', type(var2))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "10) Asignar a una variable, la suma de un número entero y otro decimal" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "a = 5.2 + 4" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "11) Realizar una operación de suma de números complejos" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(4+4j)\n" - ] - } - ], - "source": [ - "a = 3 + 1j\n", - "b = 1 + 3j\n", - "print(a + b)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "12) Realizar una operación de suma de un número real y otro complejo" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(4.61+1j)\n" - ] - } - ], - "source": [ - "c = a + 1.61\n", - "print(c)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "13) Realizar una operación de multiplicación" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "print(3 * 2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "14) Mostrar el resultado de elevar 2 a la octava potencia" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "256\n" - ] - } - ], - "source": [ - "print(2**8)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "15) Obtener el cociente de la división de 27 entre 4 en una variable y luego mostrarla" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6.75\n" - ] - } - ], - "source": [ - "a = 27 / 4\n", - "print(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "16) De la división anterior solamente mostrar la parte entera" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n" - ] - } - ], - "source": [ - "print(27 // 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "17) De la división de 27 entre 4 mostrar solamente el resto" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "27 % 4" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "18) Utilizando como operandos el número 4 y los resultados obtenidos en los puntos 16 y 17. Obtener 27 como resultado" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "27" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "6 * 4 + 3" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "19) Utilizar el operador \"+\" en una operación donde intervengan solo variables alfanuméricas" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Buenos Aires\n" - ] - } - ], - "source": [ - "var1 = 'Buenos '\n", - "var2 = 'Aires'\n", - "print(var1 + var2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "20) Evaluar si \"2\" es igual a 2. ¿Por qué ocurre eso?" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2 == '2'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "21) Utilizar las funciones de cambio de tipo de dato, para que la validación del punto 20 resulte verdadera" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2 == int('2')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "22) ¿Por qué arroja error el siguiente cambio de tipo de datos? a = float('3,8')" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "could not convert string to float: '3,8'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17308/3442311956.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0ma\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'3,8'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: could not convert string to float: '3,8'" - ] - } - ], - "source": [ - "a = float('3,8')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "23) Crear una variable con el valor 3, y utilizar el operador '-=' para modificar su contenido" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-4\n" - ] - } - ], - "source": [ - "a = -3\n", - "a -= 1\n", - "print(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "24) Realizar la operacion 1 << 2 ¿Por qué da ese resultado? ¿Qué es el sistema de numeración binario?" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1 << 2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "25) Realizar la operación 2 + '2' ¿Por qué no está permitido? ¿Si los dos operandos serían del mismo tipo, siempre arrojaría el mismo resultado?" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "unsupported operand type(s) for +: 'int' and 'str'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17308/1287754560.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m2\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m'2'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'str'" - ] - } - ], - "source": [ - "2 + '2'" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.0" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "float(2) + float('2')" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "int(2) + int('2')" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'22'" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str(2) + str('2')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "26) Realizar una operación válida entre valores de tipo entero y string" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "este texto se repite este texto se repite este texto se repite 3 veces\n" - ] - } - ], - "source": [ - "var1 = 'este texto se repite '\n", - "var2 = 3\n", - "print(var1 * var2 + str(var2) + ' veces')" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/02 - Variables y Tipos de Datos/README.json b/02 - Variables y Tipos de Datos/README.json deleted file mode 100644 index ac630edda..000000000 --- a/02 - Variables y Tipos de Datos/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Variables y Tipos de Datos", - "permalink": "/Clase_Dos/", - "eleventyNavigation": { - "key": "Clase 2", - "order": 2 - }, - "feedbackID": "02 - Variables y Tipos de Datos" -} diff --git a/03 - Flujos de Control/.ipynb_checkpoints/Prep_Course_Homework_03-Resuelto-checkpoint.ipynb b/03 - Flujos de Control/.ipynb_checkpoints/Prep_Course_Homework_03-Resuelto-checkpoint.ipynb deleted file mode 100644 index 8b24b6405..000000000 --- a/03 - Flujos de Control/.ipynb_checkpoints/Prep_Course_Homework_03-Resuelto-checkpoint.ipynb +++ /dev/null @@ -1,742 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Flujos de Control" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla si es mayor o menor a cero" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "La varaible es mayor a cero\n" - ] - } - ], - "source": [ - "a = 10\n", - "if (a < 0):\n", - " print('La variable es menor a cero')\n", - "elif (a > 0): \n", - " print('La varaible es mayor a cero')\n", - "else:\n", - " print('La variable es igual a cero')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Crear dos variables y un condicional que informe si son del mismo tipo de dato" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Las variables son de tipos de dato diferentes\n" - ] - } - ], - "source": [ - "a = 2\n", - "b = 'hola'\n", - "if (type(a) == type(b)):\n", - " print('Las variables son del mismo tipo de dato')\n", - "else:\n", - " print('Las variables son de tipos de dato diferentes')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Para los valores enteros del 1 al 20, imprimir por pantalla si es par o impar" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número 1 es impar\n", - "El número 2 es par\n", - "El número 3 es impar\n", - "El número 4 es par\n", - "El número 5 es impar\n", - "El número 6 es par\n", - "El número 7 es impar\n", - "El número 8 es par\n", - "El número 9 es impar\n", - "El número 10 es par\n", - "El número 11 es impar\n", - "El número 12 es par\n", - "El número 13 es impar\n", - "El número 14 es par\n", - "El número 15 es impar\n", - "El número 16 es par\n", - "El número 17 es impar\n", - "El número 18 es par\n", - "El número 19 es impar\n", - "El número 20 es par\n" - ] - } - ], - "source": [ - "for i in range(1, 21):\n", - " if i % 2 == 0:\n", - " print('El número ', str(i), ' es par')\n", - " else:\n", - " print('El número ', str(i), ' es impar')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) En un ciclo for mostrar para los valores entre 0 y 5 el resultado de elevarlo a la potencia igual a 3" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Valor: 0 Elevado a la 3ra potencia: 0\n", - "Valor: 1 Elevado a la 3ra potencia: 1\n", - "Valor: 2 Elevado a la 3ra potencia: 8\n", - "Valor: 3 Elevado a la 3ra potencia: 27\n", - "Valor: 4 Elevado a la 3ra potencia: 64\n", - "Valor: 5 Elevado a la 3ra potencia: 125\n" - ] - } - ], - "source": [ - "for i in range(0, 6):\n", - " print('Valor:', str(i), ' Elevado a la 3ra potencia:', str(i**3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una variable que contenga un número entero y realizar un ciclo for la misma cantidad de ciclos" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "11\n" - ] - } - ], - "source": [ - "n = 12\n", - "for i in range(0, n):\n", - " pass\n", - "print(i)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Utilizar un ciclo while para realizar el factoreo de un número guardado en una variable, sólo si la variable contiene un número entero mayor a 0" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El factorial es 120\n" - ] - } - ], - "source": [ - "n = 5\n", - "if (type(n) == int):\n", - " if (n > 0):\n", - " factorial = n\n", - " while (n > 2):\n", - " n = n - 1\n", - " factorial = factorial * n\n", - " print('El factorial es', factorial)\n", - " else:\n", - " print('La variable no es mayor a cero')\n", - "else:\n", - " print('La variable no es un entero')\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Crear un ciclo for dentro de un ciclo while" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ciclo while nro 2\n", - "Ciclo for nro 1\n", - "Ciclo while nro 3\n", - "Ciclo for nro 1\n", - "Ciclo while nro 3\n", - "Ciclo for nro 2\n", - "Ciclo while nro 4\n", - "Ciclo for nro 1\n", - "Ciclo while nro 4\n", - "Ciclo for nro 2\n", - "Ciclo while nro 4\n", - "Ciclo for nro 3\n", - "Ciclo while nro 5\n", - "Ciclo for nro 1\n", - "Ciclo while nro 5\n", - "Ciclo for nro 2\n", - "Ciclo while nro 5\n", - "Ciclo for nro 3\n", - "Ciclo while nro 5\n", - "Ciclo for nro 4\n" - ] - } - ], - "source": [ - "n = 0\n", - "while(n < 5):\n", - " n += 1\n", - " for i in range(1,n):\n", - " print('Ciclo while nro ' + str(n))\n", - " print('Ciclo for nro ' + str(i))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Crear un ciclo while dentro de un ciclo for" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "n = 5\n", - "for i in range(1, n):\n", - " while(n < 5):\n", - " n -= 1\n", - " print('Ciclo while nro ' + str(n))\n", - " print('Ciclo for nro ' + str(i))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "9) Imprimir los números primos existentes entre 0 y 30" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n" - ] - } - ], - "source": [ - "tope_rango=30\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " if (n % div == 0):\n", - " primo = False\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "10) ¿Se puede mejorar el proceso del punto 9? Utilizar las sentencias break y/ó continue para tal fin" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n" - ] - } - ], - "source": [ - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "11) En los puntos 9 y 10, se diseño un código que encuentra números primos y además se lo optimizó. ¿Es posible saber en qué medida se optimizó?" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "Cantidad de ciclos: 378\n" - ] - } - ], - "source": [ - "ciclos_sin_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_sin_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_sin_break))" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "Cantidad de ciclos: 134\n", - "Se optimizó a un 0.3544973544973545% de ciclos aplicando break\n" - ] - } - ], - "source": [ - "ciclos_con_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_con_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_con_break))\n", - "print('Se optimizó a un ' + str(ciclos_con_break/ciclos_sin_break) + '% de ciclos aplicando break')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "12) Si la cantidad de números que se evalúa es mayor a treinta, esa optimización crece?" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "31\n", - "37\n", - "41\n", - "43\n", - "47\n", - "53\n", - "59\n", - "61\n", - "67\n", - "71\n", - "73\n", - "79\n", - "83\n", - "89\n", - "97\n", - "Cantidad de ciclos: 4753\n" - ] - } - ], - "source": [ - "tope_rango=100\n", - "ciclos_sin_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_sin_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_sin_break))" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "31\n", - "37\n", - "41\n", - "43\n", - "47\n", - "53\n", - "59\n", - "61\n", - "67\n", - "71\n", - "73\n", - "79\n", - "83\n", - "89\n", - "97\n", - "Cantidad de ciclos: 1132\n", - "Se optimizó a un 0.2381653692404797% de ciclos aplicando break\n" - ] - } - ], - "source": [ - "ciclos_con_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_con_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_con_break))\n", - "print('Se optimizó a un ' + str(ciclos_con_break/ciclos_sin_break) + '% de ciclos aplicando break')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "13) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "108 es divisible por 12\n", - "120 es divisible por 12\n", - "132 es divisible por 12\n", - "144 es divisible por 12\n", - "156 es divisible por 12\n", - "168 es divisible por 12\n", - "180 es divisible por 12\n", - "192 es divisible por 12\n", - "204 es divisible por 12\n", - "216 es divisible por 12\n", - "228 es divisible por 12\n", - "240 es divisible por 12\n", - "252 es divisible por 12\n", - "264 es divisible por 12\n", - "276 es divisible por 12\n", - "288 es divisible por 12\n", - "300 es divisible por 12\n" - ] - } - ], - "source": [ - "n = 99\n", - "while(n <= 300):\n", - " n += 1\n", - " if (n % 12 != 0):\n", - " continue\n", - " print(n, ' es divisible por 12')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "14) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "¿Desea encontrar el siguiente número primo?\n", - "2\n", - "¿Desea encontrar el siguiente número primo?\n", - "3\n", - "¿Desea encontrar el siguiente número primo?\n", - "5\n", - "¿Desea encontrar el siguiente número primo?\n", - "7\n", - "¿Desea encontrar el siguiente número primo?\n", - "11\n", - "¿Desea encontrar el siguiente número primo?\n", - "13\n", - "¿Desea encontrar el siguiente número primo?\n", - "Se finaliza el proceso\n" - ] - } - ], - "source": [ - "n = 1\n", - "sigue = 1\n", - "primo = True\n", - "while (sigue == 1):\n", - " for div in range(2, n):\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " print('¿Desea encontrar el siguiente número primo?')\n", - " if (input() != '1'):\n", - " print('Se finaliza el proceso')\n", - " break\n", - " else:\n", - " primo = True\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "15) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número es: 102\n" - ] - } - ], - "source": [ - "n = 100\n", - "while(n<=300):\n", - " if (n % 6 == 0):\n", - " print('El número es: ', str(n))\n", - " break\n", - " n += 1" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3.9.7 64-bit ('henry': conda)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/03 - Flujos de Control/Prep_Course_Homework_03-Resuelto Clase.ipynb b/03 - Flujos de Control/Prep_Course_Homework_03-Resuelto Clase.ipynb deleted file mode 100644 index ce4105c8d..000000000 --- a/03 - Flujos de Control/Prep_Course_Homework_03-Resuelto Clase.ipynb +++ /dev/null @@ -1,34615 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Flujos de Control" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla si es mayor o menor a cero" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "La varaible es mayor a cero\n" - ] - } - ], - "source": [ - "a = 10\n", - "if (a < 0):\n", - " print('La variable es menor a cero')\n", - "elif (a > 0): \n", - " print('La varaible es mayor a cero')\n", - "else:\n", - " print('La variable es igual a cero')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Crear dos variables y un condicional que informe si son del mismo tipo de dato" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Las variables son de tipos de dato diferentes\n" - ] - } - ], - "source": [ - "a = 'esto es una frase'\n", - "b = 3\n", - "if (type(a) == bool):\n", - " print('Las variables son del mismo tipo de dato')\n", - " print(f'Las variables {a} y {b} son del mismo tipo de dato')\n", - " print('Las variables' , str(a), 'y', str(b), 'son del mismo tipo de dato')\n", - " print('Las variables ' + str(a) + ' y ' + str(b) + ' son del mismo tipo de dato')\n", - "else:\n", - " print('Las variables son de tipos de dato diferentes')" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Las variables 3.2 y 2 son del mismo tipo de dato\n" - ] - } - ], - "source": [ - "a = 3.2\n", - "b = 2\n", - "print(f'Las variables {a} y {b} son del mismo tipo de dato')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Las variables 3.2 y 2 son del mismo tipo de dato\n" - ] - } - ], - "source": [ - "print('Las variables', a, 'y', str(b), 'son del mismo tipo de dato')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Las variables3.2 y 2 son del mismo tipo de dato\n" - ] - } - ], - "source": [ - "print('Las variables' + str(a) + ' y ' + str(b) + ' son del mismo tipo de dato')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Para los valores enteros del 1 al 20, imprimir por pantalla si es par o impar" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "4 % 2" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El numero 1 es impar\n", - "El numero 2 es par\n", - "El numero 3 es impar\n", - "El numero 4 es par\n", - "El numero 5 es impar\n", - "El numero 6 es par\n", - "El numero 7 es impar\n", - "El numero 8 es par\n", - "El numero 9 es impar\n", - "El numero 10 es par\n", - "El numero 11 es impar\n", - "El numero 12 es par\n", - "El numero 13 es impar\n", - "El numero 14 es par\n", - "El numero 15 es impar\n", - "El numero 16 es par\n", - "El numero 17 es impar\n", - "El numero 18 es par\n", - "El numero 19 es impar\n", - "El numero 20 es par\n" - ] - } - ], - "source": [ - "i = 1\n", - "while (i <= 20):\n", - " if (i % 2 == 0):\n", - " print(f'El numero {i} es par')\n", - " else:\n", - " print(f'El numero {i} es impar')\n", - " i = i + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número 1 es impar\n", - "El número 2 es par\n", - "El número 3 es impar\n", - "El número 4 es par\n", - "El número 5 es impar\n", - "El número 6 es par\n", - "El número 7 es impar\n", - "El número 8 es par\n", - "El número 9 es impar\n", - "El número 10 es par\n", - "El número 11 es impar\n", - "El número 12 es par\n", - "El número 13 es impar\n", - "El número 14 es par\n", - "El número 15 es impar\n", - "El número 16 es par\n", - "El número 17 es impar\n", - "El número 18 es par\n", - "El número 19 es impar\n", - "El número 20 es par\n" - ] - } - ], - "source": [ - "for i in range(1, 21):\n", - " if i % 2 == 0:\n", - " print('El número ', str(i), ' es par')\n", - " else:\n", - " print('El número ', str(i), ' es impar')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) En un ciclo for mostrar para los valores entre 0 y 5 el resultado de elevarlo a la potencia igual a 3" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Valor: 0 Elevado a la 3ra potencia: 0\n", - "Valor: 1 Elevado a la 3ra potencia: 1\n", - "Valor: 2 Elevado a la 3ra potencia: 8\n", - "Valor: 3 Elevado a la 3ra potencia: 27\n", - "Valor: 4 Elevado a la 3ra potencia: 64\n", - "Valor: 5 Elevado a la 3ra potencia: 125\n" - ] - } - ], - "source": [ - "for i in range(0, 6):\n", - " print('Valor:', str(i), ' Elevado a la 3ra potencia:', str(i**3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una variable que contenga un número entero y realizar un ciclo for la misma cantidad de ciclos" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "n = 20\n", - "j = 1\n", - "for i in range(j, n):\n", - " continue" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Utilizar un ciclo while para realizar el factorial de un número guardado en una variable, sólo si la variable contiene un número entero mayor a 0" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4\n", - "12\n", - "24\n" - ] - } - ], - "source": [ - "numero = 4\n", - "factorial = 1\n", - "while(numero > 1):\n", - " factorial = numero * factorial\n", - " print(factorial)\n", - " numero = numero - 1\n", - "#print(factorial)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "numero = -1\n", - "factorial = 1\n", - "for i in range(2, (numero + 1)):\n", - " factorial = i * factorial\n", - "print(factorial)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "La variable no es un entero\n" - ] - } - ], - "source": [ - "n = 'otra cosa'\n", - "if (type(n) == int):\n", - " if (n > 0):\n", - " factorial = n\n", - " while (n > 2):\n", - " n = n - 1\n", - " factorial = factorial * n\n", - " print('El factorial es', factorial)\n", - " else:\n", - " print('La variable no es mayor a cero')\n", - "else:\n", - " print('La variable no es un entero')\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Crear un ciclo for dentro de un ciclo while" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ciclo while nro 2\n", - "Ciclo for nro 1\n", - "Ciclo while nro 3\n", - "Ciclo for nro 1\n", - "Ciclo while nro 3\n", - "Ciclo for nro 2\n", - "Ciclo while nro 4\n", - "Ciclo for nro 1\n", - "Ciclo while nro 4\n", - "Ciclo for nro 2\n", - "Ciclo while nro 4\n", - "Ciclo for nro 3\n" - ] - } - ], - "source": [ - "n = 0\n", - "while(n < 5):\n", - " for i in range(1,n):\n", - " print('Ciclo while nro ' + str(n))\n", - " print('Ciclo for nro ' + str(i))\n", - " \n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Crear un ciclo while dentro de un ciclo for" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "n = 5\n", - "for i in range(1, n):\n", - " while(n < 5):\n", - " n -= 1\n", - " print('Ciclo while nro ' + str(n))\n", - " print('Ciclo for nro ' + str(i))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "9) Imprimir los números primos existentes entre 0 y 30" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "num = -2\n", - "num2 = 1\n", - "while( num > 0):\n", - " num2 = num * num2\n", - " num = num - 1\n", - " print(num2) \n", - " else:\n", - " print('el número {num} es menor que 0') \n" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número 1 es primo\n", - "El número 2 es primo\n", - "El número 3 es primo\n", - "El número 5 es primo\n", - "El número 7 es primo\n", - "El número 11 es primo\n", - "El número 13 es primo\n", - "El número 17 es primo\n", - "El número 19 es primo\n", - "El número 23 es primo\n", - "El número 29 es primo\n" - ] - } - ], - "source": [ - "min = 1\n", - "max = 30\n", - "for n in range(min, (max + 1)):\n", - " primo = True\n", - " j = 2\n", - " while(j < n):\n", - " if (n % j == 0):\n", - " primo = False\n", - " break\n", - " j += 1\n", - " if (primo):\n", - " print('El número', n, 'es primo')" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n" - ] - } - ], - "source": [ - "tope_rango=30\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " if (n % div == 0):\n", - " primo = False\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "10) ¿Se puede mejorar el proceso del punto 9? Utilizar las sentencias break y/ó continue para tal fin" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n" - ] - } - ], - "source": [ - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "11) En los puntos 9 y 10, se diseño un código que encuentra números primos y además se lo optimizó. ¿Es posible saber en qué medida se optimizó?" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "Cantidad de ciclos: 378\n" - ] - } - ], - "source": [ - "ciclos_sin_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_sin_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_sin_break))" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "Cantidad de ciclos: 134\n", - "Se optimizó a un 0.3544973544973545% de ciclos aplicando break\n" - ] - } - ], - "source": [ - "ciclos_con_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_con_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_con_break))\n", - "print('Se optimizó a un ' + str(ciclos_con_break/ciclos_sin_break) + '% de ciclos aplicando break')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "12) Si la cantidad de números que se evalúa es mayor a treinta, esa optimización crece?" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "31\n", - "37\n", - "41\n", - "43\n", - "47\n", - "53\n", - "59\n", - "61\n", - "67\n", - "71\n", - "73\n", - "79\n", - "83\n", - "89\n", - "97\n", - "Cantidad de ciclos: 4753\n" - ] - } - ], - "source": [ - "tope_rango=100\n", - "ciclos_sin_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_sin_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_sin_break))" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "31\n", - "37\n", - "41\n", - "43\n", - "47\n", - "53\n", - "59\n", - "61\n", - "67\n", - "71\n", - "73\n", - "79\n", - "83\n", - "89\n", - "97\n", - "Cantidad de ciclos: 1132\n", - "Se optimizó a un 0.2381653692404797% de ciclos aplicando break\n" - ] - } - ], - "source": [ - "ciclos_con_break = 0\n", - "n = 0\n", - "primo = True\n", - "while (n < tope_rango):\n", - " for div in range(2, n):\n", - " ciclos_con_break += 1\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " else:\n", - " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_con_break))\n", - "print('Se optimizó a un ' + str(ciclos_con_break/ciclos_sin_break) + '% de ciclos aplicando break')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "13) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n", - "100\n" - ] - } - ], - "source": [ - "n = 99\n", - "while(n <= 300):\n", - " n+=1\n", - " if (n % 12 != 0):\n", - " continue\n", - " print(n, ' es divisible por 12')" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'n' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_2108/1249512285.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mn\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mNameError\u001b[0m: name 'n' is not defined" - ] - } - ], - "source": [ - "n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "14) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "¿Desea encontrar el siguiente número primo?\n", - "2\n", - "¿Desea encontrar el siguiente número primo?\n", - "3\n", - "¿Desea encontrar el siguiente número primo?\n", - "5\n", - "¿Desea encontrar el siguiente número primo?\n", - "7\n", - "¿Desea encontrar el siguiente número primo?\n", - "11\n", - "¿Desea encontrar el siguiente número primo?\n", - "13\n", - "¿Desea encontrar el siguiente número primo?\n", - "Se finaliza el proceso\n" - ] - } - ], - "source": [ - "n = 1\n", - "sigue = 1\n", - "primo = True\n", - "while (sigue == 1):\n", - " for div in range(2, n):\n", - " if (n % div == 0):\n", - " primo = False\n", - " break\n", - " if (primo):\n", - " print(n)\n", - " print('¿Desea encontrar el siguiente número primo?')\n", - " if (input() != '1'):\n", - " print('Se finaliza el proceso')\n", - " break\n", - " else:\n", - " primo = True\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "15) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El número es: 102\n" - ] - } - ], - "source": [ - "n = 100\n", - "while(n<=300):\n", - " if (n % 6 == 0):\n", - " print('El número es: ', str(n))\n", - " break\n", - " n += 1" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['rojo', 'azul', 'amarillo', 'verde', 12, True, 5.8]\n" - ] - } - ], - "source": [ - "mi_lista = ['rojo','azul','amarillo','verde',12,True,5.8]\n", - "print(mi_lista)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(mi_lista[1:4])" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['rojo', 'amarillo', 'negro', 'celeste', 12, True, 5.8]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_lista" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.insert(3, 'negro')" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.remove('azul')" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['rojo', 'amarillo', 'negro', 'celeste', 12, True, 'blanco', 12, 'blanco', 12]" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_lista" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista2 = ['blanco',12]\n", - "mi_lista.extend(mi_lista2)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista = [8,1,5,0]" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "mi_lista.sort()" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 1, 5, 8]" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mi_lista" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "9 in mi_lista" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [], - "source": [ - "mi_tupla = (5,5,6)" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'mi_tupla' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_12848/3347640657.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m5\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mmi_tupla\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mNameError\u001b[0m: name 'mi_tupla' is not defined" - ] - } - ], - "source": [ - "5 in mi_tupla" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "del mi_tupla" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/03 - Flujos de Control/README.json b/03 - Flujos de Control/README.json deleted file mode 100644 index 07c36e60b..000000000 --- a/03 - Flujos de Control/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Flujos de Control", - "permalink": "/Clase_Tres/", - "eleventyNavigation": { - "key": "Clase 3", - "order": 3 - }, - "feedbackID": "03 - Flujos de Control" -} diff --git a/03 - Flujos de Control/Sistemas de numeracion.xlsx b/03 - Flujos de Control/Sistemas de numeracion.xlsx deleted file mode 100644 index 594de3d95..000000000 Binary files a/03 - Flujos de Control/Sistemas de numeracion.xlsx and /dev/null differ diff --git a/04 - Estructuras de datos/Prep_Course_Homework_04-Resuelto.ipynb b/04 - Estructuras de datos/Prep_Course_Homework_04-Resuelto.ipynb deleted file mode 100644 index d4b97fed8..000000000 --- a/04 - Estructuras de datos/Prep_Course_Homework_04-Resuelto.ipynb +++ /dev/null @@ -1,712 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Estructuras de Datos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una lista que contenga nombres de ciudades del mundo que contenga más de 5 elementos e imprimir por pantalla" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Buenos Aires', 'Brasilia', 'Asunción', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá']\n" - ] - } - ], - "source": [ - "lis = ['Buenos Aires','Brasilia','Asunción','Montevideo','Santiago','Lima','Caracas','Bogotá']\n", - "print(lis)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Imprimir por pantalla el segundo elemento de la lista" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Brasilia\n" - ] - } - ], - "source": [ - "print(lis[1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Imprimir por pantalla del segundo al cuarto elemento" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Brasilia', 'Asunción', 'Montevideo']\n" - ] - } - ], - "source": [ - "print(lis[1:4])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Visualizar el tipo de dato de la lista" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "print(type(lis))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Visualizar todos los elementos de la lista a partir del tercero de manera genérica, es decir, sin explicitar la posición del último elemento" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Asunción', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá']\n" - ] - } - ], - "source": [ - "print(lis[2:])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Visualizar los primeros 4 elementos de la lista" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Buenos Aires', 'Brasilia', 'Asunción', 'Montevideo']\n" - ] - } - ], - "source": [ - "print(lis[:4])\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Agregar una ciudad más a la lista que ya exista y otra que no ¿Arroja algún tipo de error?" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "lis.append('Ciudad de Méjico')" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "lis.append('Montevideo')" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Buenos Aires', 'Brasilia', 'Asunción', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo']\n" - ] - } - ], - "source": [ - "print(lis)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Agregar otra ciudad, pero en la cuarta posición" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "lis.insert(3, 'Quito')" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Buenos Aires', 'Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo']\n" - ] - } - ], - "source": [ - "print(lis)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "9) Concatenar otra lista a la ya creada" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Buenos Aires', 'Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma', 'Bruselas']\n" - ] - } - ], - "source": [ - "lis.extend(['Madrid','Roma','Bruselas'])\n", - "print(lis)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "10) Encontrar el índice de la ciudad que en el punto 7 agregamos duplicada. ¿Se nota alguna particularidad?" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4\n" - ] - } - ], - "source": [ - "print(lis.index('Montevideo'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "11) ¿Qué pasa si se busca un elemento que no existe?" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "'París' is not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_2688/2999708316.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlis\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'París'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: 'París' is not in list" - ] - } - ], - "source": [ - "print(lis.index('París'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "12) Eliminar un elemento de la lista" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "lis.remove('Buenos Aires')" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma', 'Bruselas']\n" - ] - } - ], - "source": [ - "print(lis)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "13) ¿Qué pasa si el elemento a eliminar no existe?" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "list.remove(x): x not in list", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_2688/2377769693.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlis\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Buenos Aires'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mValueError\u001b[0m: list.remove(x): x not in list" - ] - } - ], - "source": [ - "lis.remove('Buenos Aires')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "14) Extraer el úlimo elemento de la lista, guardarlo en una variable e imprimirlo" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Bruselas\n" - ] - } - ], - "source": [ - "ultimo = lis.pop()\n", - "print(ultimo)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "15) Mostrar la lista multiplicada por 4" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma', 'Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma', 'Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma', 'Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma']\n" - ] - } - ], - "source": [ - "print(lis * 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "16) Crear una tupla que contenga los números enteros del 1 al 20" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)\n" - ] - } - ], - "source": [ - "tup = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)\n", - "print(type(tup))\n", - "print(tup)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "17) Imprimir desde el índice 10 al 15 de la tupla" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(11, 12, 13, 14, 15, 16)\n" - ] - } - ], - "source": [ - "print(tup[10:16])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "18) Evaluar si los números 20 y 30 están dentro de la tupla" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n", - "False\n" - ] - } - ], - "source": [ - "print(20 in tup)\n", - "print(30 in tup)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "19) Con la lista creada en el punto 1, validar la existencia del elemento 'París' y si no existe, agregarlo. Utilizar una variable e informar lo sucedido." - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Se insertó el elemento París\n" - ] - } - ], - "source": [ - "elemento = 'París'\n", - "if (not(elemento in lis)):\n", - " lis.append(elemento)\n", - " print('Se insertó el elemento', elemento)\n", - "else:\n", - " print('El elemento', elemento, 'ya existía')\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "20) Mostrar la cantidad de veces que se encuentra un elemento específico dentro de la tupla y de la lista" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n" - ] - } - ], - "source": [ - "print(tup.count(10))\n", - "print(lis.count('Montevideo'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "21) Convertir la tupla en una lista" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n" - ] - } - ], - "source": [ - "lis2=list(tup)\n", - "print(lis2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "22) Desempaquetar solo los primeros 3 elementos de la tupla en 3 variables" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n" - ] - } - ], - "source": [ - "v1, v2, v3, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ = tup\n", - "print(v1)\n", - "print(v2)\n", - "print(v3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "23) Crear un diccionario utilizando la lista crada en el punto 1, asignandole la clave \"ciudad\". Agregar tambien otras claves, como puede ser \"Pais\" y \"Continente\"." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "dicc = { 'Ciudad': lis, \n", - "'País': ['Brasil','Paraguay','Ecuador','Uruguay','Chile','Perú','Venezuela','Colombia','Méjico','Uruguay','España','Italia','Francia'], \n", - "'Continente' : ['América','América','América','América','América','América','América','América','América','América','Europa','Europa','Europa']}" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'Ciudad': ['Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma', 'París'], 'País': ['Brasil', 'Paraguay', 'Ecuador', 'Uruguay', 'Chile', 'Perú', 'Venezuela', 'Colombia', 'Méjico', 'Uruguay', 'España', 'Italia', 'Francia'], 'Continente': ['América', 'América', 'América', 'América', 'América', 'América', 'América', 'América', 'América', 'América', 'Europa', 'Europa', 'Europa']}\n" - ] - } - ], - "source": [ - "print(dicc)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "24) Imprimir las claves del diccionario" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['Ciudad', 'País', 'Continente'])\n" - ] - } - ], - "source": [ - "print(dicc.keys())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "25) Imprimir las ciudades a través de su clave" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Brasilia', 'Asunción', 'Quito', 'Montevideo', 'Santiago', 'Lima', 'Caracas', 'Bogotá', 'Ciudad de Méjico', 'Montevideo', 'Madrid', 'Roma', 'París']\n" - ] - } - ], - "source": [ - "print(dicc['Ciudad'])" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/04 - Estructuras de datos/README.json b/04 - Estructuras de datos/README.json deleted file mode 100644 index dd6470ee6..000000000 --- a/04 - Estructuras de datos/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Estructuras de Datos", - "permalink": "/Clase_Cuatro/", - "eleventyNavigation": { - "key": "Clase 4", - "order": 4 - }, - "feedbackID": "04 - Estructuras de datos" -} diff --git a/05 - Iteradores e Iterables/Prep_Course_Homework_05-Resuelto.ipynb b/05 - Iteradores e Iterables/Prep_Course_Homework_05-Resuelto.ipynb deleted file mode 100644 index 79e75fd6c..000000000 --- a/05 - Iteradores e Iterables/Prep_Course_Homework_05-Resuelto.ipynb +++ /dev/null @@ -1,653 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Iteradores e iterables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) A partir de una lista vacía, utilizar un ciclo while para cargar allí números negativos del -15 al -1" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1]\n" - ] - } - ], - "source": [ - "lista = []\n", - "n = -15\n", - "while (n < 0):\n", - " lista.append(n)\n", - " n += 1\n", - "print(lista)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) ¿Con un ciclo while sería posible recorrer la lista para imprimir sólo los números pares?" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-14\n", - "-12\n", - "-10\n", - "-8\n", - "-6\n", - "-4\n", - "-2\n" - ] - } - ], - "source": [ - "n = 0\n", - "while (n < len(lista)):\n", - " if (lista[n] % 2 == 0):\n", - " print(lista[n])\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Resolver el punto anterior sin utilizar un ciclo while" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-14\n", - "-12\n", - "-10\n", - "-8\n", - "-6\n", - "-4\n", - "-2\n" - ] - } - ], - "source": [ - "for elemento in lista:\n", - " if (elemento % 2 == 0):\n", - " print(elemento)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Utilizar el iterable para recorrer sólo los primeros 3 elementos" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-15\n", - "-14\n", - "-13\n" - ] - } - ], - "source": [ - "for elemento in lista[:3]:\n", - " print(elemento)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Utilizar la función **enumerate** para obtener dentro del iterable, tambien el índice al que corresponde el elemento" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 -15\n", - "1 -14\n", - "2 -13\n", - "3 -12\n", - "4 -11\n", - "5 -10\n", - "6 -9\n", - "7 -8\n", - "8 -7\n", - "9 -6\n", - "10 -5\n", - "11 -4\n", - "12 -3\n", - "13 -2\n", - "14 -1\n" - ] - } - ], - "source": [ - "for i, e in enumerate(lista):\n", - " print(i, e)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Dada la siguiente lista de números enteros entre 1 y 20, crear un ciclo donde se completen los valores faltantes: lista = [1,2,5,7,8,10,13,14,15,17,20]" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "lista = [1,2,5,7,8,10,13,14,15,17,20]" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n" - ] - } - ], - "source": [ - "n = 1\n", - "while(n <= 20):\n", - " if (not(n in lista)):\n", - " lista.insert((n-1), n)\n", - " n += 1\n", - "print(lista)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) La sucesión de Fibonacci es un listado de números que sigue la fórmula:
\n", - "n0 = 0
\n", - "n1 = 1
\n", - "ni = ni-1 + ni-2
\n", - "Crear una lista con los primeros treinta números de la sucesión.
" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229]\n" - ] - } - ], - "source": [ - "fibo = [0,1]\n", - "n = 2\n", - "while(n < 30):\n", - " fibo.append(fibo[n-1]+fibo[n-2])\n", - " n += 1\n", - "print(fibo)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Realizar la suma de todos elementos de la lista del punto anterior" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1346268" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(fibo)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "9) La proporción aurea se expresa con una proporción matemática que nace el número irracional Phi= 1,618… que los griegos llamaron número áureo. El cuál se puede aproximar con la sucesión de Fibonacci. Con la lista del ejercicio anterior, imprimir el cociente de los últimos 5 pares de dos números contiguos:
\n", - "Donde i es la cantidad total de elementos
\n", - "ni-1 / ni
\n", - "ni-2 / ni-1
\n", - "ni-3 / ni-2
\n", - "ni-4 / ni-3
\n", - "ni-5 / ni-4
\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.6176470588235294\n", - "1.6181818181818182\n", - "1.6179775280898876\n", - "1.6180555555555556\n", - "1.6180257510729614\n" - ] - } - ], - "source": [ - "primeros = 15\n", - "n = primeros - 5\n", - "while(n < primeros):\n", - " print(fibo[n]/fibo[n-1])\n", - " n += 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "10) A partir de la variable cadena ya dada, mostrar en qué posiciones aparece la letra \"n\"
\n", - "cadena = 'Hola Mundo. Esto es una practica del lenguaje de programación Python'" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "7\n", - "21\n", - "39\n", - "60\n", - "67\n" - ] - } - ], - "source": [ - "cadena = 'Hola Mundo. Esto es una practica del lenguaje de programación Python'\n", - "for i, c in enumerate(cadena):\n", - " if c == 'n':\n", - " print(i)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "11) Crear un diccionario e imprimir sus claves utilizando un iterador" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ciudad\n", - "País\n", - "Continente\n" - ] - } - ], - "source": [ - "dicc = { 'Ciudad': ['Buenos Aires','Caracas','Bogotá','Lisboa','Roma'], \n", - "'País': ['Argentina','Venezuela','Colombia','Portugal','Italia'], \n", - "'Continente' : ['América','América','América','Europa','Europa']}\n", - "for i in dicc:\n", - " print(i)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "12) Convertir en una lista la variable \"cadena\" del punto 10 y luego recorrerla con un iterador " - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n" - ] - } - ], - "source": [ - "cadena = 'Hola Mundo. Esto es una practica del lenguaje de programación Python'\n", - "print(type(cadena))\n", - "cadena = list(cadena)\n", - "print(type(cadena))" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H\n", - "o\n", - "l\n", - "a\n", - " \n", - "M\n", - "u\n", - "n\n", - "d\n", - "o\n", - ".\n", - " \n", - "E\n", - "s\n", - "t\n", - "o\n", - " \n", - "e\n", - "s\n", - " \n", - "u\n", - "n\n", - "a\n", - " \n", - "p\n", - "r\n", - "a\n", - "c\n", - "t\n", - "i\n", - "c\n", - "a\n", - " \n", - "d\n", - "e\n", - "l\n", - " \n", - "l\n", - "e\n", - "n\n", - "g\n", - "u\n", - "a\n", - "j\n", - "e\n", - " \n", - "d\n", - "e\n", - " \n", - "p\n", - "r\n", - "o\n", - "g\n", - "r\n", - "a\n", - "m\n", - "a\n", - "c\n", - "i\n", - "ó\n", - "n\n", - " \n", - "P\n", - "y\n", - "t\n", - "h\n", - "o\n", - "n\n" - ] - } - ], - "source": [ - "recorre = iter(cadena)\n", - "largo = len(cadena)\n", - "for i in range(0, largo):\n", - " print(next(recorre))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "13) Crear dos listas y unirlas en una tupla utilizando la función zip" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "[('run', 'correr'), ('fly', 'volar'), ('sleep', 'dormir')]\n" - ] - } - ], - "source": [ - "lis1 = ['run','fly','sleep']\n", - "lis2 = ['correr','volar','dormir']\n", - "lisz = zip(lis1, lis2)\n", - "print(type(lisz))\n", - "print(list(lisz))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "14) A partir de la siguiente lista de números, crear una nueva sólo si el número es divisible por 7
\n", - "lis = [18,21,29,32,35,42,56,60,63,71,84,90,91,100]" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[21, 35, 42, 56, 63, 84, 91]\n" - ] - } - ], - "source": [ - "lis = [18,21,29,32,35,42,56,60,63,71,84,90,91,100]\n", - "lis2 = [i for i in lis if i % 7 == 0]\n", - "print(lis2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "15) A partir de la lista de a continuación, contar la cantidad total de elementos que contiene, teniendo en cuenta que un elemento de la lista podría ser otra lista:
\n", - "lis = [[1,2,3,4],'rojo','verde',[True,False,False],['uno','dos','tres']]" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "lis = [[1,2,3,4],'rojo','verde',[True,False,False],['uno','dos','tres']]" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(lis)" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "La cantidad total de elementos es 12\n" - ] - } - ], - "source": [ - "cantidad = 0\n", - "for elemento in lis:\n", - " if (type(elemento) == list):\n", - " cantidad += len(elemento)\n", - " else:\n", - " cantidad += 1\n", - "print('La cantidad total de elementos es', cantidad)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "16) Tomar la lista del punto anterior y convertir cada elemento en una lista si no lo es" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1, 2, 3, 4], ['rojo'], ['verde'], [True, False, False], ['uno', 'dos', 'tres']]\n" - ] - } - ], - "source": [ - "for indice, elemento in enumerate(lis):\n", - " if (type(elemento) != list):\n", - " lis[indice]=[elemento]\n", - "print(lis)" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/05 - Iteradores e Iterables/README.json b/05 - Iteradores e Iterables/README.json deleted file mode 100644 index b54fff278..000000000 --- a/05 - Iteradores e Iterables/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Iteradores e iterables", - "permalink": "/Clase_Cinco/", - "eleventyNavigation": { - "key": "Clase 5", - "order": 5 - }, - "feedbackID": "05 - Iteradores e Iterables" -} diff --git a/06 - Funciones/.ipynb_checkpoints/Prep_Course_Homework_06-Resuelto-Copy1-checkpoint.ipynb b/06 - Funciones/.ipynb_checkpoints/Prep_Course_Homework_06-Resuelto-Copy1-checkpoint.ipynb deleted file mode 100644 index 58381cfe9..000000000 --- a/06 - Funciones/.ipynb_checkpoints/Prep_Course_Homework_06-Resuelto-Copy1-checkpoint.ipynb +++ /dev/null @@ -1,389 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Funciones" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una función que reciba un número como parámetro y devuelva si True si es primo y False si no lo es" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def verifica_primo(nro):\n", - " es_primo = True\n", - " for i in range(2, nro):\n", - " if nro % i == 0:\n", - " es_primo = False\n", - " break\n", - " return es_primo" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Utilizando la función del punto 1, realizar otra función que reciba de parámetro una lista de números y devuelva sólo aquellos que son primos en otra lista" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "def extrae_primos_de_lista(lista):\n", - " lista_primos = []\n", - " for elemento in lista:\n", - " if verifica_primo(int(elemento)):\n", - " lista_primos.append(elemento)\n", - " return lista_primos" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 2, 3, 5, 7, 11, 13, 17, 19]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lis_completa = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]\n", - "lis_primos = extrae_primos_de_lista(lis_completa)\n", - "lis_primos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Crear una función que al recibir una lista de números, devuelva el que más se repite y cuántas veces lo hace. Si hay más de un \"más repetido\", que devuelva cualquiera" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "def valor_modal(lista):\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 5 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [1,1,5,6,8,10,22,5,6,4,11,9,5]\n", - "moda, repite = valor_modal(lis)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) A la función del punto 3, agregar un parámetro más, que permita elegir si se requiere el menor o el mayor de los mas repetidos." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "def valor_modal(lista, menor):\n", - " '''\n", - " Esta función devuelve el valor modal y recibe de parámetros dos valores:\n", - " 1-Una lista de números\n", - " 2-Verdadero (por defecto) por si se requiere el mínimo de los más repetidos, o Falso si se requiere el máximo\n", - " '''\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " if (menor):\n", - " lista.sort()\n", - " else:\n", - " lista.sort(reverse=True)\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 5 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5]\n", - "moda, repite = valor_modal(lis, True)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 10 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5]\n", - "moda, repite = valor_modal(lis, False)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
\n", - "Fórmula 1\t: (°C × 9/5) + 32 = °F
\n", - "Fórmula 2\t: °C + 273.15 = °K
\n", - "Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino\n" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "def conversion_grados(valor, origen, destino):\n", - " if (origen == 'celsius'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = (valor * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'farenheit'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = (valor - 32) * 5 / 9\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = valor\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = ((valor - 32) * 5 / 9) + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'kelvin'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor - 273.15\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = ((valor - 273.15) * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " else:\n", - " print('Parámetro de Origen incorrecto')\n", - " return valor_destino" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grado Celsius a Celsius: 1\n", - "1 grado Celsius a Kelvin: 274.15\n", - "1 grado Celsius a Farenheit: 33.8\n", - "1 grado Kelvin a Celsius: -272.15\n", - "1 grado Kelvin a Kelvin: 1\n", - "1 grado Kelvin a Farenheit: -457.87\n", - "1 grado Farenheit a Celsius: -17.22222222222222\n", - "1 grado Farenheit a Kelvin: 255.92777777777775\n", - "1 grado Farenheit a Farenheit: 1\n" - ] - } - ], - "source": [ - "print('1 grado Celsius a Celsius:', conversion_grados(1, 'celsius', 'celsius'))\n", - "print('1 grado Celsius a Kelvin:', conversion_grados(1, 'celsius', 'kelvin'))\n", - "print('1 grado Celsius a Farenheit:', conversion_grados(1, 'celsius', 'farenheit'))\n", - "print('1 grado Kelvin a Celsius:', conversion_grados(1, 'kelvin', 'celsius'))\n", - "print('1 grado Kelvin a Kelvin:', conversion_grados(1, 'kelvin', 'kelvin'))\n", - "print('1 grado Kelvin a Farenheit:', conversion_grados(1, 'kelvin', 'farenheit'))\n", - "print('1 grado Farenheit a Celsius:', conversion_grados(1, 'farenheit', 'celsius'))\n", - "print('1 grado Farenheit a Kelvin:', conversion_grados(1, 'farenheit', 'kelvin'))\n", - "print('1 grado Farenheit a Farenheit:', conversion_grados(1, 'farenheit', 'farenheit'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos:" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grado celsius a celsius : 1\n", - "1 grado celsius a kelvin : 274.15\n", - "1 grado celsius a farenheit : 33.8\n", - "1 grado kelvin a celsius : -272.15\n", - "1 grado kelvin a kelvin : 1\n", - "1 grado kelvin a farenheit : -457.87\n", - "1 grado farenheit a celsius : -17.22222222222222\n", - "1 grado farenheit a kelvin : 255.92777777777775\n", - "1 grado farenheit a farenheit : 1\n" - ] - } - ], - "source": [ - "metricas = ['celsius','kelvin','farenheit']\n", - "for i in range(0,3):\n", - " for j in range(0,3):\n", - " print('1 grado', metricas[i], 'a', metricas[j],':', conversion_grados(1, metricas[i], metricas[j]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n", - "El numero debe ser pisitivo\n", - "El numero debe ser un entero\n", - "El numero debe ser un entero\n" - ] - } - ], - "source": [ - "def factorial(numero):\n", - " if(type(numero) != int):\n", - " return 'El numero debe ser un entero'\n", - " if(numero < 0):\n", - " return 'El numero debe ser pisitivo'\n", - " if (numero > 1):\n", - " numero = numero * factorial(numero - 1)\n", - " return numero\n", - "print(factorial(3))\n", - "print(factorial(-2))\n", - "print(factorial(1.23))\n", - "print(factorial('6'))" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/06 - Funciones/.ipynb_checkpoints/Prep_Course_Homework_06-Resuelto-checkpoint.ipynb b/06 - Funciones/.ipynb_checkpoints/Prep_Course_Homework_06-Resuelto-checkpoint.ipynb deleted file mode 100644 index 58381cfe9..000000000 --- a/06 - Funciones/.ipynb_checkpoints/Prep_Course_Homework_06-Resuelto-checkpoint.ipynb +++ /dev/null @@ -1,389 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Funciones" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una función que reciba un número como parámetro y devuelva si True si es primo y False si no lo es" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def verifica_primo(nro):\n", - " es_primo = True\n", - " for i in range(2, nro):\n", - " if nro % i == 0:\n", - " es_primo = False\n", - " break\n", - " return es_primo" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Utilizando la función del punto 1, realizar otra función que reciba de parámetro una lista de números y devuelva sólo aquellos que son primos en otra lista" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "def extrae_primos_de_lista(lista):\n", - " lista_primos = []\n", - " for elemento in lista:\n", - " if verifica_primo(int(elemento)):\n", - " lista_primos.append(elemento)\n", - " return lista_primos" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 2, 3, 5, 7, 11, 13, 17, 19]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lis_completa = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]\n", - "lis_primos = extrae_primos_de_lista(lis_completa)\n", - "lis_primos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Crear una función que al recibir una lista de números, devuelva el que más se repite y cuántas veces lo hace. Si hay más de un \"más repetido\", que devuelva cualquiera" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "def valor_modal(lista):\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 5 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [1,1,5,6,8,10,22,5,6,4,11,9,5]\n", - "moda, repite = valor_modal(lis)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) A la función del punto 3, agregar un parámetro más, que permita elegir si se requiere el menor o el mayor de los mas repetidos." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "def valor_modal(lista, menor):\n", - " '''\n", - " Esta función devuelve el valor modal y recibe de parámetros dos valores:\n", - " 1-Una lista de números\n", - " 2-Verdadero (por defecto) por si se requiere el mínimo de los más repetidos, o Falso si se requiere el máximo\n", - " '''\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " if (menor):\n", - " lista.sort()\n", - " else:\n", - " lista.sort(reverse=True)\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 5 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5]\n", - "moda, repite = valor_modal(lis, True)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 10 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5]\n", - "moda, repite = valor_modal(lis, False)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
\n", - "Fórmula 1\t: (°C × 9/5) + 32 = °F
\n", - "Fórmula 2\t: °C + 273.15 = °K
\n", - "Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino\n" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "def conversion_grados(valor, origen, destino):\n", - " if (origen == 'celsius'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = (valor * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'farenheit'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = (valor - 32) * 5 / 9\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = valor\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = ((valor - 32) * 5 / 9) + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'kelvin'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor - 273.15\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = ((valor - 273.15) * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " else:\n", - " print('Parámetro de Origen incorrecto')\n", - " return valor_destino" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grado Celsius a Celsius: 1\n", - "1 grado Celsius a Kelvin: 274.15\n", - "1 grado Celsius a Farenheit: 33.8\n", - "1 grado Kelvin a Celsius: -272.15\n", - "1 grado Kelvin a Kelvin: 1\n", - "1 grado Kelvin a Farenheit: -457.87\n", - "1 grado Farenheit a Celsius: -17.22222222222222\n", - "1 grado Farenheit a Kelvin: 255.92777777777775\n", - "1 grado Farenheit a Farenheit: 1\n" - ] - } - ], - "source": [ - "print('1 grado Celsius a Celsius:', conversion_grados(1, 'celsius', 'celsius'))\n", - "print('1 grado Celsius a Kelvin:', conversion_grados(1, 'celsius', 'kelvin'))\n", - "print('1 grado Celsius a Farenheit:', conversion_grados(1, 'celsius', 'farenheit'))\n", - "print('1 grado Kelvin a Celsius:', conversion_grados(1, 'kelvin', 'celsius'))\n", - "print('1 grado Kelvin a Kelvin:', conversion_grados(1, 'kelvin', 'kelvin'))\n", - "print('1 grado Kelvin a Farenheit:', conversion_grados(1, 'kelvin', 'farenheit'))\n", - "print('1 grado Farenheit a Celsius:', conversion_grados(1, 'farenheit', 'celsius'))\n", - "print('1 grado Farenheit a Kelvin:', conversion_grados(1, 'farenheit', 'kelvin'))\n", - "print('1 grado Farenheit a Farenheit:', conversion_grados(1, 'farenheit', 'farenheit'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos:" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grado celsius a celsius : 1\n", - "1 grado celsius a kelvin : 274.15\n", - "1 grado celsius a farenheit : 33.8\n", - "1 grado kelvin a celsius : -272.15\n", - "1 grado kelvin a kelvin : 1\n", - "1 grado kelvin a farenheit : -457.87\n", - "1 grado farenheit a celsius : -17.22222222222222\n", - "1 grado farenheit a kelvin : 255.92777777777775\n", - "1 grado farenheit a farenheit : 1\n" - ] - } - ], - "source": [ - "metricas = ['celsius','kelvin','farenheit']\n", - "for i in range(0,3):\n", - " for j in range(0,3):\n", - " print('1 grado', metricas[i], 'a', metricas[j],':', conversion_grados(1, metricas[i], metricas[j]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n", - "El numero debe ser pisitivo\n", - "El numero debe ser un entero\n", - "El numero debe ser un entero\n" - ] - } - ], - "source": [ - "def factorial(numero):\n", - " if(type(numero) != int):\n", - " return 'El numero debe ser un entero'\n", - " if(numero < 0):\n", - " return 'El numero debe ser pisitivo'\n", - " if (numero > 1):\n", - " numero = numero * factorial(numero - 1)\n", - " return numero\n", - "print(factorial(3))\n", - "print(factorial(-2))\n", - "print(factorial(1.23))\n", - "print(factorial('6'))" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/06 - Funciones/Prep_Course_Homework_06-Resuelto.ipynb b/06 - Funciones/Prep_Course_Homework_06-Resuelto.ipynb deleted file mode 100644 index 9e00f9705..000000000 --- a/06 - Funciones/Prep_Course_Homework_06-Resuelto.ipynb +++ /dev/null @@ -1,389 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Funciones" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear una función que reciba un número como parámetro y devuelva True si es primo y False si no lo es" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def verifica_primo(nro):\n", - " es_primo = True\n", - " for i in range(2, nro):\n", - " if nro % i == 0:\n", - " es_primo = False\n", - " break\n", - " return es_primo" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Utilizando la función del punto 1, realizar otra función que reciba de parámetro una lista de números y devuelva sólo aquellos que son primos en otra lista" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "def extrae_primos_de_lista(lista):\n", - " lista_primos = []\n", - " for elemento in lista:\n", - " if verifica_primo(int(elemento)):\n", - " lista_primos.append(elemento)\n", - " return lista_primos" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 2, 3, 5, 7, 11, 13, 17, 19]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lis_completa = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]\n", - "lis_primos = extrae_primos_de_lista(lis_completa)\n", - "lis_primos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Crear una función que al recibir una lista de números, devuelva el que más se repite y cuántas veces lo hace. Si hay más de un \"más repetido\", que devuelva cualquiera" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "def valor_modal(lista):\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 5 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [1,1,5,6,8,10,22,5,6,4,11,9,5]\n", - "moda, repite = valor_modal(lis)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) A la función del punto 3, agregar un parámetro más, que permita elegir si se requiere el menor o el mayor de los mas repetidos." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "def valor_modal(lista, menor):\n", - " '''\n", - " Esta función devuelve el valor modal y recibe de parámetros dos valores:\n", - " 1-Una lista de números\n", - " 2-Verdadero (por defecto) por si se requiere el mínimo de los más repetidos, o Falso si se requiere el máximo\n", - " '''\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " if (menor):\n", - " lista.sort()\n", - " else:\n", - " lista.sort(reverse=True)\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 5 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5]\n", - "moda, repite = valor_modal(lis, True)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 10 y se repite 3 veces.\n" - ] - } - ], - "source": [ - "lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5]\n", - "moda, repite = valor_modal(lis, False)\n", - "print('El valor modal es', moda, 'y se repite', repite, 'veces.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
\n", - "Fórmula 1\t: (°C × 9/5) + 32 = °F
\n", - "Fórmula 2\t: °C + 273.15 = °K
\n", - "Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino\n" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "def conversion_grados(valor, origen, destino):\n", - " if (origen == 'celsius'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = (valor * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'farenheit'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = (valor - 32) * 5 / 9\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = valor\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = ((valor - 32) * 5 / 9) + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'kelvin'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor - 273.15\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = ((valor - 273.15) * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " else:\n", - " print('Parámetro de Origen incorrecto')\n", - " return valor_destino" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grado Celsius a Celsius: 1\n", - "1 grado Celsius a Kelvin: 274.15\n", - "1 grado Celsius a Farenheit: 33.8\n", - "1 grado Kelvin a Celsius: -272.15\n", - "1 grado Kelvin a Kelvin: 1\n", - "1 grado Kelvin a Farenheit: -457.87\n", - "1 grado Farenheit a Celsius: -17.22222222222222\n", - "1 grado Farenheit a Kelvin: 255.92777777777775\n", - "1 grado Farenheit a Farenheit: 1\n" - ] - } - ], - "source": [ - "print('1 grado Celsius a Celsius:', conversion_grados(1, 'celsius', 'celsius'))\n", - "print('1 grado Celsius a Kelvin:', conversion_grados(1, 'celsius', 'kelvin'))\n", - "print('1 grado Celsius a Farenheit:', conversion_grados(1, 'celsius', 'farenheit'))\n", - "print('1 grado Kelvin a Celsius:', conversion_grados(1, 'kelvin', 'celsius'))\n", - "print('1 grado Kelvin a Kelvin:', conversion_grados(1, 'kelvin', 'kelvin'))\n", - "print('1 grado Kelvin a Farenheit:', conversion_grados(1, 'kelvin', 'farenheit'))\n", - "print('1 grado Farenheit a Celsius:', conversion_grados(1, 'farenheit', 'celsius'))\n", - "print('1 grado Farenheit a Kelvin:', conversion_grados(1, 'farenheit', 'kelvin'))\n", - "print('1 grado Farenheit a Farenheit:', conversion_grados(1, 'farenheit', 'farenheit'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos:" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grado celsius a celsius : 1\n", - "1 grado celsius a kelvin : 274.15\n", - "1 grado celsius a farenheit : 33.8\n", - "1 grado kelvin a celsius : -272.15\n", - "1 grado kelvin a kelvin : 1\n", - "1 grado kelvin a farenheit : -457.87\n", - "1 grado farenheit a celsius : -17.22222222222222\n", - "1 grado farenheit a kelvin : 255.92777777777775\n", - "1 grado farenheit a farenheit : 1\n" - ] - } - ], - "source": [ - "metricas = ['celsius','kelvin','farenheit']\n", - "for i in range(0,3):\n", - " for j in range(0,3):\n", - " print('1 grado', metricas[i], 'a', metricas[j],':', conversion_grados(1, metricas[i], metricas[j]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n", - "El numero debe ser pisitivo\n", - "El numero debe ser un entero\n", - "El numero debe ser un entero\n" - ] - } - ], - "source": [ - "def factorial(numero):\n", - " if(type(numero) != int):\n", - " return 'El numero debe ser un entero'\n", - " if(numero < 0):\n", - " return 'El numero debe ser pisitivo'\n", - " if (numero > 1):\n", - " numero = numero * factorial(numero - 1)\n", - " return numero\n", - "print(factorial(3))\n", - "print(factorial(-2))\n", - "print(factorial(1.23))\n", - "print(factorial('6'))" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/06 - Funciones/README.json b/06 - Funciones/README.json deleted file mode 100644 index 0b0484554..000000000 --- a/06 - Funciones/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Funciones", - "permalink": "/Clase_Seis/", - "eleventyNavigation": { - "key": "Clase 6", - "order": 6 - }, - "feedbackID": "06 - Funciones" -} diff --git a/07 - Classes & OOP/.ipynb_checkpoints/Prep_Course_Homework_07-Resuelto-checkpoint.ipynb b/07 - Classes & OOP/.ipynb_checkpoints/Prep_Course_Homework_07-Resuelto-checkpoint.ipynb deleted file mode 100644 index 2f184c853..000000000 --- a/07 - Classes & OOP/.ipynb_checkpoints/Prep_Course_Homework_07-Resuelto-checkpoint.ipynb +++ /dev/null @@ -1,663 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Clases y Programación Orientada a Objetos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear la clase vehículo que contenga los atributos:
\n", - "Color
\n", - "Si es moto, auto, camioneta ó camión
\n", - "Cilindrada del motor" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "class Vehiculo:\n", - " def __init__(self, color, tipo, cilindrada):\n", - " self.color = color\n", - " self.tipo = tipo\n", - " self.cilindrada = cilindrada" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) A la clase Vehiculo creada en el punto 1, agregar los siguientes métodos:
\n", - "Acelerar
\n", - "Frenar
\n", - "Doblar
" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "class Vehiculo:\n", - " def __init__(self, color, tipo, cilindrada):\n", - " self.color = color\n", - " self.tipo = tipo\n", - " self.cilindrada = cilindrada\n", - " self.velocidad = 0\n", - " self.direccion = 0\n", - "\n", - " def Acelerar(self, vel):\n", - " self.velocidad += vel\n", - "\n", - " def Frenar(self, vel):\n", - " self.velocidad -= vel\n", - " \n", - " def Doblar(self, grados):\n", - " self.direccion += grados" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Instanciar 3 objetos de la clase vehículo y ejecutar sus métodos, probar luego el resultado" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "a1 = Vehiculo('rojo', 'auto', 2)\n", - "a2 = Vehiculo('blanco', 'camioneta', 3.6)\n", - "a3 = Vehiculo('negro', 'moto', 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "a1.Acelerar(40)\n", - "a2.Acelerar(60)\n", - "a3.Acelerar(30)\n", - "a1.Doblar(30)\n", - "a3.Doblar(-30)\n", - "a2.Frenar(-50)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Agregar a la clase Vehiculo, un método que muestre su estado, es decir, a que velocidad se encuentra y su dirección. Y otro método que muestre color, tipo y cilindrada" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "class Vehiculo:\n", - " def __init__(self, color, tipo, cilindrada):\n", - " self.color = color\n", - " self.tipo = tipo\n", - " self.cilindrada = cilindrada\n", - " self.velocidad = 0\n", - " self.direccion = 0\n", - "\n", - " def Acelerar(self, vel):\n", - " self.velocidad += vel\n", - "\n", - " def Frenar(self, vel):\n", - " self.velocidad -= vel\n", - " \n", - " def Doblar(self, grados):\n", - " self.direccion += grados\n", - "\n", - " def Estado(self):\n", - " print('Velocidad:', self.velocidad, '- Dirección:', self.direccion)\n", - "\n", - " def Detalle(self):\n", - " print('Soy', self.tipo, 'de color', self.color, 'y mi cilindrada es de', self.cilindrada, 'litros')" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Soy auto de color rojo y mi cilindrada es de 2 litros\n" - ] - } - ], - "source": [ - "a1 = Vehiculo('rojo', 'auto', 2)\n", - "a1.Detalle()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Velocidad: 0 - Dirección: 0\n", - "Velocidad: 30 - Dirección: 0\n" - ] - } - ], - "source": [ - "a1.Estado()\n", - "a1.Acelerar(30)\n", - "a1.Estado()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 6
\n", - "Verificar Primo
\n", - "Valor modal
\n", - "Conversión grados
\n", - "Factorial
" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "class Herramientas:\n", - " def __init__(self) -> None:\n", - " pass\n", - "\n", - " def verifica_primo(self, nro):\n", - " es_primo = True\n", - " for i in range(2, nro):\n", - " if nro % i == 0:\n", - " es_primo = False\n", - " break\n", - " return es_primo\n", - "\n", - " def valor_modal(self, lista, menor):\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " if (menor):\n", - " lista.sort()\n", - " else:\n", - " lista.sort(reverse=True)\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo\n", - "\n", - " def conversion_grados(self, valor, origen, destino):\n", - " valor_destino = None\n", - " if (origen == 'celsius'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = (valor * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'farenheit'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = (valor - 32) * 5 / 9\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = valor\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = ((valor - 32) * 5 / 9) + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'kelvin'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor - 273.15\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = ((valor - 273.15) * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " else:\n", - " print('Parámetro de Origen incorrecto')\n", - " return valor_destino\n", - "\n", - " def factorial(self, numero):\n", - " if(type(numero) != int):\n", - " return 'El numero debe ser un entero'\n", - " if(numero < 0):\n", - " return 'El numero debe ser pisitivo'\n", - " if (numero > 1):\n", - " numero = numero * self.factorial(numero - 1)\n", - " return numero" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "h = Herramientas()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Probar las funciones incorporadas en la clase del punto 5" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h.verifica_primo(7)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 8 y se reptie 2 veces\n" - ] - } - ], - "source": [ - "listado = [1,8,2,5,4,8,10,7]\n", - "moda, repe = h.valor_modal(listado, True)\n", - "print('El valor modal es', moda, 'y se reptie', repe, 'veces')" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "283.15" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h.conversion_grados(10, 'celsius', 'kelvin')" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "720" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h.factorial(6)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Es necesario que la clase creada en el punto 5 contenga una lista, sobre la cual se aplquen las funciones incorporadas" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "class Herramientas:\n", - " def __init__(self, lista_numeros):\n", - " self.lista = lista_numeros\n", - "\n", - " def verifica_primo(self):\n", - " for i in self.lista:\n", - " if (self.__verifica_primo(i)):\n", - " print('El elemento', i, 'SI es un numero primo')\n", - " else:\n", - " print('El elemento', i, 'NO es un numero primo')\n", - "\n", - " def conversion_grados(self, origen, destino):\n", - " for i in self.lista:\n", - " print(i, 'grados', origen, 'son', self.__conversion_grados(i, origen, destino),'grados',destino)\n", - " \n", - " def factorial(self):\n", - " for i in self.lista:\n", - " print('El factorial de ', i, 'es', self.__factorial(i))\n", - "\n", - " def __verifica_primo(self, nro):\n", - " es_primo = True\n", - " for i in range(2, nro):\n", - " if nro % i == 0:\n", - " es_primo = False\n", - " break\n", - " return es_primo\n", - "\n", - " def valor_modal(self, menor):\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(self.lista) == 0:\n", - " return None\n", - " if (menor):\n", - " self.lista.sort()\n", - " else:\n", - " self.lista.sort(reverse=True)\n", - " for elemento in self.lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo\n", - "\n", - " def __conversion_grados(self, valor, origen, destino):\n", - " valor_destino = None\n", - " if (origen == 'celsius'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = (valor * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'farenheit'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = (valor - 32) * 5 / 9\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = valor\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = ((valor - 32) * 5 / 9) + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'kelvin'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor - 273.15\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = ((valor - 273.15) * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " else:\n", - " print('Parámetro de Origen incorrecto')\n", - " return valor_destino\n", - "\n", - " def __factorial(self, numero):\n", - " if(type(numero) != int):\n", - " return 'El numero debe ser un entero'\n", - " if(numero < 0):\n", - " return 'El numero debe ser pisitivo'\n", - " if (numero > 1):\n", - " numero = numero * self.__factorial(numero - 1)\n", - " return numero" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "h = Herramientas([1,1,2,5,8,8,9,11,15,16,16,16,18,20])" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grados celsius son 33.8 grados farenheit\n", - "1 grados celsius son 33.8 grados farenheit\n", - "2 grados celsius son 35.6 grados farenheit\n", - "5 grados celsius son 41.0 grados farenheit\n", - "8 grados celsius son 46.4 grados farenheit\n", - "8 grados celsius son 46.4 grados farenheit\n", - "9 grados celsius son 48.2 grados farenheit\n", - "11 grados celsius son 51.8 grados farenheit\n", - "15 grados celsius son 59.0 grados farenheit\n", - "16 grados celsius son 60.8 grados farenheit\n", - "16 grados celsius son 60.8 grados farenheit\n", - "16 grados celsius son 60.8 grados farenheit\n", - "18 grados celsius son 64.4 grados farenheit\n", - "20 grados celsius son 68.0 grados farenheit\n" - ] - } - ], - "source": [ - "h.conversion_grados('celsius','farenheit')" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El elemento 1 SI es un numero primo\n", - "El elemento 1 SI es un numero primo\n", - "El elemento 2 SI es un numero primo\n", - "El elemento 5 SI es un numero primo\n", - "El elemento 8 NO es un numero primo\n", - "El elemento 8 NO es un numero primo\n", - "El elemento 9 NO es un numero primo\n", - "El elemento 11 SI es un numero primo\n", - "El elemento 15 NO es un numero primo\n", - "El elemento 16 NO es un numero primo\n", - "El elemento 16 NO es un numero primo\n", - "El elemento 16 NO es un numero primo\n", - "El elemento 18 NO es un numero primo\n", - "El elemento 20 NO es un numero primo\n" - ] - } - ], - "source": [ - "h.verifica_primo()" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 16 y se reptie 3 veces\n" - ] - } - ], - "source": [ - "moda, repe = h.valor_modal(False)\n", - "print('El valor modal es', moda, 'y se reptie', repe, 'veces')" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El factorial de 20 es 2432902008176640000\n", - "El factorial de 18 es 6402373705728000\n", - "El factorial de 16 es 20922789888000\n", - "El factorial de 16 es 20922789888000\n", - "El factorial de 16 es 20922789888000\n", - "El factorial de 15 es 1307674368000\n", - "El factorial de 11 es 39916800\n", - "El factorial de 9 es 362880\n", - "El factorial de 8 es 40320\n", - "El factorial de 8 es 40320\n", - "El factorial de 5 es 120\n", - "El factorial de 2 es 2\n", - "El factorial de 1 es 1\n", - "El factorial de 1 es 1\n" - ] - } - ], - "source": [ - "h.factorial()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Crear un archivo .py aparte y ubicar allí la clase generada en el punto anterior. Luego realizar la importación del módulo y probar alguna de sus funciones" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from herramientas import *" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "h2 = Herramientas([1,1,2,3,5,6,8,8])" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El elemento 1 SI es un numero primo\n", - "El elemento 1 SI es un numero primo\n", - "El elemento 2 SI es un numero primo\n", - "El elemento 3 SI es un numero primo\n", - "El elemento 5 SI es un numero primo\n", - "El elemento 6 NO es un numero primo\n", - "El elemento 8 NO es un numero primo\n", - "El elemento 8 NO es un numero primo\n" - ] - } - ], - "source": [ - "h2.verifica_primo()" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/07 - Classes & OOP/Prep_Course_Homework_07-Resuelto.ipynb b/07 - Classes & OOP/Prep_Course_Homework_07-Resuelto.ipynb deleted file mode 100644 index 2f184c853..000000000 --- a/07 - Classes & OOP/Prep_Course_Homework_07-Resuelto.ipynb +++ /dev/null @@ -1,663 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Clases y Programación Orientada a Objetos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear la clase vehículo que contenga los atributos:
\n", - "Color
\n", - "Si es moto, auto, camioneta ó camión
\n", - "Cilindrada del motor" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "class Vehiculo:\n", - " def __init__(self, color, tipo, cilindrada):\n", - " self.color = color\n", - " self.tipo = tipo\n", - " self.cilindrada = cilindrada" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) A la clase Vehiculo creada en el punto 1, agregar los siguientes métodos:
\n", - "Acelerar
\n", - "Frenar
\n", - "Doblar
" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "class Vehiculo:\n", - " def __init__(self, color, tipo, cilindrada):\n", - " self.color = color\n", - " self.tipo = tipo\n", - " self.cilindrada = cilindrada\n", - " self.velocidad = 0\n", - " self.direccion = 0\n", - "\n", - " def Acelerar(self, vel):\n", - " self.velocidad += vel\n", - "\n", - " def Frenar(self, vel):\n", - " self.velocidad -= vel\n", - " \n", - " def Doblar(self, grados):\n", - " self.direccion += grados" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Instanciar 3 objetos de la clase vehículo y ejecutar sus métodos, probar luego el resultado" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "a1 = Vehiculo('rojo', 'auto', 2)\n", - "a2 = Vehiculo('blanco', 'camioneta', 3.6)\n", - "a3 = Vehiculo('negro', 'moto', 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "a1.Acelerar(40)\n", - "a2.Acelerar(60)\n", - "a3.Acelerar(30)\n", - "a1.Doblar(30)\n", - "a3.Doblar(-30)\n", - "a2.Frenar(-50)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Agregar a la clase Vehiculo, un método que muestre su estado, es decir, a que velocidad se encuentra y su dirección. Y otro método que muestre color, tipo y cilindrada" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "class Vehiculo:\n", - " def __init__(self, color, tipo, cilindrada):\n", - " self.color = color\n", - " self.tipo = tipo\n", - " self.cilindrada = cilindrada\n", - " self.velocidad = 0\n", - " self.direccion = 0\n", - "\n", - " def Acelerar(self, vel):\n", - " self.velocidad += vel\n", - "\n", - " def Frenar(self, vel):\n", - " self.velocidad -= vel\n", - " \n", - " def Doblar(self, grados):\n", - " self.direccion += grados\n", - "\n", - " def Estado(self):\n", - " print('Velocidad:', self.velocidad, '- Dirección:', self.direccion)\n", - "\n", - " def Detalle(self):\n", - " print('Soy', self.tipo, 'de color', self.color, 'y mi cilindrada es de', self.cilindrada, 'litros')" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Soy auto de color rojo y mi cilindrada es de 2 litros\n" - ] - } - ], - "source": [ - "a1 = Vehiculo('rojo', 'auto', 2)\n", - "a1.Detalle()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Velocidad: 0 - Dirección: 0\n", - "Velocidad: 30 - Dirección: 0\n" - ] - } - ], - "source": [ - "a1.Estado()\n", - "a1.Acelerar(30)\n", - "a1.Estado()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 6
\n", - "Verificar Primo
\n", - "Valor modal
\n", - "Conversión grados
\n", - "Factorial
" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "class Herramientas:\n", - " def __init__(self) -> None:\n", - " pass\n", - "\n", - " def verifica_primo(self, nro):\n", - " es_primo = True\n", - " for i in range(2, nro):\n", - " if nro % i == 0:\n", - " es_primo = False\n", - " break\n", - " return es_primo\n", - "\n", - " def valor_modal(self, lista, menor):\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(lista) == 0:\n", - " return None\n", - " if (menor):\n", - " lista.sort()\n", - " else:\n", - " lista.sort(reverse=True)\n", - " for elemento in lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo\n", - "\n", - " def conversion_grados(self, valor, origen, destino):\n", - " valor_destino = None\n", - " if (origen == 'celsius'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = (valor * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'farenheit'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = (valor - 32) * 5 / 9\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = valor\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = ((valor - 32) * 5 / 9) + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'kelvin'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor - 273.15\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = ((valor - 273.15) * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " else:\n", - " print('Parámetro de Origen incorrecto')\n", - " return valor_destino\n", - "\n", - " def factorial(self, numero):\n", - " if(type(numero) != int):\n", - " return 'El numero debe ser un entero'\n", - " if(numero < 0):\n", - " return 'El numero debe ser pisitivo'\n", - " if (numero > 1):\n", - " numero = numero * self.factorial(numero - 1)\n", - " return numero" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "h = Herramientas()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Probar las funciones incorporadas en la clase del punto 5" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h.verifica_primo(7)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 8 y se reptie 2 veces\n" - ] - } - ], - "source": [ - "listado = [1,8,2,5,4,8,10,7]\n", - "moda, repe = h.valor_modal(listado, True)\n", - "print('El valor modal es', moda, 'y se reptie', repe, 'veces')" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "283.15" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h.conversion_grados(10, 'celsius', 'kelvin')" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "720" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h.factorial(6)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Es necesario que la clase creada en el punto 5 contenga una lista, sobre la cual se aplquen las funciones incorporadas" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "class Herramientas:\n", - " def __init__(self, lista_numeros):\n", - " self.lista = lista_numeros\n", - "\n", - " def verifica_primo(self):\n", - " for i in self.lista:\n", - " if (self.__verifica_primo(i)):\n", - " print('El elemento', i, 'SI es un numero primo')\n", - " else:\n", - " print('El elemento', i, 'NO es un numero primo')\n", - "\n", - " def conversion_grados(self, origen, destino):\n", - " for i in self.lista:\n", - " print(i, 'grados', origen, 'son', self.__conversion_grados(i, origen, destino),'grados',destino)\n", - " \n", - " def factorial(self):\n", - " for i in self.lista:\n", - " print('El factorial de ', i, 'es', self.__factorial(i))\n", - "\n", - " def __verifica_primo(self, nro):\n", - " es_primo = True\n", - " for i in range(2, nro):\n", - " if nro % i == 0:\n", - " es_primo = False\n", - " break\n", - " return es_primo\n", - "\n", - " def valor_modal(self, menor):\n", - " lista_unicos = []\n", - " lista_repeticiones = []\n", - " if len(self.lista) == 0:\n", - " return None\n", - " if (menor):\n", - " self.lista.sort()\n", - " else:\n", - " self.lista.sort(reverse=True)\n", - " for elemento in self.lista:\n", - " if elemento in lista_unicos:\n", - " i = lista_unicos.index(elemento)\n", - " lista_repeticiones[i] += 1\n", - " else:\n", - " lista_unicos.append(elemento)\n", - " lista_repeticiones.append(1)\n", - " moda = lista_unicos[0]\n", - " maximo = lista_repeticiones[0]\n", - " for i, elemento in enumerate(lista_unicos):\n", - " if lista_repeticiones[i] > maximo:\n", - " moda = lista_unicos[i]\n", - " maximo = lista_repeticiones[i]\n", - " return moda, maximo\n", - "\n", - " def __conversion_grados(self, valor, origen, destino):\n", - " valor_destino = None\n", - " if (origen == 'celsius'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = (valor * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'farenheit'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = (valor - 32) * 5 / 9\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = valor\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = ((valor - 32) * 5 / 9) + 273.15\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " elif (origen == 'kelvin'):\n", - " if (destino == 'celsius'):\n", - " valor_destino = valor - 273.15\n", - " elif (destino == 'farenheit'):\n", - " valor_destino = ((valor - 273.15) * 9 / 5) + 32\n", - " elif (destino == 'kelvin'):\n", - " valor_destino = valor\n", - " else:\n", - " print('Parámetro de Destino incorrecto')\n", - " else:\n", - " print('Parámetro de Origen incorrecto')\n", - " return valor_destino\n", - "\n", - " def __factorial(self, numero):\n", - " if(type(numero) != int):\n", - " return 'El numero debe ser un entero'\n", - " if(numero < 0):\n", - " return 'El numero debe ser pisitivo'\n", - " if (numero > 1):\n", - " numero = numero * self.__factorial(numero - 1)\n", - " return numero" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "h = Herramientas([1,1,2,5,8,8,9,11,15,16,16,16,18,20])" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 grados celsius son 33.8 grados farenheit\n", - "1 grados celsius son 33.8 grados farenheit\n", - "2 grados celsius son 35.6 grados farenheit\n", - "5 grados celsius son 41.0 grados farenheit\n", - "8 grados celsius son 46.4 grados farenheit\n", - "8 grados celsius son 46.4 grados farenheit\n", - "9 grados celsius son 48.2 grados farenheit\n", - "11 grados celsius son 51.8 grados farenheit\n", - "15 grados celsius son 59.0 grados farenheit\n", - "16 grados celsius son 60.8 grados farenheit\n", - "16 grados celsius son 60.8 grados farenheit\n", - "16 grados celsius son 60.8 grados farenheit\n", - "18 grados celsius son 64.4 grados farenheit\n", - "20 grados celsius son 68.0 grados farenheit\n" - ] - } - ], - "source": [ - "h.conversion_grados('celsius','farenheit')" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El elemento 1 SI es un numero primo\n", - "El elemento 1 SI es un numero primo\n", - "El elemento 2 SI es un numero primo\n", - "El elemento 5 SI es un numero primo\n", - "El elemento 8 NO es un numero primo\n", - "El elemento 8 NO es un numero primo\n", - "El elemento 9 NO es un numero primo\n", - "El elemento 11 SI es un numero primo\n", - "El elemento 15 NO es un numero primo\n", - "El elemento 16 NO es un numero primo\n", - "El elemento 16 NO es un numero primo\n", - "El elemento 16 NO es un numero primo\n", - "El elemento 18 NO es un numero primo\n", - "El elemento 20 NO es un numero primo\n" - ] - } - ], - "source": [ - "h.verifica_primo()" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El valor modal es 16 y se reptie 3 veces\n" - ] - } - ], - "source": [ - "moda, repe = h.valor_modal(False)\n", - "print('El valor modal es', moda, 'y se reptie', repe, 'veces')" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El factorial de 20 es 2432902008176640000\n", - "El factorial de 18 es 6402373705728000\n", - "El factorial de 16 es 20922789888000\n", - "El factorial de 16 es 20922789888000\n", - "El factorial de 16 es 20922789888000\n", - "El factorial de 15 es 1307674368000\n", - "El factorial de 11 es 39916800\n", - "El factorial de 9 es 362880\n", - "El factorial de 8 es 40320\n", - "El factorial de 8 es 40320\n", - "El factorial de 5 es 120\n", - "El factorial de 2 es 2\n", - "El factorial de 1 es 1\n", - "El factorial de 1 es 1\n" - ] - } - ], - "source": [ - "h.factorial()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Crear un archivo .py aparte y ubicar allí la clase generada en el punto anterior. Luego realizar la importación del módulo y probar alguna de sus funciones" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from herramientas import *" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "h2 = Herramientas([1,1,2,3,5,6,8,8])" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "El elemento 1 SI es un numero primo\n", - "El elemento 1 SI es un numero primo\n", - "El elemento 2 SI es un numero primo\n", - "El elemento 3 SI es un numero primo\n", - "El elemento 5 SI es un numero primo\n", - "El elemento 6 NO es un numero primo\n", - "El elemento 8 NO es un numero primo\n", - "El elemento 8 NO es un numero primo\n" - ] - } - ], - "source": [ - "h2.verifica_primo()" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/07 - Classes & OOP/README.json b/07 - Classes & OOP/README.json deleted file mode 100644 index 2db0ebd0b..000000000 --- a/07 - Classes & OOP/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Clases & OOP", - "permalink": "/Clase_Siete/", - "eleventyNavigation": { - "key": "Clase 7", - "order": 7 - }, - "feedbackID": "07 - Classes y OOP" -} diff --git a/08 - Error Handling/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-checkpoint.ipynb b/08 - Error Handling/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-checkpoint.ipynb deleted file mode 100644 index 5fbdeb02f..000000000 --- a/08 - Error Handling/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-checkpoint.ipynb +++ /dev/null @@ -1,526 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manejo de errores" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato?" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(r'/C:/Users/lopez/Documents/Henry/Repos/Python-Prep/08 - Error Handling/herramientas.py')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import herramientas as h" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/2426941956.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hola'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h1 = h.Herramientas('hola')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) En la función que hace la conversión de grados, validar que los parámetros enviados sean los esperados, de no serlo, informar cuáles son los valores esperados." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import importlib\n", - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n", - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n" - ] - }, - { - "data": { - "text/plain": [ - "[2, 3, 5, 6, 2]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados(1,2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[35.6, 37.4, 41.0, 42.8, 35.6]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados('celsius','farenheit')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Importar el modulo \"unittest\" y crear los siguientes casos de pruebas sobre la clase utilizada en el punto 2
\n", - "Creacion del objeto incorrecta
\n", - "Creacion correcta del objeto
\n", - "Metodo valor_modal()
\n", - "\n", - "Se puede usar \"raise ValueError()\" en la creación de la clase para verificar el error. Investigar sobre esta funcionalidad." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import unittest" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase(unittest.TestCase):\n", - " \n", - " def test_crear_objeto1(self):\n", - " param = 'hola'\n", - " self.assertRaises(ValueError, h.Herramientas, param)\n", - " #self.failUnlessRaises(ValueError, h.Herramientas, param)\n", - "\n", - " def test_crear_objeto2(self):\n", - " param = [1,2,2,5]\n", - " h1 = h.Herramientas(param)\n", - " self.assertEqual(h1.lista, param)\n", - "\n", - " def test_valor_modal(self):\n", - " lis = [1,2,1,3]\n", - " h1 = h.Herramientas(lis)\n", - " moda, veces = h1.valor_modal(False)\n", - " moda = [moda]\n", - " moda.append(veces)\n", - " resultado = [1, 2]\n", - " self.assertEqual(moda, resultado)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 3 tests in 0.003s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Probar una creación incorrecta y visualizar la salida del \"raise\"" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/323435116.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'algo'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h2 = h.Herramientas('algo')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Agregar casos de pruebas para el método verifica_primos() realizando el cambio en la clase, para que devuelva una lista de True o False en función de que el elemento en la posisicón sea o no primo" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase2(unittest.TestCase):\n", - "\n", - " def test_verifica_primos1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " primos = h1.verifica_primo()\n", - " primos_esperado = [True, True, False, False, True]\n", - " self.assertEqual(primos, primos_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 4 tests in 0.006s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Agregar casos de pruebas para el método conversion_grados()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase3(unittest.TestCase):\n", - "\n", - " def test_verifica_conversion1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " grados = h1.conversion_grados('celsius','farenheit')\n", - " grados_esperado = [35.6, 37.4, 46.4, 50.0, 55.4]\n", - " self.assertEqual(grados, grados_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 5 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Agregar casos de pruebas para el método factorial()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase4(unittest.TestCase):\n", - "\n", - " def test_verifica_factorial(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " factorial = h1.factorial()\n", - " factorial_esperado = [2, 6, 40320, 3628800, 6227020800]\n", - " self.assertEqual(factorial, factorial_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "test_verifica_factorial (__main__.ProbandoMiClase4) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 6 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/08 - Error Handling/Prep_Course_Homework_08-Resuelto.ipynb b/08 - Error Handling/Prep_Course_Homework_08-Resuelto.ipynb deleted file mode 100644 index ef2da854f..000000000 --- a/08 - Error Handling/Prep_Course_Homework_08-Resuelto.ipynb +++ /dev/null @@ -1,526 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manejo de errores" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato?" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(r'/C:/Users/lopez/Documents/Henry/Repos/Python-Prep/07 - Classes & OOP/herramientas.py')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import herramientas as h" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/2426941956.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hola'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h1 = h.Herramientas('hola')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) En la función que hace la conversión de grados, validar que los parámetros enviados sean los esperados, de no serlo, informar cuáles son los valores esperados." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import importlib\n", - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n", - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n" - ] - }, - { - "data": { - "text/plain": [ - "[2, 3, 5, 6, 2]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados(1,2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[35.6, 37.4, 41.0, 42.8, 35.6]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados('celsius','farenheit')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Importar el modulo \"unittest\" y crear los siguientes casos de pruebas sobre la clase utilizada en el punto 2
\n", - "Creacion del objeto incorrecta
\n", - "Creacion correcta del objeto
\n", - "Metodo valor_modal()
\n", - "\n", - "Se puede usar \"raise ValueError()\" en la creación de la clase para verificar el error. Investigar sobre esta funcionalidad." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import unittest" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase(unittest.TestCase):\n", - " \n", - " def test_crear_objeto1(self):\n", - " param = 'hola'\n", - " self.assertRaises(ValueError, h.Herramientas, param)\n", - " #self.failUnlessRaises(ValueError, h.Herramientas, param)\n", - "\n", - " def test_crear_objeto2(self):\n", - " param = [1,2,2,5]\n", - " h1 = h.Herramientas(param)\n", - " self.assertEqual(h1.lista, param)\n", - "\n", - " def test_valor_modal(self):\n", - " lis = [1,2,1,3]\n", - " h1 = h.Herramientas(lis)\n", - " moda, veces = h1.valor_modal(False)\n", - " moda = [moda]\n", - " moda.append(veces)\n", - " resultado = [1, 2]\n", - " self.assertEqual(moda, resultado)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 3 tests in 0.003s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Probar una creación incorrecta y visualizar la salida del \"raise\"" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/323435116.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'algo'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h2 = h.Herramientas('algo')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Agregar casos de pruebas para el método verifica_primos() realizando el cambio en la clase, para que devuelva una lista de True o False en función de que el elemento en la posisicón sea o no primo" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase2(unittest.TestCase):\n", - "\n", - " def test_verifica_primos1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " primos = h1.verifica_primo()\n", - " primos_esperado = [True, True, False, False, True]\n", - " self.assertEqual(primos, primos_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 4 tests in 0.006s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Agregar casos de pruebas para el método conversion_grados()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase3(unittest.TestCase):\n", - "\n", - " def test_verifica_conversion1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " grados = h1.conversion_grados('celsius','farenheit')\n", - " grados_esperado = [35.6, 37.4, 46.4, 50.0, 55.4]\n", - " self.assertEqual(grados, grados_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 5 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Agregar casos de pruebas para el método factorial()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase4(unittest.TestCase):\n", - "\n", - " def test_verifica_factorial(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " factorial = h1.factorial()\n", - " factorial_esperado = [2, 6, 40320, 3628800, 6227020800]\n", - " self.assertEqual(factorial, factorial_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "test_verifica_factorial (__main__.ProbandoMiClase4) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 6 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/08 - Error Handling/README.json b/08 - Error Handling/README.json deleted file mode 100644 index 093e1172e..000000000 --- a/08 - Error Handling/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Manejo de Errores", - "permalink": "/Clase_Ocho/", - "eleventyNavigation": { - "key": "Clase 8", - "order": 8 - }, - "feedbackID": "08 - Error Handling" -} diff --git a/08 - Error Handling/README.zip b/08 - Error Handling/README.zip deleted file mode 100644 index e441e2c37..000000000 Binary files a/08 - Error Handling/README.zip and /dev/null differ diff --git a/08 - Error Handling/ejemplo.txt b/08 - Error Handling/ejemplo.txt deleted file mode 100644 index f312ef047..000000000 --- a/08 - Error Handling/ejemplo.txt +++ /dev/null @@ -1,2 +0,0 @@ -linea1 -linea2 diff --git a/08 - Error Handling/ejemplo_clase.py b/08 - Error Handling/ejemplo_clase.py deleted file mode 100644 index 8eab0e46c..000000000 --- a/08 - Error Handling/ejemplo_clase.py +++ /dev/null @@ -1,4 +0,0 @@ -import sys - -print('El Nombre del script es', sys.argv[0]) -print('El primer parametro es', sys.argv[1]) \ No newline at end of file diff --git a/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-Copy1-checkpoint.ipynb b/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-Copy1-checkpoint.ipynb deleted file mode 100644 index 5fbdeb02f..000000000 --- a/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-Copy1-checkpoint.ipynb +++ /dev/null @@ -1,526 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manejo de errores" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato?" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(r'/C:/Users/lopez/Documents/Henry/Repos/Python-Prep/08 - Error Handling/herramientas.py')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import herramientas as h" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/2426941956.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hola'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h1 = h.Herramientas('hola')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) En la función que hace la conversión de grados, validar que los parámetros enviados sean los esperados, de no serlo, informar cuáles son los valores esperados." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import importlib\n", - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n", - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n" - ] - }, - { - "data": { - "text/plain": [ - "[2, 3, 5, 6, 2]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados(1,2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[35.6, 37.4, 41.0, 42.8, 35.6]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados('celsius','farenheit')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Importar el modulo \"unittest\" y crear los siguientes casos de pruebas sobre la clase utilizada en el punto 2
\n", - "Creacion del objeto incorrecta
\n", - "Creacion correcta del objeto
\n", - "Metodo valor_modal()
\n", - "\n", - "Se puede usar \"raise ValueError()\" en la creación de la clase para verificar el error. Investigar sobre esta funcionalidad." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import unittest" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase(unittest.TestCase):\n", - " \n", - " def test_crear_objeto1(self):\n", - " param = 'hola'\n", - " self.assertRaises(ValueError, h.Herramientas, param)\n", - " #self.failUnlessRaises(ValueError, h.Herramientas, param)\n", - "\n", - " def test_crear_objeto2(self):\n", - " param = [1,2,2,5]\n", - " h1 = h.Herramientas(param)\n", - " self.assertEqual(h1.lista, param)\n", - "\n", - " def test_valor_modal(self):\n", - " lis = [1,2,1,3]\n", - " h1 = h.Herramientas(lis)\n", - " moda, veces = h1.valor_modal(False)\n", - " moda = [moda]\n", - " moda.append(veces)\n", - " resultado = [1, 2]\n", - " self.assertEqual(moda, resultado)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 3 tests in 0.003s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Probar una creación incorrecta y visualizar la salida del \"raise\"" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/323435116.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'algo'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h2 = h.Herramientas('algo')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Agregar casos de pruebas para el método verifica_primos() realizando el cambio en la clase, para que devuelva una lista de True o False en función de que el elemento en la posisicón sea o no primo" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase2(unittest.TestCase):\n", - "\n", - " def test_verifica_primos1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " primos = h1.verifica_primo()\n", - " primos_esperado = [True, True, False, False, True]\n", - " self.assertEqual(primos, primos_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 4 tests in 0.006s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Agregar casos de pruebas para el método conversion_grados()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase3(unittest.TestCase):\n", - "\n", - " def test_verifica_conversion1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " grados = h1.conversion_grados('celsius','farenheit')\n", - " grados_esperado = [35.6, 37.4, 46.4, 50.0, 55.4]\n", - " self.assertEqual(grados, grados_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 5 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Agregar casos de pruebas para el método factorial()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase4(unittest.TestCase):\n", - "\n", - " def test_verifica_factorial(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " factorial = h1.factorial()\n", - " factorial_esperado = [2, 6, 40320, 3628800, 6227020800]\n", - " self.assertEqual(factorial, factorial_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "test_verifica_factorial (__main__.ProbandoMiClase4) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 6 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-checkpoint.ipynb b/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-checkpoint.ipynb deleted file mode 100644 index 5fbdeb02f..000000000 --- a/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-checkpoint.ipynb +++ /dev/null @@ -1,526 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manejo de errores" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato?" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(r'/C:/Users/lopez/Documents/Henry/Repos/Python-Prep/08 - Error Handling/herramientas.py')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import herramientas as h" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/2426941956.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hola'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h1 = h.Herramientas('hola')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) En la función que hace la conversión de grados, validar que los parámetros enviados sean los esperados, de no serlo, informar cuáles son los valores esperados." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import importlib\n", - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "h1 = h.Herramientas([2,3,5,6,2])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n", - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n" - ] - }, - { - "data": { - "text/plain": [ - "[2, 3, 5, 6, 2]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados(1,2)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[35.6, 37.4, 41.0, 42.8, 35.6]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h1.conversion_grados('celsius','farenheit')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Importar el modulo \"unittest\" y crear los siguientes casos de pruebas sobre la clase utilizada en el punto 2
\n", - "Creacion del objeto incorrecta
\n", - "Creacion correcta del objeto
\n", - "Metodo valor_modal()
\n", - "\n", - "Se puede usar \"raise ValueError()\" en la creación de la clase para verificar el error. Investigar sobre esta funcionalidad." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import unittest" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase(unittest.TestCase):\n", - " \n", - " def test_crear_objeto1(self):\n", - " param = 'hola'\n", - " self.assertRaises(ValueError, h.Herramientas, param)\n", - " #self.failUnlessRaises(ValueError, h.Herramientas, param)\n", - "\n", - " def test_crear_objeto2(self):\n", - " param = [1,2,2,5]\n", - " h1 = h.Herramientas(param)\n", - " self.assertEqual(h1.lista, param)\n", - "\n", - " def test_valor_modal(self):\n", - " lis = [1,2,1,3]\n", - " h1 = h.Herramientas(lis)\n", - " moda, veces = h1.valor_modal(False)\n", - " moda = [moda]\n", - " moda.append(veces)\n", - " resultado = [1, 2]\n", - " self.assertEqual(moda, resultado)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 3 tests in 0.003s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Probar una creación incorrecta y visualizar la salida del \"raise\"" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/323435116.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'algo'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" - ] - } - ], - "source": [ - "h2 = h.Herramientas('algo')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Agregar casos de pruebas para el método verifica_primos() realizando el cambio en la clase, para que devuelva una lista de True o False en función de que el elemento en la posisicón sea o no primo" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase2(unittest.TestCase):\n", - "\n", - " def test_verifica_primos1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " primos = h1.verifica_primo()\n", - " primos_esperado = [True, True, False, False, True]\n", - " self.assertEqual(primos, primos_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 4 tests in 0.006s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Agregar casos de pruebas para el método conversion_grados()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase3(unittest.TestCase):\n", - "\n", - " def test_verifica_conversion1(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " grados = h1.conversion_grados('celsius','farenheit')\n", - " grados_esperado = [35.6, 37.4, 46.4, 50.0, 55.4]\n", - " self.assertEqual(grados, grados_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 5 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "8) Agregar casos de pruebas para el método factorial()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "class ProbandoMiClase4(unittest.TestCase):\n", - "\n", - " def test_verifica_factorial(self):\n", - " lis = [2,3,8,10,13]\n", - " h1 = h.Herramientas(lis)\n", - " factorial = h1.factorial()\n", - " factorial_esperado = [2, 6, 40320, 3628800, 6227020800]\n", - " self.assertEqual(factorial, factorial_esperado)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(h)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "test_crear_objeto1 (__main__.ProbandoMiClase) ... ok\n", - "test_crear_objeto2 (__main__.ProbandoMiClase) ... ok\n", - "test_valor_modal (__main__.ProbandoMiClase) ... ok\n", - "test_verifica_primos1 (__main__.ProbandoMiClase2) ... ok\n", - "test_verifica_conversion1 (__main__.ProbandoMiClase3) ... ok\n", - "test_verifica_factorial (__main__.ProbandoMiClase4) ... ok\n", - "\n", - "----------------------------------------------------------------------\n", - "Ran 6 tests in 0.004s\n", - "\n", - "OK\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unittest.main(argv=[''], verbosity=2, exit=False)" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_09-checkpoint.ipynb b/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_09-checkpoint.ipynb deleted file mode 100644 index 605435d19..000000000 --- a/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_09-checkpoint.ipynb +++ /dev/null @@ -1,162 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Entrada / Salida" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1) Crear un script con el nombre \"clase09_ej1.py\" que reciba 3 parametros a elección, verificando que sean exactamente esa cantidad, y muestre como salida los parámetros recibidos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2) Crear un script con el nombre \"clase09_ej2.py2\" que reciba como un valor de temperatura en grados centígrados, un valor de humedad y por último si llovio (Con True o False). Y que cada vez que sea invocado, cargue en el archivo provisto \"clase09_ej2.csv\" una marca de tiempo y esa información." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Para trabajar con tipos de datos relacionados con la medición del tiempo, como ser fechas, horarios o marcas de tiempo se puede utilizar la clase *datetime*" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import datetime" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ahora = 2022-02-04 16:37:10.072897\n", - "Fecha fija = 2020-05-10 00:00:00\n" - ] - } - ], - "source": [ - "x = datetime.datetime.now()\n", - "print(\"Ahora =\",x)\n", - "x = datetime.datetime(2020, 5, 10)\n", - "print(\"Fecha fija =\",x)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "objeto datetime = 2022-05-10 12:30:00\n", - "timestamp = 1652196600.0\n", - "fecha hora = 2022-05-10 12:30:00\n" - ] - } - ], - "source": [ - "fecha_hora = '2022-05-10 12:30:00'\n", - "objeto_datetime = datetime.datetime.strptime(fecha_hora, '%Y-%m-%d %H:%M:%S')\n", - "print(\"objeto datetime =\", objeto_datetime)\n", - "marca_de_tiempo = datetime.datetime.timestamp(objeto_datetime)\n", - "print(\"timestamp =\", marca_de_tiempo)\n", - "fecha_hora2 = datetime.datetime.fromtimestamp(marca_de_tiempo)\n", - "print(\"fecha hora =\", fecha_hora2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3) Crear un archivo a partir de los datos presentes en el diccionario provisto. El cual debe contener en la primera fila el nombre de las claves y luego cada línea los elementos i-ésimos de las listas de valores contiguos y separados por coma ','. Este archivo debe llamarse clase09_ej3.csv" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "montañas = {'nombre':[ 'Everest','K2','Kanchenjunga','Lhotse','Makalu',\n", - " 'Cho Oyu','Dhaulagiri','Manaslu','Nanga Parbat','Annapurna I'],\n", - " 'orden':[1,2,3,4,5,6,7,8,9,10],\n", - " 'cordillera':['Himalaya','Karakórum','Himalaya','Himalaya','Himalaya'\n", - " ,'Himalaya','Himalaya','Himalaya','Karakórum','Himalaya'],\n", - " 'pais': ['Nepal','Pakistán','Nepal','Nepal','Nepal','Nepal','Nepal','Nepal',\n", - " 'Pakistán','Nepal'],\n", - " 'altura':[8849,8611,8586,8516,8485,8188,8167,8163,8125,8091]}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4) Mostrar el tamaño en MB del archivo generado en el punto 3" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5) Crear una carpeta llamada clase09_montañas_altas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "6) Copiar el archivo clase09_ej3.scv en la carpeta clase09_montañas_altas usando la sentencia **os.system**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "7) Listar el contenido de la carpeta clase09_montañas_altas" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_09-checkpoint.md b/09 - Entrada-Salida y Manejo de Archivos/.ipynb_checkpoints/Prep_Course_Homework_09-checkpoint.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/09 - Entrada-Salida y Manejo de Archivos/README.json b/09 - Entrada-Salida y Manejo de Archivos/README.json deleted file mode 100644 index 40f80330a..000000000 --- a/09 - Entrada-Salida y Manejo de Archivos/README.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "lessonTitle": "Entrada-Salida y Manejo de Archivos", - "permalink": "/Clase_Nueve/", - "eleventyNavigation": { - "key": "Clase 9", - "order": 9 - }, - "feedbackID": "09 - Entrada-Salida y Manejo de Archivos" -} - diff --git a/09 - Entrada-Salida y Manejo de Archivos/README.md b/09 - Entrada-Salida y Manejo de Archivos/README.md deleted file mode 100644 index 1105578d2..000000000 --- a/09 - Entrada-Salida y Manejo de Archivos/README.md +++ /dev/null @@ -1,249 +0,0 @@ -![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) - -## Grabación de la Clase 9 - -
- -
- -## Vinculación con Datos Externos - -Es muy importante tener en cuenta que va a ser necesario interactuar con el usuario y trabajar con datos que están alojados en medios externos, puede tratarse de un sistema de archivos ó de una tabla en una base datos, entre otras fuentes. -Es posible realizar operaciones de interacción con el usuario y manipular archivos usando métodos para leer y escribir desde y hacia el sistema de archivos. - -### Entrada / Salida - -Se utilizan funciones ya integradas en el intérprete del lenguaje. Para solicitar información al usuario se utiliza **input**: - -``` python ->>> color = input('¿Cuál es tu color favorito?: ') -¿Cuál es tu color favorito?: Azul ->>> print(color) -Azul ->>> nro = input('¿Cuál es el doble de 3?: ') -¿Cuál es el doble de 3?: 6 ->>> if (int(nro) == 6): ->>> print('Respuesta Correcta') ->>> else: ->>> print('Respuesta Incorrecta') -``` -
-

- Tips: Notar que input() devuelve un tipo de dato string, motivo por el cual al preguntar la igualdad con el 6, lo convertimos a entero -

-
- -La **salida estándar** es la forma general de mostrar información por pantalla es mediante una consola de comando, generalmente podemos mostrar texto y variables separándolos con comas, para este se usa la sentencia **print** - -``` python ->>> print("el resultado de raíz cuadrada de dos es:", (2**0.5)) -el resultado de raíz cuadrada de dos es: 1.41421356237 -``` - -Una forma esencial de escribir un programa es a través de archivos llamados scripts, que no son más que lotes de instrucciones. Luego se envía este archivo al intérprete como parámetro desde la terminal de comando (si es un lenguaje interpretado como Python) y éste ejecutará todas las instrucciones en bloque. -Una característica interesante de los scripts es que pueden recibir datos desde la propia terminal de comando en el momento de la ejecución, algo muy útil para agregar dinamismo a los scripts a través de parámetros o argumentos personalizables. -Para poder enviar información a un script y manejarla, tenemos que utilizar la librería de sistema **sys**. En ella encontraremos la lista **argv** que almacena los argumentos enviados al script. -Suponiendo que creamos un script llamado "ejemplo_parametros.py" que tenga el siguiente código: - -``` python -import sys -# Comprobación de seguridad, ejecutar sólo si se reciben 2 -# argumentos realemente -if len(sys.argv) == 3: - texto = sys.argv[1] - repeticiones = int(sys.argv[2]) - for r in range(repeticiones): - print(texto) -else: - print("ERROR: Introdujo uno (1) o más de dos (2) argumentos") - print("SOLUCIÓN: Introduce los argumentos correctamente") - print('Ejemplo: ejemplo_parametros.py "Texto" 5') -print("El argumento 0 es el nombre del archivo:", sys.argv[0]) -``` - -Luego en la consola, realizar la ejecución del script, por ejemplo:
-python ejemplo_parametros.py 'Hola' 4 - -
-

- Tips: Notar que la lista de argumentos argv contiene en su elemento 0 el nombre del archivo. -

-
- -### Manejo de Archivos - -Un requisito muy común va a ser leer datos desde archivos de texto o también llamados secuenciales. Para esto Python incorpora un tipo integrado llamado **file**. Es importante notar que estos archivos siempre devuelven los datos como cadenas de caracteres, por lo tanto, de ser necesario, otros tipos deben ser convertidos. - -* Crear un archivo a partir de datos presentes en una lista: - -``` python ->>> import os ->>> lineas_archivo = ['Esto es un archivo de ejemplo','Segunda linea','Tercera linea'] ->>> archivo = open('datos.txt', 'w') ->>> for linea in lineas_archivo: ->>> archivo.write(linea+'\n') ->>> archivo.close() -``` - -Es importante cerrar el archivo, ya que si no lo hacemos, el sistema operativo interpreta que está en uso, tal como si estuviera abierto en cualquier editor de texto. - -* Abrir un archivo, e iterar en él para leerlo: - -``` python ->>> import os ->>> archivo = open('datos.txt', 'r') ->>> for linea in archivo: ->>> print linea ->>> archivo.close() -Esto es un archivo de ejemplo -Segunda linea -Tercera linea -``` - -
-

- Tips: Notar que la función open tiene como primer parámetro el nombre del archivo y como segundo parámetro un carácter que indica el modo de apertura:
- Con 'x' creará el archivo, sin embargo retorna error si ya existe
- Con 'a' agregá contenido si el archivo existe, si no lo crea
- Con 'w' crea el archivo directamente, si existe y tiene contenido lo pisa
-

-
- - -### Interactuar con el sistema de archivos - -El módulo **os** de Python permite realizar operaciones dependiente del Sistema Operativo como crear una carpeta, listar contenidos de una carpeta, conocer acerca de un proceso, finalizar un proceso, etc. - -* Crear una carpeta nueva -``` python ->>> import os ->>> os.makedirs("Mi_Carpeta") -``` - -* Listar el contenido de una carpeta -``` python ->>> import os ->>> os.listdir("./") -['Mi_Carpeta'] -``` - -* Mostrar el actual directorio de trabajo -``` python ->>> import os ->>> os.getcwd() -'/home/usuario/python/' -``` - -* Mostrar el tamaño en bytes del archivo pasado como parámetro -``` python ->>> import os ->>> os.path.getsize("Mi_Archivo") -4096 -``` - -* Verificar si es un archivo el parámetro pasado -``` python ->>> import os ->>> os.path.isfile("Mi_Archivo") -True -``` - -* Verificar si es una carpeta el parámetro pasado -``` python ->>> import os ->>> os.path.isdir("Mi_Carpeta") -True -``` - -* Cambiar directorio/carpeta - -``` python ->>> import os ->>> os.chdir("Mi_Carpeta") ->>> os.getcwd() -'/home/usuario/python/Mi_Carpeta' ->>> os.listdir("./") -[] ->>> os.chdir("../") ->>> os.getcwd() -'/home/usuario/python' -``` - -* Renombrar un archivo -``` python ->>> import os ->>> os.rename("Mi_Archivo","Mi_Otro_Archivo") ->>> os.listdir("./") -['Mi_Otro_Archivo'] -``` - -* Eliminar un archivo -``` python ->>> import os ->>> os.chdir("Mi_Carpeta") ->>> archivo = open(os.getcwd()+'/datos.txt', 'w') ->>> archivo.write("Hola Mundo!") ->>> archivo.close() ->>> os.getcwd() -'/home/usuario/python/Mi_Carpeta' ->>> os.listdir("./") -['datos.txt'] ->>> os.remove(os.getcwd()+"/datos.txt") ->>> os.listdir("./") -[] -``` - -* Eliminar una carpeta -``` python ->>> os.rmdir("Mi_Carpeta") ->>> os.chdir("Mi_Carpeta") -Traceback (most recent call last): - File "", line 1, in -OSError: [Errno 2] No such file or directory: 'Mi_Carpeta' -``` - -Lanza una excepción OSError cuando intenta acceder al directorio que previamente elimino y este no encuentra. - -### Extra - Web Scrapping - -Se utiliza esta técnica para extraer información desde sitios web, en primer lugar es necesario tener descargada una librería de Python, llamada Beautiful Soup que nos permite realizar esta acción: - -``` python ->>> !pip install beautifulsoup4 ->>> from bs4 import BeautifulSoup ->>> import urllib.request -``` - -Luego, vamos a extraer el HTML de un sitio web, por ejemplo de Wikipedia: - -``` python -response = urllib.request.urlopen('https://es.wikipedia.org/wiki/Python') -html = response.read() -``` - -Ahora, es necesario quitar todo lo que corresponda a código, y quedarse sólo con la parte del texto, que es lo que realmente interesa - -``` python -soup = BeautifulSoup(html, 'html.parser') -text = soup.get_text() -``` - -En la variable 'text' ahora tenemos el texto del sitio web al que consultamos. - - - -## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/main/09%20-%20Entrada-Salida%20y%20Manejo%20de%20Archivos/Prep_Course_Homework_09.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
diff --git a/09 - Entrada-Salida y Manejo de Archivos/README.zip b/09 - Entrada-Salida y Manejo de Archivos/README.zip deleted file mode 100644 index e441e2c37..000000000 Binary files a/09 - Entrada-Salida y Manejo de Archivos/README.zip and /dev/null differ diff --git a/10 - Repaso/README.json b/10 - Repaso/README.json deleted file mode 100644 index f091916f4..000000000 --- a/10 - Repaso/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Repaso", - "permalink": "/Clase_Diez/", - "eleventyNavigation": { - "key": "Clase 10", - "order": 10 - }, - "feedbackID": "10 - Repaso" -} diff --git a/10 - Repaso/README.md b/10 - Repaso/README.md deleted file mode 100644 index 689211fae..000000000 --- a/10 - Repaso/README.md +++ /dev/null @@ -1,19 +0,0 @@ -![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) - -## Grabación de la Clase 10 - -
- -
- - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
diff --git a/M01_herramientaseinstalacion/README.md b/M01_herramientaseinstalacion/README.md new file mode 100644 index 000000000..c9767abb7 --- /dev/null +++ b/M01_herramientaseinstalacion/README.md @@ -0,0 +1,199 @@ +![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) + +# Instalación de Herramientas + + +#### Preparando tu computadora +Antes de comenzar deberás descargar en tu computadora las siguientes herramientas de trabajo: +1. Editor de texto +2. Git +3. Github +4. Python + +Luego deberás realizar la clonación del [repositorio](https://github.com/soyHenry/Python-Prep). Te explicamos cómo hacerlo en el tutorial: https://youtu.be/nxu3EZVzP8I + +> **Importante**: Github cambió el método de autenticación, ahora es por PAT (Personal Access Token), para crearlo pueden seguir este [link](https://docs.github.com/es/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). Pueden elegir expiration infinita para hacerlo una sóla vez. + +## SLACK + +Slack es una plataforma de comunicación que utilizamos en Henry para estar conectados. Por este medio es MUY IMPORTANTE, por alli vas a recibir comunicados y mantener conversaciones con toda la comunidad de Henry. + +Para ingresar al espacio de Slack del Prep Course de Henry, por favor revisa el los mails que recibiste al avanzar con el proceso de admisión dado que ahí encontrarás el link de acceso + +## Editores de Texto + +Para poder escribir código que pueda ser interpretado por un lenguaje de programación, necesitamos utilizar un editor de texto. + +## Visual Studio Code + +![VSC Console](/_src/assets/00-PrimerosPasos/vsc_console.png) + +Es un editor desarrollado por Microsoft. + +Tiene integrado el control de versiones mediante Git y Github para tener un seguimiento de tus proyectos. Brinda una cantidad de extensiones que facilitan el trabajo de un desarrollador. + +Para descargarlo, nos dirigimos al sitio oficial, en la sección Download y descargamos el instalador según nuestro Sistema Operativo: + + + +![VSC Download](/_src/assets/00-PrimerosPasos/vsc_download.png) + +Una vez finalizada la descarga, procedemos a ejecutar el instalador. + +## Git + +### ¿Qué es Git? + +Git es un sistema de control de versiones, distribuido y open source. Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante. + +### Instalación + +#### Para Mac y Linux + +Ver estos enlaces: + + + + + + + +#### Para Windows + +Ingreso a y descarga la última versión. + +![installGit](/_src/assets/00-PrimerosPasos/instalar_window.png) + +Una vez descargado, se abre el archivo .exe y van a visualizar la siguiente ventana + +![installGit](/_src/assets/00-PrimerosPasos/1.png) + +Clickeamos “Next” hasta que llegamos a esta parte: + +![installGit](/_src/assets/00-PrimerosPasos/2.png) + +En este momento de la instalación, si quieren, pueden elegir el editor de texto que van a usar. (Importante, ténganlo instalado antes de instalar Git) + +Seguimos clickeando “Next” y luego “Install” + +![installGit](/_src/assets/00-PrimerosPasos/3.png) + +Por último, ¡finalizar! Si seleccionan la opción "Launch Git Bash", una vez que finalizan la instalación se va a abrir la consola + +![installGit](/_src/assets/00-PrimerosPasos/4.png) + +Otra forma de abrir la consola es haciendo click derecho sobre el escritorio y elegir la opción "Git Bash Here" + +![installGit](/_src/assets/00-PrimerosPasos/consola.png) + +Una vez instalado Git van a poder visualizar la consola: ingresamos el comando `git --version` para chequear que está instalado. Si ven la consola así, ya están listos para comenzar a trabajar! + +![installGit](/_src/assets/00-PrimerosPasos/5.png) + +## GitHub + +### ¿Qué es GitHub? + +Es una red para almacenar tus repositorios, sería un repositorio de repositorios. Es uno de los tantos disponibles en internet, y el más popular. GitHub **NO** es lo mismo que Git, aunque funcionen muy bien juntos. Github es un lugar donde podés compartir tu código o encontrar otros proyectos. También actúa como portfolio para cualquier código en el que hayas trabajado. + +### Comenzando + +1. Para comenzar nos creamos una cuenta --- > 🚀 + +![GitHub-Register](/_src/assets/00-PrimerosPasos/github_register.png) + +2. Una vez registrados, ingresamos con usuario y contraseña: + +![GitHub-Login](/_src/assets/00-PrimerosPasos/github_login.png) + +3. Listo! Ahora vemos una página de inicio como la siguiente: + +![GitHub-Home](/_src/assets/00-PrimerosPasos/github_home.png) + +A la izquierda tenemos un acceso rápido a **mis repositorios**. + +En el centro vemos la actividad de los usuarios a quienes seguimos. + +En la parte superior derecha, vemos nuestra imagen de perfil. Desde ahí podemos desplegar opciones para gestionar nuestro perfil, repositorios y configuración. Si accedemos a nuestro perfil encontramos algo parecido a esto: + +![GitHub-profile](/_src/assets/00-PrimerosPasos/github_profile.png) + +Podemos poner una foto de perfil, editar el nombre, agregar la ubicación, link y organizaciones a las que pertenecemos. En el centro podemos fijar los repositorios que queremos mostrar para que estén visibles en nuestro perfil. + +Más abajo se muestra un diagrama de todas las contribuciones que vamos haciendo a los repositorios. + +Si accedemos a la pestaña de arriba que dice `repositorios` veremos una lista de todos ellos. Cuando elegimos un repositorio para ver, nos lleva a una página como esta: + +![GitHub-repo](/_src/assets/00-PrimerosPasos/github_repo.png) + +Así se ve un repositorio. Arriba a la izquierda tenemos el `nombre de usuario/nombre del repo`. + +En el centro podemos ver todos los archivos que tiene dentro el repo. El botón verde que dice `Code` es importante, si clickeamos ahí vamos a poder obtener la url del repo, para así poder **_clonarlo_** (esto lo veremos más adelante). + +Arriba a la derecha encontramos tres botones. `Watch` nos permite seguir un repositorio, mientras que con `Star` podemos marcar como favorito un repo que nos guste. Por último tenemos `Fork`, este es **muy** importante, lo vamos a necesitar cuando hagamos el **_Challenge!_** + +Ya tenemos todo para empezar... Éxitos!!! 🍀 + +## Python + +### ¿Qué es Python? + +Es un lenguaje de programación sencillo de leer y escribir debido a su alta similitud con el lenguaje humano. Además, se trata de un lenguaje multiplataforma de código abierto y, por lo tanto, gratuito, lo que permite desarrollar software sin límites + +### Instalación + +Si estás usando Windows: + +Elige una versión 3.10 +1. Para obtener el instalador dirígete a [https://www.python.org/downloads/](https://www.python.org/downloads/) +2. Descarga el instalador y ejecútalo en tu computadora. +3. Habilita la casilla de verificación en Install launcher for all users y Add Python 3.8 to PATH. A continuación presiona en Install Now. Windows te solicitará permisos para instalar Python en tu computadora. +4. Al finalizar la instalación se abrirá una ventana, en ella deberás presionar en la opción Disable path length limit. Windows te solicitará permisos para realizar este cambio. + +Si estás usando Mac: + +Mac OS X suele tener python instalado por defecto. Para verificarlo abrí la terminal, en el buscador de tu Mac, y escribí Python. Comprobar que está correctamente instalado: + +```bash +Python +Python 2.7.13 (default, Mar 25 2021, 18:52:10) +[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin +Type "help", "copyright", "credits" or "license" for more information. +>>> +``` + +Si no te figura o queres descargar la última versión dirígete a: [https://es.wikibooks.org/wiki/Python/Instalaci%C3%B3n_de_Python/Python_en_Mac_OS_X](https://es.wikibooks.org/wiki/Python/Instalaci%C3%B3n_de_Python/Python_en_Mac_OS_X) + +Si estás usando Linux: + +En una distribución estándar Linux dispone por defecto el intérprete Python instalado, para comprobar la correcta instalación solamente debería ejecutar el comando en la consola: + +```bash +python +Python 2.7.13 (default, Sep 26 2018, 18:42:22) +[GCC 6.3.0 20170516] on linux2 +Type "help", "copyright", "credits" or "license" for more information. +>>> +``` + +Si le muestra los mensajes anteriores está correctamente instalado el intérprete Python en su Linux. + +Si al ejecutar el comando anterior muestra el mensaje: + +```bash +python +bash: python: no se encontró la orden +``` + +Esto es debido a que no tiene instalado el intérprete, así que debe ejecutar el siguiente comando: +```bash +sudo apt-get install -y python-dev +``` + +De nuevo vuelva a ejecutar en su consola de comando el comando python. Ya están listos para comenzar a trabajar + + + + +Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m01_instalaciónherramientas** + diff --git "a/M02_introprogramaci\303\263n/Practica.ipynb" "b/M02_introprogramaci\303\263n/Practica.ipynb" new file mode 100644 index 000000000..b35d69666 --- /dev/null +++ "b/M02_introprogramaci\303\263n/Practica.ipynb" @@ -0,0 +1,78 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Este es un archivo de prueba, sin actividades =) .\n", + "\n", + "A partir del próximo módulo: M03_variablesydatos vas a tener actividades para realizar." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hola Mundo!\n", + "20\n", + "19\n", + "18\n", + "17\n", + "16\n", + "15\n", + "14\n", + "13\n", + "12\n", + "11\n", + "10\n", + "9\n", + "8\n", + "7\n", + "6\n", + "5\n", + "4\n", + "3\n", + "2\n", + "1\n" + ] + } + ], + "source": [ + "print('Hola Mundo!')\n", + "a = 20\n", + "while a > 0:\n", + " \n", + " print(a)\n", + " a -= 1" + ] + } + ], + "metadata": { + "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.10.11" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/M02_introprogramaci\303\263n/Practica.py" "b/M02_introprogramaci\303\263n/Practica.py" new file mode 100644 index 000000000..fd1be0fc9 --- /dev/null +++ "b/M02_introprogramaci\303\263n/Practica.py" @@ -0,0 +1,10 @@ + +# Este es un archivo de prueba, sin actividades =) . + +# A partir del próximo módulo: M03_variablesydatos vas a tener actividades para realizar. + +print('Hola Mundo!') +a = 20 +while a > 0: + print(a) + a -= 1 diff --git "a/M02_introprogramaci\303\263n/README.md" "b/M02_introprogramaci\303\263n/README.md" new file mode 100644 index 000000000..e1807e442 --- /dev/null +++ "b/M02_introprogramaci\303\263n/README.md" @@ -0,0 +1,79 @@ +![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) + +# Introducción a la Programación + +## ¿Qué es la Programación? + +Comencemos con un ejemplo, en la imagen se representa un pequeño robot abeja en una esquina del cuadrilátero, y en la otra esquina una flor. El objetivo del robot abeja es llegar hasta la flor, esquivando los arbustos que hay de por medio. Para esto, hay que decirle cómo se debe mover, pero solo puede saltar de a un casillero por vez. La forma en que se le puede "decir" es a través de instrucciones y estas son: "arriba", "abajo", "izquierda" y "derecha". Por supuesto, teniendo en cuenta que debe moverse dentro del cuadrilátero. + +Ahora bien, surgen algunas preguntas: + +* ¿Cuántas instrucciones son necesarias? + +* Al ser más de una instrucción ¿Es importante el orden en que se ejecutan? + +* ¿Hay más de una forma en que el robot abeja pueda llegar a la flor? + +* ¿Hay un camino óptimo? + +* ¿Cómo puedo medir si un camino es el óptimo con respecto a otros caminos? + +![unaImagenConBoxShadow](../_src/assets/01_imagen01.jpg) + +Cualquiera de las siguientes, podrían ser una solución: +* Derecha, Derecha, Arriba, Arriba, Derecha, Derecha, Arriba, Arriba, Arriba, Derecha, Derecha, Arriba +* Derecha, Derecha, Derecha, Derecha, Derecha, Derecha, Arriba, Arriba, Arriba, Izquierda, Izquierda, Arriba, Arriba, Derecha, Arriba, Derecha +* Arriba, Derecha, Derecha, Arriba, Arriba, Arriba, Arriba, Arriba, Derecha, Derecha, Derecha, Derecha, Arriba + +Lo importante, en principio, es que notemos que al resolver el problema planteado, lo que estamos haciendo, utilizando un pensamiento lógico, es precisamente, **programación** + +Entonces, **programar, es armar una secuencia lógica de pasos a seguir, en pos de cumplir un objetivo.** En el ejemplo visto, tuvimos un contexto que nos marcaba las posibilidades y restricciones del problema, por ejemplo moverse dentro del cuadrilátero o no chocar con los arbustos. Y también un conjunto de instrucciones disponibles, que definían el lenguaje que teníamos que usar, para que el robot comprenda las instrucciones. Lo que usamos fue un lenguaje formal, muy básico y que fue suficiente para resolver el problema. Estos lenguajes, se denominan lenguajes de programación, nos permiten plasmar esas instrucciones necesarias para darle una solución al problema que queremos resolver, generando así un programa (o software). + +Los primeros lenguajes de programación se escribían en instrucciones que podían interpretar las computadoras muy fácilmente, pero que resultaban menos amigables a las personas, tales como el lenguaje ensamblador (o Assembler) o Fortran, desarrollado en 1955. Con el tiempo, esto fue cambiando, se fueron desarrollando lenguajes de programación de más alto nivel y con diferentes aplicaciones, que por lo general eran comerciales o científicas, pero también con fines educativos, es decir, lenguajes desarrollados para aprender a programar, y consecuentemente, más sencillos. + +Éste último, es el caso de **Python**, que nace a finales de la década del 80 y fue pensado para principiantes por su facilidad de aprendizaje y uso. Su código era compacto pero legible. Con el correr de los años fue incluyendo mejoras hasta llegar también a ser de licencia libre. Hoy por hoy, es usado desde simples "scripts", hasta grandes servidores web que proveen servicio ininterrumpido las 24hs. Es utilizado para la programación de interfaces gráficas y bases de datos. Además tiene una amplia aceptación por científicos que hacen aplicaciones para las supercomputadoras más rápidas del mundo y por los niños que recién están comenzando a programar. +La generalización del Big Data en los últimos años, seguida de la explosión de la Inteligencia Artificial, Machine Learning y el surgimiento de la Ciencia de Datos como una nueva área de trabajo con especialistas propios, ha revolucionado el panorama ya que muchas de las nuevas herramientas que han surgido han sido desarrolladas en Python o nos ofrecen Python como la forma predilecta de interactuar con ellas. +Podemos hablar de tecnología para Big Data como PySpark, de herramientas para Data Science como Pandas, NumPy, Matplotlib o Jupyter. De herramientas del procesamiento del lenguaje natural como NLTK, y por último el área de Deep Learning como Tensorflow, MXNet o Scikit-Learn. + +## Sintaxis de un lenguaje de programación + +Para el ejemplo se utilizó un lenguaje con el que era posible determinar los pasos a seguir por el robot abeja hasta llegar a la flor, y nos fue suficiente para poder entender cómo resolver el problema. El hecho es que, los lenguajes de programación que utilizamos, deben ser más específicos todavía, necesitamos tener un nivel de detalle mayor en nuestras instrucciones, por ejemplo, en lugar de la instrucción "Arriba", podría ser, especificar la cantidad de celdas que hay que moverse, e incluso qué implica "moverse", que seguramente será cambiar el estado de la propia abeja. +Por otro lado también habrá un marco de referencia, es decir, el tablero donde se mueve la abeja y está la flor, en sí mismo, es algo que debemos conocer, saber donde hay ubicado un arbusto y donde no, saber cuales son los límites, y que pasa si con las instrucciones que le damos a la abeja, hacemos que rebase esos límites. +Para solventar esa complejidad, necesitamos un **set de instrucciones** un poco más complejo para poder interactuar con el computador y una forma de representar los datos de la realidad, es decir, dimensiones del tablero donde se mueve la abeja, posición de la abeja, posición de la flor, ubicaciones de los arbustos. Esto se hace mediante lo que se conoce como **estructuras** de datos, las cuales permiten representar la realidad. De hecho, todos **los datos son una representación de la realidad**. +La sintaxis de un programa, consiste en un conjunto de palabras reservadas a instrucciones, con una estructura específica, tal y como funciona un lenguaje como el que usamos los humanos para comunicarnos, como el español o el inglés. Los lenguajes de programación también tienen su sintaxis, que está compuesta por diferentes elementos, como ser variables para representar el dato de la realidad, sentencias para representar las instrucciones o estructuras de control que conforman el cuerpo del programa. + +## El Zen de Python + +Para conocer mejor el lenguaje que estaremos aprendiendo les compartimos una colección de los 19 principios que influyen en el diseño del lenguaje Python. De alguna manera, muestran la filosofía del mismo: + +1) Bello es mejor que feo. +2) Explícito es mejor que implícito. +3) Simple es mejor que complejo. +4) Complejo es mejor que complicado. +5) Plano es mejor que anidado. +6) Espaciado es mejor que denso. +7) La legibilidad es importante. +8) Los casos especiales no son lo suficientemente especiales como para romper las reglas. +9) Sin embargo la practicidad gana a la pureza. +10) Los errores nunca deben pasar silenciosamente. +11) A menos que se silencien explícitamente. +12) Frente a la ambigüedad, evitar la tentación de adivinar. +13) Debería haber una, y preferiblemente solo una, manera obvia de hacerlo. +14) A pesar de que esa manera no sea obvia a menos que seas Holandés (el creador lo era) +15) Ahora es mejor que nunca. +16) A pesar de que nunca es muchas veces mejor que ahora mismo. +17) Si la implementación es difícil de explicar, es una mala idea. +18) Si la implementación es fácil de explicar, puede que sea una buena idea. +19) Los namespaces son una gran idea, ¡tengamos más de esos! + +## Recursos adicionales + +* [Introducción al Pensamiento Computacional] (https://github.com/karlbehrensg/introduccion-pensamiento-computacional) +* [Entrenamiento Básico] (https://entrenamiento-python-basico.readthedocs.io/es/latest) +* [El Libro de Python] (https://ellibrodepython.com/) +* [Python para todos] (https://www.py4e.com) +* [Curso Python Videos] (https://youtu.be/G2FCfQj-9ig) +* [Visualizar tu código] (https://memlayout.com/) +* [Visualizar tu código] (https://pythontutor.com/visualize.html#mode=edit) + +* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m02_introprogramacion** de Slack \ No newline at end of file diff --git a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-Resuelto-checkpoint.ipynb b/M03_variablesydatos/Prep_Course_Homework_03-Resuelto.ipynb similarity index 88% rename from 02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-Resuelto-checkpoint.ipynb rename to M03_variablesydatos/Prep_Course_Homework_03-Resuelto.ipynb index 942bff045..e3f2739bb 100644 --- a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-Resuelto-checkpoint.ipynb +++ b/M03_variablesydatos/Prep_Course_Homework_03-Resuelto.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -8,6 +9,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -33,6 +35,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -60,6 +63,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -87,6 +91,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -99,10 +104,11 @@ "metadata": {}, "outputs": [], "source": [ - "mi_nombre = 'juan carlos perez'" + "mi_nombre = 'Juan Carlos Perez'" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -119,10 +125,11 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "6) Mostrar el tipo de dato de la variable crada en el punto 5" + "6) Mostrar el tipo de dato de la variable creada en el punto 5" ] }, { @@ -146,6 +153,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -162,6 +170,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -179,10 +188,11 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 9" + "9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 8" ] }, { @@ -203,6 +213,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -219,6 +230,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -245,6 +257,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -270,6 +283,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -294,6 +308,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -318,6 +333,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -343,6 +359,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -367,6 +384,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -394,6 +412,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -421,6 +440,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -447,6 +467,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -474,6 +495,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -501,6 +523,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -529,6 +552,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -555,6 +579,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -582,6 +607,22 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Explicación:** La operación 1 << 2 en Python realiza un desplazamiento a la izquierda de bits (bitwise left shift) en el número entero 1.\n", + "En este caso, el número binario 1 se desplaza dos posiciones hacia la izquierda, y se rellena con ceros a la derecha. El resultado de esta operación es 4.\n", + "Explicación paso a paso:\n", + "1. El número 1 en binario es representado como 0001.\n", + "2. Realizamos un desplazamiento de dos posiciones hacia la izquierda: 0001 << 2.\n", + "3. El resultado es 0100, que en decimal representa el número 4.*\n", + "\n", + "\n", + "Es importante tener en cuenta que el desplazamiento a la izquierda de bits (<<) multiplica el número original por 2 elevado a la potencia del número de posiciones desplazadas. En este caso, 1 se multiplica por 2 elevado a la potencia de 2, lo que resulta en 4." + ] + }, + { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -670,6 +711,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -715,7 +757,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto.py b/M03_variablesydatos/Prep_Course_Homework_03-Resuelto.py similarity index 99% rename from 02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto.py rename to M03_variablesydatos/Prep_Course_Homework_03-Resuelto.py index 1266a3b75..2c9056576 100644 --- a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02-Resuelto.py +++ b/M03_variablesydatos/Prep_Course_Homework_03-Resuelto.py @@ -69,7 +69,7 @@ var2 = True -# 9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 9 +# 9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 8 # In[5]: diff --git a/M03_variablesydatos/Prep_Course_Homework_03.ipynb b/M03_variablesydatos/Prep_Course_Homework_03.ipynb new file mode 100644 index 000000000..b4d68b08b --- /dev/null +++ b/M03_variablesydatos/Prep_Course_Homework_03.ipynb @@ -0,0 +1,426 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Variables" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) Imprimir el tipo de dato de la constante 8.5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Imprimir el tipo de dato de la variable creada en el punto 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Crear una variable que contenga tu nombre" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Crear una variable que contenga un número complejo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Mostrar el tipo de dato de la variable crada en el punto 5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7) Crear una variable que contenga el valor del número Pi redondeado a 4 decimales" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8) Crear una variable que contenga el valor 'True' y otra que contenga el valor True. ¿Se trata de lo mismo?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 8" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10) Asignar a una variable, la suma de un número entero y otro decimal" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "11) Realizar una operación de suma de números complejos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "12) Realizar una operación de suma de un número real y otro complejo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "13) Realizar una operación de multiplicación" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "14) Mostrar el resultado de elevar 2 a la octava potencia" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "15) Obtener el cociente de la división de 27 entre 4 en una variable y luego mostrarla" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "16) De la división anterior solamente mostrar la parte entera" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "17) De la división de 27 entre 4 mostrar solamente el resto" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "18) Utilizando como operandos el número 4 y los resultados obtenidos en los puntos 16 y 17. Obtener 27 como resultado" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "19) Utilizar el operador \"+\" en una operación donde intervengan solo variables alfanuméricas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "20) Evaluar si \"2\" es igual a 2. ¿Por qué ocurre eso?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "21) Utilizar las funciones de cambio de tipo de dato, para que la validación del punto 20 resulte verdadera" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "22) ¿Por qué arroja error el siguiente cambio de tipo de datos? a = float('3,8')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "23) Crear una variable con el valor 3, y utilizar el operador '-=' para modificar su contenido y que de como resultado 2." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "24) Realizar la operacion 1 << 2 ¿Por qué da ese resultado? ¿Qué es el sistema de numeración binario?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "25) Realizar la operación 2 + '2' ¿Por qué no está permitido? ¿Si los dos operandos serían del mismo tipo, siempre arrojaría el mismo resultado?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "26) Realizar una operación válida entre valores de tipo entero y string" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.11" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02.md b/M03_variablesydatos/Prep_Course_Homework_03.md similarity index 99% rename from 02 - Variables y Tipos de Datos/Prep_Course_Homework_02.md rename to M03_variablesydatos/Prep_Course_Homework_03.md index 2b3da40d3..7613cecef 100644 --- a/02 - Variables y Tipos de Datos/Prep_Course_Homework_02.md +++ b/M03_variablesydatos/Prep_Course_Homework_03.md @@ -16,7 +16,7 @@ 8) Crear una variable que contenga el valor 'True' y otra que contenga el valor True. ¿Se trata de lo mismo? -9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 9 +9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 8 10) Asignar a una variable, la suma de un número entero y otro decimal diff --git a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-Resuelto-checkpoint.py b/M03_variablesydatos/Prep_Course_Homework_03.py similarity index 77% rename from 02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-Resuelto-checkpoint.py rename to M03_variablesydatos/Prep_Course_Homework_03.py index 1266a3b75..eb7ddb9eb 100644 --- a/02 - Variables y Tipos de Datos/.ipynb_checkpoints/Prep_Course_Homework_02-Resuelto-checkpoint.py +++ b/M03_variablesydatos/Prep_Course_Homework_03.py @@ -8,8 +8,6 @@ # In[7]: -a = 12 -print(a) # 2) Imprimir el tipo de dato de la constante 8.5 @@ -17,7 +15,7 @@ # In[3]: -type(8.5) + # 3) Imprimir el tipo de dato de la variable creada en el punto 1 @@ -25,7 +23,7 @@ # In[8]: -type(a) + # 4) Crear una variable que contenga tu nombre @@ -33,7 +31,6 @@ # In[2]: -mi_nombre = 'juan carlos perez' # 5) Crear una variable que contenga un número complejo @@ -41,7 +38,7 @@ # In[3]: -n_complejo = 5 + 5j + # 6) Mostrar el tipo de dato de la variable crada en el punto 5 @@ -49,7 +46,7 @@ # In[4]: -type(n_complejo) + # 7) Crear una variable que contenga el valor del número Pi redondeado a 4 decimales @@ -65,16 +62,15 @@ # In[3]: -var1 = 'True' -var2 = True -# 9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 9 + +# 9) Imprimir el tipo de dato correspondientes a las variables creadas en el punto 8 # In[5]: -print('La variable 1 es de tipo ', type(var1), ' y la variable 2 es de tipo ', type(var2)) + # 10) Asignar a una variable, la suma de un número entero y otro decimal @@ -82,7 +78,7 @@ # In[1]: -a = 5.2 + 4 + # 11) Realizar una operación de suma de números complejos @@ -90,9 +86,7 @@ # In[2]: -a = 3 + 1j -b = 1 + 3j -print(a + b) + # 12) Realizar una operación de suma de un número real y otro complejo @@ -100,8 +94,7 @@ # In[4]: -c = a + 1.61 -print(c) + # 13) Realizar una operación de multiplicación @@ -109,7 +102,7 @@ # In[5]: -print(3 * 2) + # 14) Mostrar el resultado de elevar 2 a la octava potencia @@ -117,7 +110,6 @@ # In[6]: -print(2**8) # 15) Obtener el cociente de la división de 27 entre 4 en una variable y luego mostrarla @@ -125,8 +117,7 @@ # In[8]: -a = 27 / 4 -print(a) + # 16) De la división anterior solamente mostrar la parte entera @@ -134,7 +125,7 @@ # In[9]: -print(27 // 4) + # 17) De la división de 27 entre 4 mostrar solamente el resto @@ -142,7 +133,7 @@ # In[1]: -27 % 4 + # 18) Utilizando como operandos el número 4 y los resultados obtenidos en los puntos 16 y 17. Obtener 27 como resultado @@ -150,7 +141,7 @@ # In[2]: -6 * 4 + 3 + # 19) Utilizar el operador "+" en una operación donde intervengan solo variables alfanuméricas @@ -158,9 +149,7 @@ # In[3]: -var1 = 'Buenos ' -var2 = 'Aires' -print(var1 + var2) + # 20) Evaluar si "2" es igual a 2. ¿Por qué ocurre eso? @@ -168,7 +157,7 @@ # In[4]: -2 == '2' + # 21) Utilizar las funciones de cambio de tipo de dato, para que la validación del punto 20 resulte verdadera @@ -176,7 +165,7 @@ # In[11]: -2 == int('2') + # 22) ¿Por qué arroja error el siguiente cambio de tipo de datos? a = float('3,8') @@ -184,17 +173,15 @@ # In[12]: -a = float('3,8') -# 23) Crear una variable con el valor 3, y utilizar el operador '-=' para modificar su contenido + +# 23) Crear una variable con el valor 3, y utilizar el operador '-=' para modificar su contenido y que de como resultado 2. # In[15]: -a = -3 -a -= 1 -print(a) + # 24) Realizar la operacion 1 << 2 ¿Por qué da ese resultado? ¿Qué es el sistema de numeración binario? @@ -202,7 +189,7 @@ # In[29]: -1 << 2 + # 25) Realizar la operación 2 + '2' ¿Por qué no está permitido? ¿Si los dos operandos serían del mismo tipo, siempre arrojaría el mismo resultado? @@ -210,25 +197,8 @@ # In[23]: -2 + '2' - - -# In[25]: - - -float(2) + float('2') - - -# In[26]: - - -int(2) + int('2') - - -# In[27]: -str(2) + str('2') # 26) Realizar una operación válida entre valores de tipo entero y string @@ -236,7 +206,4 @@ # In[30]: -var1 = 'este texto se repite ' -var2 = 3 -print(var1 * var2 + str(var2) + ' veces') diff --git a/02 - Variables y Tipos de Datos/README.md b/M03_variablesydatos/README.md similarity index 90% rename from 02 - Variables y Tipos de Datos/README.md rename to M03_variablesydatos/README.md index 0c0450770..38dec3c5a 100644 --- a/02 - Variables y Tipos de Datos/README.md +++ b/M03_variablesydatos/README.md @@ -1,10 +1,11 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -## Grabación de la Clase 2 -
- -
+## Principales Objetivos de Aprendizaje para esta Clase + +- Conocer el concepto de Variables y Constantes +- Conocer el concepto de Tipos de Datos + ## Variables @@ -220,18 +221,9 @@ str(): construye una cadena a partir de una amplia variedad de tipos de datos, i 2 ``` -## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/4aec1885136fdcff98899d2be13c8908b39f8b21/02%20-%20Variables%20y%20Tipos%20de%20Datos/Prep_Course_Homework_02.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
+## Recursos adicionales + +* [Cheat Lists] (https://intellipaat.com/blog/tutorial/python-tutorial/data-structures-with-python-cheat-sheet/?US) + + +* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m03_variablesydatos** de Slack \ No newline at end of file diff --git a/03 - Flujos de Control/Prep_Course_Homework_03-Resuelto.ipynb b/M04_flujosdecontrol/Prep_Course_Homework_04-Resuelto.ipynb similarity index 56% rename from 03 - Flujos de Control/Prep_Course_Homework_03-Resuelto.ipynb rename to M04_flujosdecontrol/Prep_Course_Homework_04-Resuelto.ipynb index 39f94f511..c3d46af97 100644 --- a/03 - Flujos de Control/Prep_Course_Homework_03-Resuelto.ipynb +++ b/M04_flujosdecontrol/Prep_Course_Homework_04-Resuelto.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -8,6 +9,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -16,14 +18,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "La varaible es mayor a cero\n" + "La variable es mayor a cero\n" ] } ], @@ -32,12 +34,13 @@ "if (a < 0):\n", " print('La variable es menor a cero')\n", "elif (a > 0): \n", - " print('La varaible es mayor a cero')\n", + " print('La variable es mayor a cero')\n", "else:\n", " print('La variable es igual a cero')" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -67,6 +70,19 @@ ] }, { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# El formato utilizado a continuación en el print es conocido como f-string o formatted string literals en Python. Las f-strings permiten incrustar expresiones dentro de una cadena de texto mediante llaves {} y el prefijo \"f\" antes de la cadena. Dentro de las llaves, puedes colocar variables, expresiones o incluso invocar funciones para su evaluación e inclusión en la cadena resultante.\n", + "a = 3.2\n", + "b = 2\n", + "print(f'Las variables {a} y {b} son del mismo tipo de dato')" + ] + }, + { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -106,6 +122,8 @@ } ], "source": [ + "#resuelto con bucle for\n", + "\n", "for i in range(1, 21):\n", " if i % 2 == 0:\n", " print('El número ', str(i), ' es par')\n", @@ -114,6 +132,24 @@ ] }, { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# resuelto con while\n", + "\n", + "i = 1\n", + "while (i <= 20):\n", + " if (i % 2 == 0):\n", + " print(f'El numero {i} es par')\n", + " else:\n", + " print(f'El numero {i} es impar')\n", + " i = i + 1" + ] + }, + { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -144,6 +180,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -171,6 +208,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -179,7 +217,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -207,6 +245,30 @@ ] }, { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "120\n" + ] + } + ], + "source": [ + "# resolución con bucle for\n", + "\n", + "numero = 5\n", + "factorial = 1\n", + "for i in range(2, (numero + 1)):\n", + " factorial = i * factorial\n", + "print(factorial)" + ] + }, + { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -215,46 +277,41 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Ciclo while nro 2\n", + "Ciclo while nro 1\n", "Ciclo for nro 1\n", - "Ciclo while nro 3\n", + "Ciclo while nro 2\n", "Ciclo for nro 1\n", - "Ciclo while nro 3\n", "Ciclo for nro 2\n", - "Ciclo while nro 4\n", + "Ciclo while nro 3\n", "Ciclo for nro 1\n", - "Ciclo while nro 4\n", "Ciclo for nro 2\n", - "Ciclo while nro 4\n", "Ciclo for nro 3\n", - "Ciclo while nro 5\n", + "Ciclo while nro 4\n", "Ciclo for nro 1\n", - "Ciclo while nro 5\n", "Ciclo for nro 2\n", - "Ciclo while nro 5\n", "Ciclo for nro 3\n", - "Ciclo while nro 5\n", "Ciclo for nro 4\n" ] } ], "source": [ - "n = 0\n", - "while(n < 5):\n", - " n += 1\n", - " for i in range(1,n):\n", - " print('Ciclo while nro ' + str(n))\n", - " print('Ciclo for nro ' + str(i))" + "n = 1\n", + "while n < 5:\n", + " print('Ciclo while nro ' + str(n)) # Imprime el número del ciclo while\n", + " for i in range(1, n+1): # como la función range(a, b) genera una secuencia de números desde a hasta b-1. Para que el bucle for incluya el número n, usamos range(1, n+1) en lugar de range(1, n).\n", + " print('Ciclo for nro ' + str(i)) # Imprime el número del ciclo for\n", + " n += 1" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -263,7 +320,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -276,6 +333,59 @@ ] }, { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ciclo for nro 1\n", + "Ciclo while nro 5\n", + "Ciclo while nro 4\n", + "Ciclo while nro 3\n", + "Ciclo while nro 2\n", + "Ciclo while nro 1\n", + "Ciclo for nro 2\n", + "Ciclo while nro 5\n", + "Ciclo while nro 4\n", + "Ciclo while nro 3\n", + "Ciclo while nro 2\n", + "Ciclo while nro 1\n", + "Ciclo for nro 3\n", + "Ciclo while nro 5\n", + "Ciclo while nro 4\n", + "Ciclo while nro 3\n", + "Ciclo while nro 2\n", + "Ciclo while nro 1\n", + "Ciclo for nro 4\n", + "Ciclo while nro 5\n", + "Ciclo while nro 4\n", + "Ciclo while nro 3\n", + "Ciclo while nro 2\n", + "Ciclo while nro 1\n" + ] + } + ], + "source": [ + "n = 5\n", + "for i in range(1, n):\n", + " print('Ciclo for nro ' + str(i)) # Imprime el número del ciclo for\n", + " \n", + " n_temp = n # Almacena el valor original de n en una variable temporal\n", + " \n", + " while n_temp > 0: # Ciclo while que se ejecuta mientras n_temp sea mayor que 0\n", + " print('Ciclo while nro ' + str(n_temp)) # Imprime el número del ciclo while\n", + " n_temp -= 1\n", + " \n", + " if n_temp <= 0:\n", + " break # Sale del ciclo while cuando n_temp sea menor o igual a 0\n", + " \n" + ] + }, + { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -284,7 +394,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -325,12 +435,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "10) ¿Se puede mejorar el proceso del punto 9? Utilizar las sentencias break y/ó continue para tal fin" + "Código anterior explicado paso a paso:" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -353,30 +463,47 @@ } ], "source": [ + "# Establecemos el valor máximo del rango\n", + "tope_rango = 30\n", + "\n", + "# Inicializamos la variable n en 0\n", "n = 0\n", + "\n", + "# Inicializamos la variable primo como verdadera\n", "primo = True\n", - "while (n < tope_rango):\n", + "\n", + "# Comenzamos un bucle while que se ejecutará mientras n sea menor que el tope_rango\n", + "while n < tope_rango:\n", + " # Comenzamos un bucle for que itera desde 2 hasta n-1\n", " for div in range(2, n):\n", - " if (n % div == 0):\n", + " # Comprobamos si n es divisible entre div\n", + " if n % div == 0:\n", + " # Si es divisible, marcamos primo como falso\n", " primo = False\n", - " break\n", - " if (primo):\n", + " \n", + " # Verificamos si la variable primo es verdadera\n", + " if primo:\n", + " # Si es verdadera, significa que n es un número primo, por lo que lo imprimimos\n", " print(n)\n", " else:\n", + " # Si primo es falso, significa que n no es un número primo, por lo que lo restablecemos a verdadero\n", " primo = True\n", - " n += 1" + " \n", + " # Incrementamos n en 1 para pasar al siguiente número\n", + " n += 1\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "11) En los puntos 9 y 10, se diseño un código que encuentra números primos y además se lo optimizó. ¿Es posible saber en qué medida se optimizó?" + "10) ¿Se puede mejorar el proceso del punto 9? Utilizar las sentencias break y/ó continue para tal fin" ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -394,83 +521,77 @@ "17\n", "19\n", "23\n", - "29\n", - "Cantidad de ciclos: 378\n" + "29\n" ] } ], "source": [ - "ciclos_sin_break = 0\n", "n = 0\n", "primo = True\n", "while (n < tope_rango):\n", " for div in range(2, n):\n", - " ciclos_sin_break += 1\n", " if (n % div == 0):\n", " primo = False\n", + " break\n", " if (primo):\n", " print(n)\n", " else:\n", " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_sin_break))" + " n += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Código explicado paso a paso:" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "1\n", - "2\n", - "3\n", - "5\n", - "7\n", - "11\n", - "13\n", - "17\n", - "19\n", - "23\n", - "29\n", - "Cantidad de ciclos: 134\n", - "Se optimizó a un 0.3544973544973545% de ciclos aplicando break\n" - ] - } - ], + "outputs": [], "source": [ - "ciclos_con_break = 0\n", + "# Inicializamos la variable n en 0\n", "n = 0\n", + "\n", + "# Inicializamos la variable primo como verdadera\n", "primo = True\n", - "while (n < tope_rango):\n", + "\n", + "# Comenzamos un bucle while que se ejecutará mientras n sea menor que el tope_rango\n", + "while n < tope_rango:\n", + " # Comenzamos un bucle for que itera desde 2 hasta n-1\n", " for div in range(2, n):\n", - " ciclos_con_break += 1\n", - " if (n % div == 0):\n", + " # Comprobamos si n es divisible entre div\n", + " if n % div == 0:\n", + " # Si es divisible, marcamos primo como falso y salimos del bucle for por la sentencia break\n", " primo = False\n", " break\n", - " if (primo):\n", + " \n", + " # Verificamos si la variable primo es verdadera\n", + " if primo:\n", + " # Si es verdadera, significa que n es un número primo, por lo que lo imprimimos\n", " print(n)\n", " else:\n", + " # Si primo es falso, significa que n no es un número primo, por lo que lo restablecemos a verdadero\n", " primo = True\n", - " n += 1\n", - "print('Cantidad de ciclos: ' + str(ciclos_con_break))\n", - "print('Se optimizó a un ' + str(ciclos_con_break/ciclos_sin_break) + '% de ciclos aplicando break')" + " \n", + " # Incrementamos n en 1 para pasar al siguiente número\n", + " n += 1\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "12) Si la cantidad de números que se evalúa es mayor a treinta, esa optimización crece?" + "11) En los puntos 9 y 10, se diseño un código que encuentra números primos y además se lo optimizó. ¿Es posible saber en qué medida se optimizó?" ] }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -489,27 +610,11 @@ "19\n", "23\n", "29\n", - "31\n", - "37\n", - "41\n", - "43\n", - "47\n", - "53\n", - "59\n", - "61\n", - "67\n", - "71\n", - "73\n", - "79\n", - "83\n", - "89\n", - "97\n", - "Cantidad de ciclos: 4753\n" + "Cantidad de ciclos: 378\n" ] } ], "source": [ - "tope_rango=100\n", "ciclos_sin_break = 0\n", "n = 0\n", "primo = True\n", @@ -528,7 +633,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -547,23 +652,8 @@ "19\n", "23\n", "29\n", - "31\n", - "37\n", - "41\n", - "43\n", - "47\n", - "53\n", - "59\n", - "61\n", - "67\n", - "71\n", - "73\n", - "79\n", - "83\n", - "89\n", - "97\n", - "Cantidad de ciclos: 1132\n", - "Se optimizó a un 0.2381653692404797% de ciclos aplicando break\n" + "Cantidad de ciclos: 134\n", + "Se optimizó a un 0.3544973544973545% de ciclos aplicando break\n" ] } ], @@ -587,15 +677,16 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "13) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300" + "12) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300" ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -635,7 +726,64 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "14) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente" + "Código explicado:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "108 es divisible por 12\n", + "120 es divisible por 12\n", + "132 es divisible por 12\n", + "144 es divisible por 12\n", + "156 es divisible por 12\n", + "168 es divisible por 12\n", + "180 es divisible por 12\n", + "192 es divisible por 12\n", + "204 es divisible por 12\n", + "216 es divisible por 12\n", + "228 es divisible por 12\n", + "240 es divisible por 12\n", + "252 es divisible por 12\n", + "264 es divisible por 12\n", + "276 es divisible por 12\n", + "288 es divisible por 12\n", + "300 es divisible por 12\n" + ] + } + ], + "source": [ + "# Inicializamos la variable n en 99\n", + "n = 99\n", + "\n", + "# Comenzamos un bucle while que se ejecutará mientras n sea menor o igual a 300\n", + "while n <= 300:\n", + " # Incrementamos n en 1 para pasar al siguiente número\n", + " n += 1\n", + " \n", + " # Comprobamos si n no es divisible por 12 utilizando el operador de módulo (%)\n", + " if n % 12 != 0:\n", + " # Si n no es divisible por 12, se ejecuta la instrucción 'continue' para volver al inicio del bucle while\n", + " # y saltar a la siguiente iteración sin ejecutar el código que sigue\n", + " continue\n", + " \n", + " # Si se llega a esta línea de código, significa que n es divisible por 12\n", + " # por lo que se imprime el mensaje indicando que n es divisible por 12\n", + " print(n, 'es divisible por 12')\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "13) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente" ] }, { @@ -689,7 +837,84 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "15) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6" + "Código explicado." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "¿Desea encontrar el siguiente número primo?\n", + "2\n", + "¿Desea encontrar el siguiente número primo?\n", + "3\n", + "¿Desea encontrar el siguiente número primo?\n", + "5\n", + "¿Desea encontrar el siguiente número primo?\n", + "7\n", + "¿Desea encontrar el siguiente número primo?\n", + "11\n", + "¿Desea encontrar el siguiente número primo?\n", + "13\n", + "¿Desea encontrar el siguiente número primo?\n", + "17\n", + "¿Desea encontrar el siguiente número primo?\n", + "19\n", + "¿Desea encontrar el siguiente número primo?\n", + "Se finaliza el proceso\n" + ] + } + ], + "source": [ + "# Inicializamos la variable n en 1\n", + "n = 1\n", + "\n", + "# Inicializamos la variable sigue en 1, esto indica si el proceso de búsqueda continúa\n", + "sigue = 1\n", + "\n", + "# Inicializamos la variable primo como verdadera\n", + "primo = True\n", + "\n", + "# Comenzamos un bucle while que se ejecutará mientras sigue sea igual a 1\n", + "while sigue == 1:\n", + " # Comenzamos un bucle for que itera desde 2 hasta n-1\n", + " for div in range(2, n):\n", + " # Comprobamos si n es divisible entre div\n", + " if n % div == 0:\n", + " # Si es divisible, marcamos primo como falso y salimos del bucle for\n", + " primo = False\n", + " break\n", + " \n", + " # Verificamos si la variable primo es verdadera\n", + " if primo:\n", + " # Si es verdadera, significa que n es un número primo, por lo que lo imprimimos\n", + " print(n)\n", + " print('¿Desea encontrar el siguiente número primo?')\n", + " \n", + " # Leemos la entrada del usuario para determinar si se continúa o se finaliza el proceso\n", + " if input() != '1':\n", + " print('Se finaliza el proceso')\n", + " break\n", + " else:\n", + " # Si primo es falso, significa que n no es un número primo, por lo que lo restablecemos a verdadero\n", + " primo = True\n", + " \n", + " # Incrementamos n en 1 para pasar al siguiente número\n", + " n += 1\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "14) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6" ] }, { @@ -713,6 +938,43 @@ " break\n", " n += 1" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Código explicado:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "El número es: 102\n" + ] + } + ], + "source": [ + "# Inicializamos la variable n en 100\n", + "n = 100\n", + "\n", + "# Comenzamos un bucle while que se ejecutará mientras n sea menor o igual a 300\n", + "while n <= 300:\n", + " # Comprobamos si n es divisible por 6 sin dejar residuo\n", + " if n % 6 == 0:\n", + " # Si es divisible, imprimimos el mensaje y el valor de n\n", + " print('El número es:', n)\n", + " # Salimos del bucle while utilizando la instrucción 'break'\n", + " break\n", + " \n", + " # Incrementamos n en 1 para pasar al siguiente número\n", + " n += 1\n" + ] } ], "metadata": { @@ -734,7 +996,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/03 - Flujos de Control/Prep_Course_Homework_03-Resuelto.py b/M04_flujosdecontrol/Prep_Course_Homework_04-Resuelto.py similarity index 78% rename from 03 - Flujos de Control/Prep_Course_Homework_03-Resuelto.py rename to M04_flujosdecontrol/Prep_Course_Homework_04-Resuelto.py index afe810608..d71e51988 100644 --- a/03 - Flujos de Control/Prep_Course_Homework_03-Resuelto.py +++ b/M04_flujosdecontrol/Prep_Course_Homework_04-Resuelto.py @@ -62,7 +62,7 @@ print(i) -# 6) Utilizar un ciclo while para realizar el factoreo de un número guardado en una variable, sólo si la variable contiene un número entero mayor a 0 +# 6) Utilizar un ciclo while para realizar el factorial de un número guardado en una variable, sólo si la variable contiene un número entero mayor a 0 # In[33]: @@ -188,50 +188,7 @@ print('Se optimizó a un ' + str(ciclos_con_break/ciclos_sin_break) + '% de ciclos aplicando break') -# 12) Si la cantidad de números que se evalúa es mayor a treinta, esa optimización crece? - -# In[58]: - - -tope_rango=100 -ciclos_sin_break = 0 -n = 0 -primo = True -while (n < tope_rango): - for div in range(2, n): - ciclos_sin_break += 1 - if (n % div == 0): - primo = False - if (primo): - print(n) - else: - primo = True - n += 1 -print('Cantidad de ciclos: ' + str(ciclos_sin_break)) - - -# In[59]: - - -ciclos_con_break = 0 -n = 0 -primo = True -while (n < tope_rango): - for div in range(2, n): - ciclos_con_break += 1 - if (n % div == 0): - primo = False - break - if (primo): - print(n) - else: - primo = True - n += 1 -print('Cantidad de ciclos: ' + str(ciclos_con_break)) -print('Se optimizó a un ' + str(ciclos_con_break/ciclos_sin_break) + '% de ciclos aplicando break') - - -# 13) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300 +# 12) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300 # In[62]: @@ -244,7 +201,7 @@ print(n, ' es divisible por 12') -# 14) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente +# 13) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente # In[73]: @@ -268,7 +225,7 @@ n += 1 -# 15) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6 +# 14) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6 # In[75]: diff --git a/M04_flujosdecontrol/Prep_Course_Homework_04.ipynb b/M04_flujosdecontrol/Prep_Course_Homework_04.ipynb new file mode 100644 index 000000000..8b5ecb46c --- /dev/null +++ b/M04_flujosdecontrol/Prep_Course_Homework_04.ipynb @@ -0,0 +1,246 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Flujos de Control" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla si es mayor o menor a cero" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) Crear dos variables y un condicional que informe si son del mismo tipo de dato" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Para los valores enteros del 1 al 20, imprimir por pantalla si es par o impar" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) En un ciclo for mostrar para los valores entre 0 y 5 el resultado de elevarlo a la potencia igual a 3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Crear una variable que contenga un número entero y realizar un ciclo for la misma cantidad de ciclos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Utilizar un ciclo while para realizar el factorial de un número guardado en una variable, sólo si la variable contiene un número entero mayor a 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7) Crear un ciclo for dentro de un ciclo while" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8) Crear un ciclo while dentro de un ciclo for" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9) Imprimir los números primos existentes entre 0 y 30" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10) ¿Se puede mejorar el proceso del punto 9? Utilizar las sentencias break y/ó continue para tal fin" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "11) En los puntos 9 y 10, se diseño un código que encuentra números primos y además se lo optimizó. ¿Es posible saber en qué medida se optimizó?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "12) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "13) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "14) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/03 - Flujos de Control/Prep_Course_Homework_03.md b/M04_flujosdecontrol/Prep_Course_Homework_04.md similarity index 82% rename from 03 - Flujos de Control/Prep_Course_Homework_03.md rename to M04_flujosdecontrol/Prep_Course_Homework_04.md index 76b90eed3..f64e3069c 100644 --- a/03 - Flujos de Control/Prep_Course_Homework_03.md +++ b/M04_flujosdecontrol/Prep_Course_Homework_04.md @@ -22,10 +22,8 @@ 11) En los puntos 9 y 10, se diseño un código que encuentra números primos y además se lo optimizó. ¿Es posible saber en qué medida se optimizó? -12) Si la cantidad de números que se evalúa es mayor a treinta, esa optimización crece? +12) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300 -13) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300 +13) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente -14) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente - -15) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6 +14) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6 diff --git a/M04_flujosdecontrol/Prep_Course_Homework_04.py b/M04_flujosdecontrol/Prep_Course_Homework_04.py new file mode 100644 index 000000000..6a26d26df --- /dev/null +++ b/M04_flujosdecontrol/Prep_Course_Homework_04.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python +# coding: utf-8 + +# ## Flujos de Control + +# 1) Crear una variable que contenga un elemento del conjunto de números enteros y luego imprimir por pantalla si es mayor o menor a cero + +# In[4]: + + + + + +# 2) Crear dos variables y un condicional que informe si son del mismo tipo de dato + +# In[5]: + + + + + +# 3) Para los valores enteros del 1 al 20, imprimir por pantalla si es par o impar + +# In[7]: + + + + + +# 4) En un ciclo for mostrar para los valores entre 0 y 5 el resultado de elevarlo a la potencia igual a 3 + +# In[9]: + + + + + +# 5) Crear una variable que contenga un número entero y realizar un ciclo for la misma cantidad de ciclos + +# In[10]: + + + + + +# 6) Utilizar un ciclo while para realizar el factoreo de un número guardado en una variable, sólo si la variable contiene un número entero mayor a 0 + +# In[33]: + + + + + +# 7) Crear un ciclo for dentro de un ciclo while + +# In[38]: + + + + + +# 8) Crear un ciclo while dentro de un ciclo for + +# In[3]: + + + + + +# 9) Imprimir los números primos existentes entre 0 y 30 + +# In[54]: + + + + +# 10) ¿Se puede mejorar el proceso del punto 9? Utilizar las sentencias break y/ó continue para tal fin + +# In[55]: + + + + + +# 11) En los puntos 9 y 10, se diseño un código que encuentra números primos y además se lo optimizó. ¿Es posible saber en qué medida se optimizó? + +# In[56]: + + + + +# In[57]: + + + + +# 12) Aplicando continue, armar un ciclo while que solo imprima los valores divisibles por 12, dentro del rango de números de 100 a 300 + +# In[62]: + + + + + +# 13) Utilizar la función **input()** que permite hacer ingresos por teclado, para encontrar números primos y dar la opción al usario de buscar el siguiente + +# In[73]: + + + + +# 14) Crear un ciclo while que encuentre dentro del rango de 100 a 300 el primer número divisible por 3 y además múltiplo de 6 + +# In[75]: + + + diff --git a/03 - Flujos de Control/README.md b/M04_flujosdecontrol/README.md similarity index 85% rename from 03 - Flujos de Control/README.md rename to M04_flujosdecontrol/README.md index 2fb2a6c0b..73bbce536 100644 --- a/03 - Flujos de Control/README.md +++ b/M04_flujosdecontrol/README.md @@ -1,10 +1,10 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -## Grabación de la Clase 3 +## Principales Objetivos de Aprendizaje para esta Clase -
- -
+- Conocer el concepto de los Flujos de Control +- Conocer cómo se usan los Condicionales en Programación +- Conocer el concepto de Ciclos Iterativos ## Flujos de Control @@ -144,18 +144,4 @@ o n ``` -## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/4aec1885136fdcff98899d2be13c8908b39f8b21/03%20-%20Flujos%20de%20Control/Prep_Course_Homework_03.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
+* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m04_flujosdecontrol** de Slack diff --git a/04 - Estructuras de datos/.ipynb_checkpoints/Prep_Course_Homework_04-Resuelto-checkpoint.ipynb b/M05_estructuradedatos/Prep_Course_Homework_05-Resuelto.ipynb similarity index 91% rename from 04 - Estructuras de datos/.ipynb_checkpoints/Prep_Course_Homework_04-Resuelto-checkpoint.ipynb rename to M05_estructuradedatos/Prep_Course_Homework_05-Resuelto.ipynb index d4b97fed8..754d5434d 100644 --- a/04 - Estructuras de datos/.ipynb_checkpoints/Prep_Course_Homework_04-Resuelto-checkpoint.ipynb +++ b/M05_estructuradedatos/Prep_Course_Homework_05-Resuelto.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -8,6 +9,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -16,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -33,6 +35,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -41,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -57,6 +60,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -65,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -81,6 +85,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -89,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -105,6 +110,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -113,7 +119,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -129,6 +135,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -137,7 +144,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -154,6 +161,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -162,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -171,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -180,7 +188,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -196,6 +204,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -204,7 +213,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -213,7 +222,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -229,6 +238,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -237,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -254,6 +264,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -262,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -278,6 +289,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -286,7 +298,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -296,7 +308,7 @@ "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_2688/2999708316.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlis\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'París'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "Cell \u001b[1;32mIn[14], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[39mprint\u001b[39m(lis\u001b[39m.\u001b[39;49mindex(\u001b[39m'\u001b[39;49m\u001b[39mParís\u001b[39;49m\u001b[39m'\u001b[39;49m))\n", "\u001b[1;31mValueError\u001b[0m: 'París' is not in list" ] } @@ -306,6 +318,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -314,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -323,7 +336,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -339,6 +352,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -347,7 +361,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -367,6 +381,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -375,7 +390,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -392,6 +407,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -400,7 +416,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -416,6 +432,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -424,7 +441,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -443,6 +460,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -451,7 +469,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -467,6 +485,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -475,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -493,6 +512,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -501,7 +521,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -522,6 +542,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -530,7 +551,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -548,6 +569,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -556,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -573,6 +595,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -581,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -602,6 +625,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -610,7 +634,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -621,7 +645,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -637,6 +661,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -645,7 +670,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -661,6 +686,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -669,7 +695,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -704,7 +730,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/04 - Estructuras de datos/.ipynb_checkpoints/Prep_Course_Homework_04-Resuelto-checkpoint.py b/M05_estructuradedatos/Prep_Course_Homework_05-Resuelto.py similarity index 100% rename from 04 - Estructuras de datos/.ipynb_checkpoints/Prep_Course_Homework_04-Resuelto-checkpoint.py rename to M05_estructuradedatos/Prep_Course_Homework_05-Resuelto.py diff --git a/M05_estructuradedatos/Prep_Course_Homework_05.ipynb b/M05_estructuradedatos/Prep_Course_Homework_05.ipynb new file mode 100644 index 000000000..c71642967 --- /dev/null +++ b/M05_estructuradedatos/Prep_Course_Homework_05.ipynb @@ -0,0 +1,411 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Estructuras de Datos" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Crear una lista que contenga nombres de ciudades del mundo que contenga más de 5 elementos e imprimir por pantalla" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) Imprimir por pantalla el segundo elemento de la lista" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Imprimir por pantalla del segundo al cuarto elemento" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Visualizar el tipo de dato de la lista" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Visualizar todos los elementos de la lista a partir del tercero de manera genérica, es decir, sin explicitar la posición del último elemento" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Visualizar los primeros 4 elementos de la lista" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7) Agregar una ciudad más a la lista que ya exista y otra que no ¿Arroja algún tipo de error?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8) Agregar otra ciudad, pero en la cuarta posición" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9) Concatenar otra lista a la ya creada" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10) Encontrar el índice de la ciudad que en el punto 7 agregamos duplicada. ¿Se nota alguna particularidad?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "11) ¿Qué pasa si se busca un elemento que no existe?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "12) Eliminar un elemento de la lista" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "13) ¿Qué pasa si el elemento a eliminar no existe?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "14) Extraer el úlimo elemento de la lista, guardarlo en una variable e imprimirlo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "15) Mostrar la lista multiplicada por 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "16) Crear una tupla que contenga los números enteros del 1 al 20" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "17) Imprimir desde el índice 10 al 15 de la tupla" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "18) Evaluar si los números 20 y 30 están dentro de la tupla" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "19) Con la lista creada en el punto 1, validar la existencia del elemento 'París' y si no existe, agregarlo. Utilizar una variable e informar lo sucedido." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "20) Mostrar la cantidad de veces que se encuentra un elemento específico dentro de la tupla y de la lista" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "21) Convertir la tupla en una lista" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "22) Desempaquetar solo los primeros 3 elementos de la tupla en 3 variables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "23) Crear un diccionario utilizando la lista crada en el punto 1, asignandole la clave \"ciudad\". Agregar tambien otras claves, como puede ser \"Pais\" y \"Continente\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "24) Imprimir las claves del diccionario" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "25) Imprimir las ciudades a través de su clave" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/04 - Estructuras de datos/Prep_Course_Homework_04.md b/M05_estructuradedatos/Prep_Course_Homework_05.md similarity index 100% rename from 04 - Estructuras de datos/Prep_Course_Homework_04.md rename to M05_estructuradedatos/Prep_Course_Homework_05.md diff --git a/04 - Estructuras de datos/Prep_Course_Homework_04-Resuelto.py b/M05_estructuradedatos/Prep_Course_Homework_05.py similarity index 62% rename from 04 - Estructuras de datos/Prep_Course_Homework_04-Resuelto.py rename to M05_estructuradedatos/Prep_Course_Homework_05.py index f8960094b..1d39ac89e 100644 --- a/04 - Estructuras de datos/Prep_Course_Homework_04-Resuelto.py +++ b/M05_estructuradedatos/Prep_Course_Homework_05.py @@ -8,8 +8,6 @@ # In[3]: -lis = ['Buenos Aires','Brasilia','Asunción','Montevideo','Santiago','Lima','Caracas','Bogotá'] -print(lis) # 2) Imprimir por pantalla el segundo elemento de la lista @@ -17,7 +15,6 @@ # In[4]: -print(lis[1]) # 3) Imprimir por pantalla del segundo al cuarto elemento @@ -25,7 +22,7 @@ # In[8]: -print(lis[1:4]) + # 4) Visualizar el tipo de dato de la lista @@ -33,7 +30,7 @@ # In[12]: -print(type(lis)) + # 5) Visualizar todos los elementos de la lista a partir del tercero de manera genérica, es decir, sin explicitar la posición del último elemento @@ -41,7 +38,7 @@ # In[14]: -print(lis[2:]) + # 6) Visualizar los primeros 4 elementos de la lista @@ -49,7 +46,7 @@ # In[15]: -print(lis[:4]) + @@ -58,33 +55,24 @@ # In[16]: -lis.append('Ciudad de Méjico') - - -# In[17]: -lis.append('Montevideo') -# In[18]: -print(lis) - # 8) Agregar otra ciudad, pero en la cuarta posición # In[20]: -lis.insert(3, 'Quito') + # In[21]: -print(lis) # 9) Concatenar otra lista a la ya creada @@ -92,8 +80,6 @@ # In[22]: -lis.extend(['Madrid','Roma','Bruselas']) -print(lis) # 10) Encontrar el índice de la ciudad que en el punto 7 agregamos duplicada. ¿Se nota alguna particularidad? @@ -101,7 +87,7 @@ # In[23]: -print(lis.index('Montevideo')) + # 11) ¿Qué pasa si se busca un elemento que no existe? @@ -109,7 +95,7 @@ # In[24]: -print(lis.index('París')) + # 12) Eliminar un elemento de la lista @@ -117,21 +103,15 @@ # In[25]: -lis.remove('Buenos Aires') - - -# In[26]: -print(lis) - # 13) ¿Qué pasa si el elemento a eliminar no existe? # In[27]: -lis.remove('Buenos Aires') + # 14) Extraer el úlimo elemento de la lista, guardarlo en una variable e imprimirlo @@ -139,8 +119,7 @@ # In[28]: -ultimo = lis.pop() -print(ultimo) + # 15) Mostrar la lista multiplicada por 4 @@ -148,7 +127,6 @@ # In[29]: -print(lis * 4) # 16) Crear una tupla que contenga los números enteros del 1 al 20 @@ -156,9 +134,6 @@ # In[32]: -tup = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) -print(type(tup)) -print(tup) # 17) Imprimir desde el índice 10 al 15 de la tupla @@ -166,7 +141,6 @@ # In[35]: -print(tup[10:16]) # 18) Evaluar si los números 20 y 30 están dentro de la tupla @@ -174,8 +148,7 @@ # In[41]: -print(20 in tup) -print(30 in tup) + # 19) Con la lista creada en el punto 1, validar la existencia del elemento 'París' y si no existe, agregarlo. Utilizar una variable e informar lo sucedido. @@ -183,12 +156,7 @@ # In[48]: -elemento = 'París' -if (not(elemento in lis)): - lis.append(elemento) - print('Se insertó el elemento', elemento) -else: - print('El elemento', elemento, 'ya existía') + # 20) Mostrar la cantidad de veces que se encuentra un elemento específico dentro de la tupla y de la lista @@ -196,8 +164,7 @@ # In[51]: -print(tup.count(10)) -print(lis.count('Montevideo')) + # 21) Convertir la tupla en una lista @@ -205,8 +172,7 @@ # In[52]: -lis2=list(tup) -print(lis2) + # 22) Desempaquetar solo los primeros 3 elementos de la tupla en 3 variables @@ -214,10 +180,7 @@ # In[55]: -v1, v2, v3, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ = tup -print(v1) -print(v2) -print(v3) + # 23) Crear un diccionario utilizando la lista crada en el punto 1, asignandole la clave "ciudad". Agregar tambien otras claves, como puede ser "Pais" y "Continente". @@ -225,23 +188,15 @@ # In[57]: -dicc = { 'Ciudad': lis, -'País': ['Brasil','Paraguay','Ecuador','Uruguay','Chile','Perú','Venezuela','Colombia','Méjico','Uruguay','España','Italia','Francia'], -'Continente' : ['América','América','América','América','América','América','América','América','América','América','Europa','Europa','Europa']} - -# In[58]: -print(dicc) - # 24) Imprimir las claves del diccionario # In[59]: -print(dicc.keys()) # 25) Imprimir las ciudades a través de su clave @@ -249,5 +204,5 @@ # In[61]: -print(dicc['Ciudad']) + diff --git a/04 - Estructuras de datos/README.md b/M05_estructuradedatos/README.md similarity index 89% rename from 04 - Estructuras de datos/README.md rename to M05_estructuradedatos/README.md index e034fdb77..4f2b6c99f 100644 --- a/04 - Estructuras de datos/README.md +++ b/M05_estructuradedatos/README.md @@ -1,10 +1,10 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -## Grabación de la Clase 4 -
- -
+## Principales Objetivos de Aprendizaje para esta Clase + +- Conocer la diferencia entre una variable y una estructura de datos +- Manejar el tipo de dato lista en Python ## Estructuras de datos @@ -215,18 +215,4 @@ mi_diccionario={'Clave1':'Valor1', 'Clave2':{'numeros':[1,2,3,4,5]}}


-## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/4aec1885136fdcff98899d2be13c8908b39f8b21/04%20-%20Estructuras%20de%20datos/Prep_Course_Homework_04.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
+* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m09_errorhandling** de Slack \ No newline at end of file diff --git a/05 - Iteradores e Iterables/.ipynb_checkpoints/Prep_Course_Homework_05-Resuelto-checkpoint.ipynb b/M06_iterablesiteradores/Prep_Course_Homework_06-Resuelto.ipynb similarity index 61% rename from 05 - Iteradores e Iterables/.ipynb_checkpoints/Prep_Course_Homework_05-Resuelto-checkpoint.ipynb rename to M06_iterablesiteradores/Prep_Course_Homework_06-Resuelto.ipynb index 79e75fd6c..955bb1fa2 100644 --- a/05 - Iteradores e Iterables/.ipynb_checkpoints/Prep_Course_Homework_05-Resuelto-checkpoint.ipynb +++ b/M06_iterablesiteradores/Prep_Course_Homework_06-Resuelto.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -8,6 +9,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -28,15 +30,17 @@ } ], "source": [ - "lista = []\n", - "n = -15\n", - "while (n < 0):\n", - " lista.append(n)\n", - " n += 1\n", - "print(lista)" + "lista = [] # Crea una lista vacía\n", + "n = -15 # Inicializa la variable n con el valor -15\n", + "while n < 0: # Mientras n sea menor que 0, se ejecuta el bucle\n", + " lista.append(n) # Agrega el valor de n a la lista\n", + " n += 1 # Incrementa el valor de n en 1 en cada iteración\n", + "print(lista) # Imprime la lista resultante\n", + "\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -45,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -63,14 +67,17 @@ } ], "source": [ - "n = 0\n", - "while (n < len(lista)):\n", - " if (lista[n] % 2 == 0):\n", - " print(lista[n])\n", - " n += 1" + "n = 0 # Inicializa la variable n con el valor 0\n", + "\n", + "while n < len(lista): # Mientras n sea menor que la longitud de la lista, se ejecuta el bucle\n", + " if lista[n] % 2 == 0: # Verifica si el elemento en la posición n de la lista es divisible por 2\n", + " print(lista[n]) # Imprime el elemento si cumple la condición\n", + " n += 1 # Incrementa el valor de n en 1 en cada iteración\n", + "\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -79,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -97,12 +104,13 @@ } ], "source": [ - "for elemento in lista:\n", - " if (elemento % 2 == 0):\n", - " print(elemento)" + "for elemento in lista: # Itera sobre cada elemento de la lista\n", + " if elemento % 2 == 0: # Verifica si el elemento es divisible por 2\n", + " print(elemento) # Imprime el elemento si cumple la condición\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -111,7 +119,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -125,11 +133,12 @@ } ], "source": [ - "for elemento in lista[:3]:\n", - " print(elemento)" + "for elemento in lista[:3]: # Itera sobre los primeros tres elementos de la lista\n", + " print(elemento) # Imprime cada elemento\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -164,11 +173,14 @@ } ], "source": [ - "for i, e in enumerate(lista):\n", - " print(i, e)" + "# La función enumerate(lista) devuelve un iterador que genera pares de valores, donde el primer valor es el índice y el segundo valor es el elemento de la lista. En cada iteración del bucle, la variable i representa el índice y la variable e representa el elemento.\n", + "\n", + "for i, e in enumerate(lista): # Itera sobre la lista y obtiene el índice y el elemento en cada iteración\n", + " print(i, e) # Imprime el índice y el elemento\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -177,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -186,7 +198,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -198,15 +210,18 @@ } ], "source": [ - "n = 1\n", - "while(n <= 20):\n", - " if (not(n in lista)):\n", - " lista.insert((n-1), n)\n", - " n += 1\n", - "print(lista)" + "n = 1 # Inicializa la variable n con el valor 1\n", + "\n", + "while n <= 20: # Mientras n sea menor o igual a 20, se ejecuta el bucle\n", + " if not (n in lista): # Verifica si n no está presente en la lista\n", + " lista.insert(n-1, n) # Inserta el valor de n en la posición (n-1) de la lista\n", + " n += 1 # Incrementa el valor de n en 1 en cada iteración\n", + "\n", + "print(lista) # Imprime la lista resultante\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -219,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -231,15 +246,19 @@ } ], "source": [ - "fibo = [0,1]\n", - "n = 2\n", - "while(n < 30):\n", - " fibo.append(fibo[n-1]+fibo[n-2])\n", - " n += 1\n", - "print(fibo)" + "fibo = [0, 1] # Crea una lista inicial con los primeros dos números de la secuencia de Fibonacci\n", + "\n", + "n = 2 # Inicializa la variable n con el valor 2\n", + "\n", + "while n < 30: # Mientras n sea menor que 30, se ejecuta el bucle\n", + " fibo.append(fibo[n - 1] + fibo[n - 2]) # Agrega el siguiente número de Fibonacci a la lista\n", + " n += 1 # Incrementa el valor de n en 1 en cada iteración\n", + "\n", + "print(fibo) # Imprime la lista de la secuencia de Fibonacci\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -263,10 +282,12 @@ } ], "source": [ + "# la función sum() para calcular la suma de los elementos de la lista fibo.\n", "sum(fibo)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -282,7 +303,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -298,14 +319,16 @@ } ], "source": [ - "primeros = 15\n", - "n = primeros - 5\n", - "while(n < primeros):\n", - " print(fibo[n]/fibo[n-1])\n", - " n += 1" + "primeros = 15 # Número de elementos que se imprimirán\n", + "n = primeros - 5 # Valor inicial de n\n", + "\n", + "while n < primeros: # Mientras n sea menor que el número de elementos a imprimir, se ejecuta el bucle\n", + " print(fibo[n] / fibo[n - 1]) # Imprime el resultado de la división de dos elementos consecutivos de la lista fibo\n", + " n += 1 # Incrementa el valor de n en 1 en cada iteración" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -315,7 +338,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -332,12 +355,14 @@ ], "source": [ "cadena = 'Hola Mundo. Esto es una practica del lenguaje de programación Python'\n", - "for i, c in enumerate(cadena):\n", - " if c == 'n':\n", - " print(i)" + "\n", + "for i, c in enumerate(cadena): # Itera sobre la cadena y obtiene el índice y el carácter en cada iteración\n", + " if c == 'n': # Verifica si el carácter es igual a 'n'\n", + " print(i) # Imprime el índice correspondiente al carácter 'n'" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -346,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -360,14 +385,18 @@ } ], "source": [ - "dicc = { 'Ciudad': ['Buenos Aires','Caracas','Bogotá','Lisboa','Roma'], \n", - "'País': ['Argentina','Venezuela','Colombia','Portugal','Italia'], \n", - "'Continente' : ['América','América','América','Europa','Europa']}\n", - "for i in dicc:\n", - " print(i)" + "dicc = {\n", + " 'Ciudad': ['Buenos Aires', 'Caracas', 'Bogotá', 'Lisboa', 'Roma'],\n", + " 'País': ['Argentina', 'Venezuela', 'Colombia', 'Portugal', 'Italia'],\n", + " 'Continente': ['América', 'América', 'América', 'Europa', 'Europa']\n", + "}\n", + "\n", + "for i in dicc: # Itera sobre las claves del diccionario\n", + " print(i) # Imprime cada clave\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -376,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -390,14 +419,15 @@ ], "source": [ "cadena = 'Hola Mundo. Esto es una practica del lenguaje de programación Python'\n", - "print(type(cadena))\n", - "cadena = list(cadena)\n", - "print(type(cadena))" + "print(type(cadena)) # Imprime el tipo de dato de la variable cadena\n", + "\n", + "cadena = list(cadena) # Convierte la cadena en una lista\n", + "print(type(cadena)) # Imprime el tipo de dato de la variable cadena después de convertirla en una lista\n" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -476,13 +506,14 @@ } ], "source": [ - "recorre = iter(cadena)\n", - "largo = len(cadena)\n", - "for i in range(0, largo):\n", - " print(next(recorre))" + "recorre = iter(cadena) # Crea un iterador a partir de la cadena\n", + "largo = len(cadena) # Obtiene la longitud de la cadena\n", + "for i in range(0, largo): # Itera sobre el rango de índices desde 0 hasta largo-1\n", + " print(next(recorre)) # Imprime el próximo elemento del iterador" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -491,7 +522,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -504,14 +535,15 @@ } ], "source": [ - "lis1 = ['run','fly','sleep']\n", - "lis2 = ['correr','volar','dormir']\n", - "lisz = zip(lis1, lis2)\n", - "print(type(lisz))\n", - "print(list(lisz))" + "lis1 = ['run', 'fly', 'sleep']\n", + "lis2 = ['correr', 'volar', 'dormir']\n", + "lisz = zip(lis1, lis2) # Combina los elementos de lis1 y lis2 en pares\n", + "print(type(lisz)) # Imprime el tipo de dato de lisz\n", + "print(list(lisz)) # Convierte lisz en una lista y la imprime\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -521,7 +553,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -533,12 +565,15 @@ } ], "source": [ - "lis = [18,21,29,32,35,42,56,60,63,71,84,90,91,100]\n", - "lis2 = [i for i in lis if i % 7 == 0]\n", - "print(lis2)" + "lis = [18, 21, 29, 32, 35, 42, 56, 60, 63, 71, 84, 90, 91, 100] # Definición de la lista original\n", + "\n", + "lis2 = [i for i in lis if i % 7 == 0] # Comprensión de lista para filtrar elementos divisibles por 7\n", + "\n", + "print(lis2) # Impresión de la lista resultante\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -548,7 +583,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -557,7 +592,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -566,7 +601,7 @@ "list" ] }, - "execution_count": 51, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -577,7 +612,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -589,16 +624,19 @@ } ], "source": [ - "cantidad = 0\n", - "for elemento in lis:\n", - " if (type(elemento) == list):\n", - " cantidad += len(elemento)\n", + "cantidad = 0 # Inicialización del contador de elementos\n", + "\n", + "for elemento in lis: # Iteración sobre cada elemento de la lista 'lis'\n", + " if type(elemento) == list: # Verificación si el elemento es una lista\n", + " cantidad += len(elemento) # Si es una lista, se incrementa el contador por la cantidad de elementos en esa lista\n", " else:\n", - " cantidad += 1\n", - "print('La cantidad total de elementos es', cantidad)\n" + " cantidad += 1 # Si no es una lista, se incrementa el contador por 1, ya que se trata de un solo elemento\n", + "\n", + "print('La cantidad total de elementos es', cantidad) # Impresión del resultado final\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -607,7 +645,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -619,10 +657,11 @@ } ], "source": [ - "for indice, elemento in enumerate(lis):\n", - " if (type(elemento) != list):\n", - " lis[indice]=[elemento]\n", - "print(lis)" + "for indice, elemento in enumerate(lis): # Iteración sobre cada elemento de la lista 'lis' junto con su índice\n", + " if type(elemento) != list: # Verificación si el elemento no es una lista\n", + " lis[indice] = [elemento] # Si no es una lista, se reemplaza por una lista que contiene ese elemento\n", + "\n", + "print(lis) # Impresión de la lista modificada\n" ] } ], @@ -645,7 +684,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/05 - Iteradores e Iterables/Prep_Course_Homework_05-Resuelto.py b/M06_iterablesiteradores/Prep_Course_Homework_06-Resuelto.py similarity index 100% rename from 05 - Iteradores e Iterables/Prep_Course_Homework_05-Resuelto.py rename to M06_iterablesiteradores/Prep_Course_Homework_06-Resuelto.py diff --git a/M06_iterablesiteradores/Prep_Course_Homework_06.ipynb b/M06_iterablesiteradores/Prep_Course_Homework_06.ipynb new file mode 100644 index 000000000..75d6c18b1 --- /dev/null +++ b/M06_iterablesiteradores/Prep_Course_Homework_06.ipynb @@ -0,0 +1,290 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Iteradores e iterables" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) A partir de una lista vacía, utilizar un ciclo while para cargar allí números negativos del -15 al -1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) ¿Con un ciclo while sería posible recorrer la lista para imprimir sólo los números pares?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Resolver el punto anterior sin utilizar un ciclo while" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Utilizar el iterable para recorrer sólo los primeros 3 elementos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Utilizar la función **enumerate** para obtener dentro del iterable, tambien el índice al que corresponde el elemento" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Dada la siguiente lista de números enteros entre 1 y 20, crear un ciclo donde se completen los valores faltantes: lista = [1,2,5,7,8,10,13,14,15,17,20]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7) La sucesión de Fibonacci es un listado de números que sigue la fórmula:
\n", + "n0 = 0
\n", + "n1 = 1
\n", + "ni = ni-1 + ni-2
\n", + "Crear una lista con los primeros treinta números de la sucesión.
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8) Realizar la suma de todos elementos de la lista del punto anterior" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9) La proporción aurea se expresa con una proporción matemática que nace el número irracional Phi= 1,618… que los griegos llamaron número áureo. El cuál se puede aproximar con la sucesión de Fibonacci. Con la lista del ejercicio anterior, imprimir el cociente de los últimos 5 pares de dos números contiguos:
\n", + "Donde i es la cantidad total de elementos
\n", + "ni-1 / ni
\n", + "ni-2 / ni-1
\n", + "ni-3 / ni-2
\n", + "ni-4 / ni-3
\n", + "ni-5 / ni-4
\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10) A partir de la variable cadena ya dada, mostrar en qué posiciones aparece la letra \"n\"
\n", + "cadena = 'Hola Mundo. Esto es una practica del lenguaje de programación Python'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "11) Crear un diccionario e imprimir sus claves utilizando un iterador" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "12) Convertir en una lista la variable \"cadena\" del punto 10 y luego recorrerla con un iterador " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "13) Crear dos listas y unirlas en una tupla utilizando la función zip" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "14) A partir de la siguiente lista de números, crear una nueva sólo si el número es divisible por 7
\n", + "lis = [18,21,29,32,35,42,56,60,63,71,84,90,91,100]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "15) A partir de la lista de a continuación, contar la cantidad total de elementos que contiene, teniendo en cuenta que un elemento de la lista podría ser otra lista:
\n", + "lis = [[1,2,3,4],'rojo','verde',[True,False,False],['uno','dos','tres']]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "16) Tomar la lista del punto anterior y convertir cada elemento en una lista si no lo es" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/05 - Iteradores e Iterables/Prep_Course_Homework_05.md b/M06_iterablesiteradores/Prep_Course_Homework_06.md similarity index 100% rename from 05 - Iteradores e Iterables/Prep_Course_Homework_05.md rename to M06_iterablesiteradores/Prep_Course_Homework_06.md diff --git a/M06_iterablesiteradores/Prep_Course_Homework_06.py b/M06_iterablesiteradores/Prep_Course_Homework_06.py new file mode 100644 index 000000000..85add52ab --- /dev/null +++ b/M06_iterablesiteradores/Prep_Course_Homework_06.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python +# coding: utf-8 + +# ## Iteradores e iterables + +# 1) A partir de una lista vacía, utilizar un ciclo while para cargar allí números negativos del -15 al -1 + +# In[1]: + + + + + +# 2) ¿Con un ciclo while sería posible recorrer la lista para imprimir sólo los números pares? + +# In[3]: + + + + + +# 3) Resolver el punto anterior sin utilizar un ciclo while + +# In[4]: + + + + + +# 4) Utilizar el iterable para recorrer sólo los primeros 3 elementos + +# In[7]: + + + + +# 5) Utilizar la función **enumerate** para obtener dentro del iterable, tambien el índice al que corresponde el elemento + +# In[9]: + + + + +# 6) Dada la siguiente lista de números enteros entre 1 y 20, crear un ciclo donde se completen los valores faltantes: lista = [1,2,5,7,8,10,13,14,15,17,20] + +# In[10]: + + + + + +# In[11]: + + +n = 1 + + + +# 7) La sucesión de Fibonacci es un listado de números que sigue la fórmula:
+# n0 = 0
+# n1 = 1
+# ni = ni-1 + ni-2
+# Crear una lista con los primeros treinta números de la sucesión.
+ +# In[23]: + + + + + +# 8) Realizar la suma de todos elementos de la lista del punto anterior + +# In[24]: + + + + +# 9) La proporción aurea se expresa con una proporción matemática que nace el número irracional Phi= 1,618… que los griegos llamaron número áureo. El cuál se puede aproximar con la sucesión de Fibonacci. Con la lista del ejercicio anterior, imprimir el cociente de los últimos 5 pares de dos números contiguos:
+# Donde i es la cantidad total de elementos
+# ni-1 / ni
+# ni-2 / ni-1
+# ni-3 / ni-2
+# ni-4 / ni-3
+# ni-5 / ni-4
+# + +# In[38]: + + + + +# 10) A partir de la variable cadena ya dada, mostrar en qué posiciones aparece la letra "n"
+# cadena = 'Hola Mundo. Esto es una practica del lenguaje de programación Python' + +# In[39]: + + + + + +# 11) Crear un diccionario e imprimir sus claves utilizando un iterador + +# In[40]: + + + + + +# 12) Convertir en una lista la variable "cadena" del punto 10 y luego recorrerla con un iterador + +# In[41]: + + + + + +# In[45]: + + + + + +# 13) Crear dos listas y unirlas en una tupla utilizando la función zip + +# In[48]: + + + + + +# 14) A partir de la siguiente lista de números, crear una nueva sólo si el número es divisible por 7
+# lis = [18,21,29,32,35,42,56,60,63,71,84,90,91,100] + +# In[49]: + + + + + +# 15) A partir de la lista de a continuación, contar la cantidad total de elementos que contiene, teniendo en cuenta que un elemento de la lista podría ser otra lista:
+# lis = [[1,2,3,4],'rojo','verde',[True,False,False],['uno','dos','tres']] + +# In[56]: + + + + +# In[51]: + + + + + +# In[57]: + + + + + +# 16) Tomar la lista del punto anterior y convertir cada elemento en una lista si no lo es + +# In[58]: + + + diff --git a/05 - Iteradores e Iterables/README.md b/M06_iterablesiteradores/README.md similarity index 89% rename from 05 - Iteradores e Iterables/README.md rename to M06_iterablesiteradores/README.md index e79297984..c8a2a7f62 100644 --- a/05 - Iteradores e Iterables/README.md +++ b/M06_iterablesiteradores/README.md @@ -1,10 +1,9 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -## Grabación de la Clase 5 -
- -
+## Principales Objetivos de Aprendizaje para esta Clase + +- Conocer los conceptos de Iteradores e Iterables ## Iteradores e Iterables @@ -179,18 +178,4 @@ Por lo tanto la expresión sólo se aplicará al elemento si se cumple la condic Lo que hace el código anterior es iterar cada letra de la frase, y si es una r, se añade a la lista. De esta manera el resultado es una lista con tantas letras r como la frase original tiene, y podemos calcular las veces que se repite con len(). -## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/4aec1885136fdcff98899d2be13c8908b39f8b21/05%20-%20Iteradores%20e%20Iterables/Prep_Course_Homework_05.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
+* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m06_iterablesiteradores** de Slack \ No newline at end of file diff --git a/M07_funciones/Prep_Course_Homework_07-Resuelto.ipynb b/M07_funciones/Prep_Course_Homework_07-Resuelto.ipynb new file mode 100644 index 000000000..9e73b92ea --- /dev/null +++ b/M07_funciones/Prep_Course_Homework_07-Resuelto.ipynb @@ -0,0 +1,386 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Funciones" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Crear una función que reciba un número como parámetro y devuelva True si es primo y False si no lo es" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "def verifica_primo(nro):\n", + " es_primo = True # Variable para almacenar el resultado de la verificación de número primo\n", + " for i in range(2, nro): # Iteración sobre los números desde 2 hasta nro-1\n", + " if nro % i == 0: # Verificación si nro es divisible por i (no es primo)\n", + " es_primo = False # Se marca la variable como False indicando que el número no es primo\n", + " break # Se rompe el bucle ya que no es necesario continuar la verificación\n", + " return es_primo # Se devuelve el resultado de la verificación de número primo\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) Utilizando la función del punto 1, realizar otra función que reciba de parámetro una lista de números y devuelva sólo aquellos que son primos en otra lista" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def extrae_primos_de_lista(lista):\n", + " lista_primos = [] # Lista para almacenar los números primos extraídos\n", + " for elemento in lista: # Iteración sobre cada elemento de la lista\n", + " if verifica_primo(int(elemento)): # Verificación si el elemento es un número primo\n", + " lista_primos.append(elemento) # Si es primo, se agrega a la lista de primos\n", + " return lista_primos # Se devuelve la lista de números primos extraídos\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 5, 7, 11, 13, 17, 19]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lis_completa = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]\n", + "lis_primos = extrae_primos_de_lista(lis_completa)\n", + "lis_primos" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Crear una función que al recibir una lista de números, devuelva el que más se repite y cuántas veces lo hace. Si hay más de un \"más repetido\", que devuelva cualquiera" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def valor_modal(lista):\n", + " lista_unicos = []\n", + " lista_repeticiones = []\n", + " if len(lista) == 0:\n", + " return None\n", + " for elemento in lista:\n", + " if elemento in lista_unicos:\n", + " i = lista_unicos.index(elemento)\n", + " lista_repeticiones[i] += 1\n", + " else:\n", + " lista_unicos.append(elemento)\n", + " lista_repeticiones.append(1)\n", + " moda = lista_unicos[0]\n", + " maximo = lista_repeticiones[0]\n", + " for i, elemento in enumerate(lista_unicos):\n", + " if lista_repeticiones[i] > maximo:\n", + " moda = lista_unicos[i]\n", + " maximo = lista_repeticiones[i]\n", + " return moda, maximo" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Código explicado:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def valor_modal(lista):\n", + " lista_unicos = [] # Lista para almacenar los elementos únicos de la lista\n", + " lista_repeticiones = [] # Lista para almacenar las repeticiones de cada elemento único\n", + " if len(lista) == 0: # Verificación si la lista está vacía\n", + " return None # Si la lista está vacía, se devuelve None\n", + " for elemento in lista: # Iteración sobre cada elemento de la lista\n", + " if elemento in lista_unicos: # Verificación si el elemento ya está en la lista de únicos\n", + " i = lista_unicos.index(elemento) # Se obtiene el índice del elemento en la lista de únicos\n", + " lista_repeticiones[i] += 1 # Se incrementa el contador de repeticiones para ese elemento\n", + " else:\n", + " lista_unicos.append(elemento) # Si es un elemento único, se agrega a la lista de únicos\n", + " lista_repeticiones.append(1) # Se inicializa el contador de repeticiones para ese elemento en 1\n", + " moda = lista_unicos[0] # Se asume que el primer elemento de la lista de únicos es la moda inicialmente\n", + " maximo = lista_repeticiones[0] # Se asume que el primer contador de repeticiones es el máximo inicialmente\n", + " for i, elemento in enumerate(lista_unicos): # Iteración sobre cada elemento único y su índice\n", + " if lista_repeticiones[i] > maximo: # Verificación si el contador de repeticiones es mayor al máximo actual\n", + " moda = lista_unicos[i] # Se actualiza la moda con el nuevo elemento con más repeticiones\n", + " maximo = lista_repeticiones[i] # Se actualiza el máximo con el nuevo contador de repeticiones mayor\n", + " return moda, maximo # Se devuelve la moda y el máximo de repeticiones como una tupla\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "lis = [1,1,5,6,8,10,22,5,6,4,11,9,5]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, 3)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "valor_modal(lis)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
\n", + "Fórmula 1\t: (°C × 9/5) + 32 = °F
\n", + "Fórmula 2\t: °C + 273.15 = °K
\n", + "Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def conversion_grados(valor, origen, destino):\n", + " # Función que realiza la conversión de grados entre diferentes unidades\n", + " # Parámetros:\n", + " # - valor: el valor numérico a convertir\n", + " # - origen: la unidad de origen (celsius, farenheit, kelvin)\n", + " # - destino: la unidad de destino (celsius, farenheit, kelvin)\n", + "\n", + " if origen == 'celsius':\n", + " if destino == 'celsius':\n", + " valor_destino = valor # Si la unidad de origen y destino es la misma, no se realiza ninguna conversión\n", + " elif destino == 'farenheit':\n", + " valor_destino = (valor * 9 / 5) + 32 # Conversión de Celsius a Farenheit\n", + " elif destino == 'kelvin':\n", + " valor_destino = valor + 273.15 # Conversión de Celsius a Kelvin\n", + " else:\n", + " print('Parámetro de Destino incorrecto') # Mensaje de error si el parámetro de destino no es válido\n", + " elif origen == 'farenheit':\n", + " if destino == 'celsius':\n", + " valor_destino = (valor - 32) * 5 / 9 # Conversión de Farenheit a Celsius\n", + " elif destino == 'farenheit':\n", + " valor_destino = valor # Si la unidad de origen y destino es la misma, no se realiza ninguna conversión\n", + " elif destino == 'kelvin':\n", + " valor_destino = ((valor - 32) * 5 / 9) + 273.15 # Conversión de Farenheit a Kelvin\n", + " else:\n", + " print('Parámetro de Destino incorrecto') # Mensaje de error si el parámetro de destino no es válido\n", + " elif origen == 'kelvin':\n", + " if destino == 'celsius':\n", + " valor_destino = valor - 273.15 # Conversión de Kelvin a Celsius\n", + " elif destino == 'farenheit':\n", + " valor_destino = ((valor - 273.15) * 9 / 5) + 32 # Conversión de Kelvin a Farenheit\n", + " elif destino == 'kelvin':\n", + " valor_destino = valor # Si la unidad de origen y destino es la misma, no se realiza ninguna conversión\n", + " else:\n", + " print('Parámetro de Destino incorrecto') # Mensaje de error si el parámetro de destino no es válido\n", + " else:\n", + " print('Parámetro de Origen incorrecto') # Mensaje de error si el parámetro de origen no es válido\n", + " \n", + " return valor_destino # Retorna el valor convertido en la unidad de destino\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 grado Celsius a Celsius: 1\n", + "1 grado Celsius a Kelvin: 274.15\n", + "1 grado Celsius a Farenheit: 33.8\n", + "1 grado Kelvin a Celsius: -272.15\n", + "1 grado Kelvin a Kelvin: 1\n", + "1 grado Kelvin a Farenheit: -457.87\n", + "1 grado Farenheit a Celsius: -17.22222222222222\n", + "1 grado Farenheit a Kelvin: 255.92777777777775\n", + "1 grado Farenheit a Farenheit: 1\n" + ] + } + ], + "source": [ + "print('1 grado Celsius a Celsius:', conversion_grados(1, 'celsius', 'celsius'))\n", + "print('1 grado Celsius a Kelvin:', conversion_grados(1, 'celsius', 'kelvin'))\n", + "print('1 grado Celsius a Farenheit:', conversion_grados(1, 'celsius', 'farenheit'))\n", + "print('1 grado Kelvin a Celsius:', conversion_grados(1, 'kelvin', 'celsius'))\n", + "print('1 grado Kelvin a Kelvin:', conversion_grados(1, 'kelvin', 'kelvin'))\n", + "print('1 grado Kelvin a Farenheit:', conversion_grados(1, 'kelvin', 'farenheit'))\n", + "print('1 grado Farenheit a Celsius:', conversion_grados(1, 'farenheit', 'celsius'))\n", + "print('1 grado Farenheit a Kelvin:', conversion_grados(1, 'farenheit', 'kelvin'))\n", + "print('1 grado Farenheit a Farenheit:', conversion_grados(1, 'farenheit', 'farenheit'))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 grado celsius a celsius : 1\n", + "1 grado celsius a kelvin : 274.15\n", + "1 grado celsius a farenheit : 33.8\n", + "1 grado kelvin a celsius : -272.15\n", + "1 grado kelvin a kelvin : 1\n", + "1 grado kelvin a farenheit : -457.87\n", + "1 grado farenheit a celsius : -17.22222222222222\n", + "1 grado farenheit a kelvin : 255.92777777777775\n", + "1 grado farenheit a farenheit : 1\n" + ] + } + ], + "source": [ + "metricas = ['celsius', 'kelvin', 'farenheit'] # Lista de las unidades métricas\n", + "\n", + "for i in range(0, 3): # Bucle exterior que itera sobre los índices de la lista de metricas\n", + " for j in range(0, 3): # Bucle interior que itera sobre los índices de la lista de metricas\n", + " # Se imprime la conversión de 1 grado desde la unidad métrica en el índice i a la unidad métrica en el índice j\n", + " # utilizando la función de conversión_grados\n", + " print('1 grado', metricas[i], 'a', metricas[j], ':', conversion_grados(1, metricas[i], metricas[j]))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def factorial(numero):\n", + " # Verifica si el número no es entero y devuelve un mensaje de error\n", + " if type(numero) != int:\n", + " return 'El número debe ser un entero'\n", + " \n", + " # Verifica si el número es negativo y devuelve un mensaje de error\n", + " if numero < 0:\n", + " return 'El número debe ser positivo'\n", + " \n", + " # Caso base: si el número es 0 o 1, el factorial es 1\n", + " if numero <= 1:\n", + " return 1\n", + " \n", + " # Recursión: calcula el factorial del número multiplicándolo por el factorial del número anterior\n", + " numero = numero * factorial(numero - 1)\n", + " \n", + " return numero\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "120\n", + "El número debe ser positivo\n", + "El número debe ser un entero\n", + "El número debe ser un entero\n" + ] + } + ], + "source": [ + "print(factorial(5))\n", + "print(factorial(-2))\n", + "print(factorial(1.23))\n", + "print(factorial('6'))" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/06 - Funciones/Prep_Course_Homework_06-Resuelto.py b/M07_funciones/Prep_Course_Homework_07-Resuelto.py similarity index 74% rename from 06 - Funciones/Prep_Course_Homework_06-Resuelto.py rename to M07_funciones/Prep_Course_Homework_07-Resuelto.py index 1a1239440..92f23bb2b 100644 --- a/06 - Funciones/Prep_Course_Homework_06-Resuelto.py +++ b/M07_funciones/Prep_Course_Homework_07-Resuelto.py @@ -72,58 +72,7 @@ def valor_modal(lista): print('El valor modal es', moda, 'y se repite', repite, 'veces.') -# 4) A la función del punto 3, agregar un parámetro más, que permita elegir si se requiere el menor o el mayor de los mas repetidos. - -# In[45]: - - -def valor_modal(lista, menor): - ''' - Esta función devuelve el valor modal y recibe de parámetros dos valores: - 1-Una lista de números - 2-Verdadero (por defecto) por si se requiere el mínimo de los más repetidos, o Falso si se requiere el máximo - ''' - lista_unicos = [] - lista_repeticiones = [] - if len(lista) == 0: - return None - if (menor): - lista.sort() - else: - lista.sort(reverse=True) - for elemento in lista: - if elemento in lista_unicos: - i = lista_unicos.index(elemento) - lista_repeticiones[i] += 1 - else: - lista_unicos.append(elemento) - lista_repeticiones.append(1) - moda = lista_unicos[0] - maximo = lista_repeticiones[0] - for i, elemento in enumerate(lista_unicos): - if lista_repeticiones[i] > maximo: - moda = lista_unicos[i] - maximo = lista_repeticiones[i] - return moda, maximo - - -# In[46]: - - -lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5] -moda, repite = valor_modal(lis, True) -print('El valor modal es', moda, 'y se repite', repite, 'veces.') - - -# In[47]: - - -lis = [10,1,5,6,8,10,22,5,6,4,11,10,9,5] -moda, repite = valor_modal(lis, False) -print('El valor modal es', moda, 'y se repite', repite, 'veces.') - - -# 5) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
+# 4) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
# Fórmula 1 : (°C × 9/5) + 32 = °F
# Fórmula 2 : °C + 273.15 = °K
# Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino @@ -179,7 +128,7 @@ def conversion_grados(valor, origen, destino): print('1 grado Farenheit a Farenheit:', conversion_grados(1, 'farenheit', 'farenheit')) -# 6) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos: +# 5) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos: # In[62]: @@ -190,7 +139,7 @@ def conversion_grados(valor, origen, destino): print('1 grado', metricas[i], 'a', metricas[j],':', conversion_grados(1, metricas[i], metricas[j])) -# 7) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo +# 6) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo # In[65]: diff --git a/M07_funciones/Prep_Course_Homework_07.ipynb b/M07_funciones/Prep_Course_Homework_07.ipynb new file mode 100644 index 000000000..dc6c4e40d --- /dev/null +++ b/M07_funciones/Prep_Course_Homework_07.ipynb @@ -0,0 +1,129 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Funciones" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Crear una función que reciba un número como parámetro y devuelva True si es primo y False si no lo es" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) Utilizando la función del punto 1, realizar otra función que reciba de parámetro una lista de números y devuelva sólo aquellos que son primos en otra lista" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Crear una función que al recibir una lista de números, devuelva el que más se repite y cuántas veces lo hace. Si hay más de un \"más repetido\", que devuelva cualquiera" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
\n", + "Fórmula 1\t: (°C × 9/5) + 32 = °F
\n", + "Fórmula 2\t: °C + 273.15 = °K
\n", + "Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/06 - Funciones/Prep_Course_Homework_06.md b/M07_funciones/Prep_Course_Homework_07.md similarity index 72% rename from 06 - Funciones/Prep_Course_Homework_06.md rename to M07_funciones/Prep_Course_Homework_07.md index 983baafc1..5c79a7232 100644 --- a/06 - Funciones/Prep_Course_Homework_06.md +++ b/M07_funciones/Prep_Course_Homework_07.md @@ -6,14 +6,12 @@ 3) Crear una función que al recibir una lista de números, devuelva el que más se repite y cuántas veces lo hace. Si hay más de un "más repetido", que devuelva cualquiera -4) A la función del punto 3, agregar un parámetro más, que permita elegir si se requiere el menor o el mayor de los mas repetidos. - -5) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
+4) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
Fórmula 1 : (°C × 9/5) + 32 = °F
Fórmula 2 : °C + 273.15 = °K
Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino -6) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos: +5) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos: -7) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo +6) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo diff --git a/M07_funciones/Prep_Course_Homework_07.py b/M07_funciones/Prep_Course_Homework_07.py new file mode 100644 index 000000000..178453ee9 --- /dev/null +++ b/M07_funciones/Prep_Course_Homework_07.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# coding: utf-8 + +# ## Funciones + +# 1) Crear una función que reciba un número como parámetro y devuelva si True si es primo y False si no lo es + +# In[1]: + + + + + +# 2) Utilizando la función del punto 1, realizar otra función que reciba de parámetro una lista de números y devuelva sólo aquellos que son primos en otra lista + +# In[25]: + + + + +# 3) Crear una función que al recibir una lista de números, devuelva el que más se repite y cuántas veces lo hace. Si hay más de un "más repetido", que devuelva cualquiera + +# In[33]: + + + + + +# 4) Crear una función que convierta entre grados Celsius, Farenheit y Kelvin
+# Fórmula 1 : (°C × 9/5) + 32 = °F
+# Fórmula 2 : °C + 273.15 = °K
+# Debe recibir 3 parámetros: el valor, la medida de orígen y la medida de destino +# + +# In[56]: + + + +# 5) Iterando una lista con los tres valores posibles de temperatura que recibe la función del punto 5, hacer un print para cada combinación de los mismos: + +# In[62]: + + + + +# 6) Armar una función que devuelva el factorial de un número. Tener en cuenta que el usuario puede equivocarse y enviar de parámetro un número no entero o negativo + +# In[65]: + + + + diff --git a/06 - Funciones/README.md b/M07_funciones/README.md similarity index 93% rename from 06 - Funciones/README.md rename to M07_funciones/README.md index 6581522ff..24a40cd4c 100644 --- a/06 - Funciones/README.md +++ b/M07_funciones/README.md @@ -1,10 +1,12 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -## Grabación de la Clase 6 -
- -
+## Principales Objetivos de Aprendizaje para esta Clase + +- Conocer el concepto de una Función +- Comprender el concepto de variables locales y globales +- Comprender el concepto de recursividad +- Conocer el concepto de parámetros y pasaje de parámetros ## Funciones @@ -272,18 +274,4 @@ La función Lambda es una forma conveniente de crear una función en una sola l 12 ``` -## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/4aec1885136fdcff98899d2be13c8908b39f8b21/06%20-%20Funciones/Prep_Course_Homework_06.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
+* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m07_funciones** de Slack \ No newline at end of file diff --git a/07 - Classes & OOP/.ipynb_checkpoints/Prep_Course_Homework_07-Resuelto-Copy1-checkpoint.ipynb b/M08_clasesyOOP/Prep_Course_Homework_08-Resuelto.ipynb similarity index 82% rename from 07 - Classes & OOP/.ipynb_checkpoints/Prep_Course_Homework_07-Resuelto-Copy1-checkpoint.ipynb rename to M08_clasesyOOP/Prep_Course_Homework_08-Resuelto.ipynb index 2f184c853..cdaa0f8e5 100644 --- a/07 - Classes & OOP/.ipynb_checkpoints/Prep_Course_Homework_07-Resuelto-Copy1-checkpoint.ipynb +++ b/M08_clasesyOOP/Prep_Course_Homework_08-Resuelto.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -8,6 +9,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -19,18 +21,21 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ + "# El método especial __init__ es el constructor de la clase Vehiculo(Se llama automáticamente cuando se crea una nueva instancia de la clase.El constructor recibe tres parámetros: color, tipo y cilindrada. La variable self se refiere al objeto actual (la instancia de la clase Vehiculo). Los parámetros color, tipo y cilindrada se asignan a los atributos correspondientes del objeto.\n", + "\n", "class Vehiculo:\n", - " def __init__(self, color, tipo, cilindrada):\n", + " def __init__(self, color, tipo, cilindrada): \n", " self.color = color\n", " self.tipo = tipo\n", - " self.cilindrada = cilindrada" + " self.cilindrada = cilindrada\n" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -42,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -54,17 +59,18 @@ " self.velocidad = 0\n", " self.direccion = 0\n", "\n", - " def Acelerar(self, vel):\n", - " self.velocidad += vel\n", + " def Acelerar(self, vel): # El método Acelerar recibe un parámetro \"vel\" que representa la velocidad a aumentar.\n", + " self.velocidad += vel # Aumenta la velocidad actual del vehículo sumando el valor de \"vel\" al atributo \"velocidad\".\n", "\n", - " def Frenar(self, vel):\n", - " self.velocidad -= vel\n", + " def Frenar(self, vel): # El método Frenar recibe un parámetro \"vel\" que representa la velocidad a disminuir.\n", + " self.velocidad -= vel # Disminuye la velocidad actual del vehículo restando el valor de \"vel\" al atributo \"velocidad\".\n", " \n", - " def Doblar(self, grados):\n", - " self.direccion += grados" + " def Doblar(self, grados): # El método Doblar recibe un parámetro \"grados\" que representa la cantidad de grados para girar.\n", + " self.direccion += grados # Actualiza la dirección del vehículo sumando el valor de \"grados\" al atributo \"direccion\"." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -73,30 +79,33 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ - "a1 = Vehiculo('rojo', 'auto', 2)\n", - "a2 = Vehiculo('blanco', 'camioneta', 3.6)\n", - "a3 = Vehiculo('negro', 'moto', 1)" + "a1 = Vehiculo('rojo', 'auto', 2) # Creación de un objeto \"Vehiculo\" con color rojo, tipo auto y cilindrada 2.\n", + "a2 = Vehiculo('blanco', 'camioneta', 3.6) # Creación de un objeto \"Vehiculo\" con color blanco, tipo camioneta y cilindrada 3.6.\n", + "a3 = Vehiculo('negro', 'moto', 1) # Creación de un objeto \"Vehiculo\" con color negro, tipo moto y cilindrada 1." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ - "a1.Acelerar(40)\n", - "a2.Acelerar(60)\n", - "a3.Acelerar(30)\n", - "a1.Doblar(30)\n", - "a3.Doblar(-30)\n", - "a2.Frenar(-50)" + "a1.Acelerar(40) # Llamada al método \"Acelerar\" del objeto \"a1\" para aumentar la velocidad en 40.\n", + "a2.Acelerar(60) # Llamada al método \"Acelerar\" del objeto \"a2\" para aumentar la velocidad en 60.\n", + "a3.Acelerar(30) # Llamada al método \"Acelerar\" del objeto \"a3\" para aumentar la velocidad en 30.\n", + "\n", + "a1.Doblar(30) # Llamada al método \"Doblar\" del objeto \"a1\" para girar la dirección en 30 grados.\n", + "a3.Doblar(-30) # Llamada al método \"Doblar\" del objeto \"a3\" para girar la dirección en -30 grados.\n", + "\n", + "a2.Frenar(-50) # Llamada al método \"Frenar\" del objeto \"a2\" para disminuir la velocidad en -50." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -105,7 +114,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -130,12 +139,18 @@ " print('Velocidad:', self.velocidad, '- Dirección:', self.direccion)\n", "\n", " def Detalle(self):\n", - " print('Soy', self.tipo, 'de color', self.color, 'y mi cilindrada es de', self.cilindrada, 'litros')" + " print('Soy', self.tipo, 'de color', self.color, 'y mi cilindrada es de', self.cilindrada, 'litros')\n", + "\n", + " def Estado(self): #Método para imprimir el estado actual del vehículo.\n", + " print('Velocidad:', self.velocidad, '- Dirección:', self.direccion) #Muestra la velocidad y dirección.\n", + "\n", + " def Detalle(self): #Método para imprimir los detalles del vehículo.\n", + " print('Soy', self.tipo, 'de color', self.color, 'y mi cilindrada es de', self.cilindrada, 'litros') #Muestra el tipo, color y cilindrada.\n" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -153,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -172,10 +187,11 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 6
\n", + "5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 7
\n", "Verificar Primo
\n", "Valor modal
\n", "Conversión grados
\n", @@ -184,7 +200,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -200,15 +216,11 @@ " break\n", " return es_primo\n", "\n", - " def valor_modal(self, lista, menor):\n", + " def valor_modal(lista):\n", " lista_unicos = []\n", " lista_repeticiones = []\n", " if len(lista) == 0:\n", " return None\n", - " if (menor):\n", - " lista.sort()\n", - " else:\n", - " lista.sort(reverse=True)\n", " for elemento in lista:\n", " if elemento in lista_unicos:\n", " i = lista_unicos.index(elemento)\n", @@ -269,7 +281,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -277,6 +289,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -285,7 +298,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -294,7 +307,7 @@ "True" ] }, - "execution_count": 28, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -305,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -324,7 +337,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -333,7 +346,7 @@ "283.15" ] }, - "execution_count": 31, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -344,7 +357,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -353,7 +366,7 @@ "720" ] }, - "execution_count": 35, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -363,6 +376,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -371,7 +385,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -471,7 +485,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -480,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -510,7 +524,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -540,7 +554,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -558,7 +572,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -587,6 +601,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -595,7 +610,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -604,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -613,7 +628,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -655,7 +670,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/07 - Classes & OOP/Prep_Course_Homework_07-Resuelto.py b/M08_clasesyOOP/Prep_Course_Homework_08-Resuelto.py similarity index 98% rename from 07 - Classes & OOP/Prep_Course_Homework_07-Resuelto.py rename to M08_clasesyOOP/Prep_Course_Homework_08-Resuelto.py index d471bb2e9..6dd60af6c 100644 --- a/07 - Classes & OOP/Prep_Course_Homework_07-Resuelto.py +++ b/M08_clasesyOOP/Prep_Course_Homework_08-Resuelto.py @@ -109,7 +109,7 @@ def Detalle(self): a1.Estado() -# 5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 6
+# 5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 7
# Verificar Primo
# Valor modal
# Conversión grados
@@ -130,15 +130,11 @@ def verifica_primo(self, nro): break return es_primo - def valor_modal(self, lista, menor): + def valor_modal(lista): lista_unicos = [] lista_repeticiones = [] if len(lista) == 0: return None - if (menor): - lista.sort() - else: - lista.sort(reverse=True) for elemento in lista: if elemento in lista_unicos: i = lista_unicos.index(elemento) diff --git a/M08_clasesyOOP/Prep_Course_Homework_08.ipynb b/M08_clasesyOOP/Prep_Course_Homework_08.ipynb new file mode 100644 index 000000000..3d21ca077 --- /dev/null +++ b/M08_clasesyOOP/Prep_Course_Homework_08.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Clases y Programación Orientada a Objetos" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Crear la clase vehículo que contenga los atributos:
\n", + "Color
\n", + "Si es moto, auto, camioneta ó camión
\n", + "Cilindrada del motor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) A la clase Vehiculo creada en el punto 1, agregar los siguientes métodos:
\n", + "Acelerar
\n", + "Frenar
\n", + "Doblar
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Instanciar 3 objetos de la clase vehículo y ejecutar sus métodos, probar luego el resultado" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Agregar a la clase Vehiculo, un método que muestre su estado, es decir, a que velocidad se encuentra y su dirección. Y otro método que muestre color, tipo y cilindrada" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 7
\n", + "Verificar Primo
\n", + "Valor modal
\n", + "Conversión grados
\n", + "Factorial
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Probar las funciones incorporadas en la clase del punto 5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7) Es necesario que la clase creada en el punto 5 contenga una lista, sobre la cual se apliquen las funciones incorporadas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8) Crear un archivo .py aparte y ubicar allí la clase generada en el punto anterior. Luego realizar la importación del módulo y probar alguna de sus funciones" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/07 - Classes & OOP/Prep_Course_Homework_07.md b/M08_clasesyOOP/Prep_Course_Homework_08.md similarity index 100% rename from 07 - Classes & OOP/Prep_Course_Homework_07.md rename to M08_clasesyOOP/Prep_Course_Homework_08.md diff --git a/M08_clasesyOOP/Prep_Course_Homework_08.py b/M08_clasesyOOP/Prep_Course_Homework_08.py new file mode 100644 index 000000000..5a3b936ee --- /dev/null +++ b/M08_clasesyOOP/Prep_Course_Homework_08.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python +# coding: utf-8 + +# ## Clases y Programación Orientada a Objetos + +# 1) Crear la clase vehículo que contenga los atributos:
+# Color
+# Si es moto, auto, camioneta ó camión
+# Cilindrada del motor + +# In[1]: + + + + +# 2) A la clase Vehiculo creada en el punto 1, agregar los siguientes métodos:
+# Acelerar
+# Frenar
+# Doblar
+ +# In[5]: + + + + + +# 3) Instanciar 3 objetos de la clase vehículo y ejecutar sus métodos, probar luego el resultado + +# In[6]: + + + + + +# 4) Agregar a la clase Vehiculo, un método que muestre su estado, es decir, a que velocidad se encuentra y su dirección. Y otro método que muestre color, tipo y cilindrada + +# In[12]: + + + + + + +# In[13]: + + + + + + +# 5) Crear una clase que permita utilizar las funciones creadas en la práctica del módulo 7
+# Verificar Primo
+# Valor modal
+# Conversión grados
+# Factorial
+ +# In[33]: + + + + + + +# 6) Probar las funciones incorporadas en la clase del punto 5 + +# In[28]: + + + + + +# 7) Es necesario que la clase creada en el punto 5 contenga una lista, sobre la cual se aplquen las funciones incorporadas + +# In[55]: + + + + +# 8) Crear un archivo .py aparte y ubicar allí la clase generada en el punto anterior. Luego realizar la importación del módulo y probar alguna de sus funciones + +# In[1]: + + + + diff --git a/07 - Classes & OOP/README.md b/M08_clasesyOOP/README.md similarity index 96% rename from 07 - Classes & OOP/README.md rename to M08_clasesyOOP/README.md index 23afe1692..4ea3cc6f9 100644 --- a/07 - Classes & OOP/README.md +++ b/M08_clasesyOOP/README.md @@ -1,10 +1,11 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -## Grabación de la Clase 7 +## Principales Objetivos de Aprendizaje para esta Clase -
- -
+- Comprender el concepto de Porgramación Orientada a Objetos +- Comprender los conceptos de Clases y Objetos +- Conocer el concepto de Herencia +- Comprender los conceptos de Librerías y Módulos ## Clases y objetos (POO) @@ -507,18 +508,4 @@ Si queremos que el módulo sea recargado, tenemos que ser explícitos, haciendo >>> importlib.reload(mimodulo) ``` -## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/4aec1885136fdcff98899d2be13c8908b39f8b21/07%20-%20Classes%20&%20OOP/Prep_Course_Homework_07.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
+* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m08_clasesyoop** de Slack \ No newline at end of file diff --git a/07 - Classes & OOP/__pycache__/herramientas.cpython-39.pyc b/M08_clasesyOOP/__pycache__/herramientas.cpython-39.pyc similarity index 71% rename from 07 - Classes & OOP/__pycache__/herramientas.cpython-39.pyc rename to M08_clasesyOOP/__pycache__/herramientas.cpython-39.pyc index b954d34f0..94413e9c5 100644 Binary files a/07 - Classes & OOP/__pycache__/herramientas.cpython-39.pyc and b/M08_clasesyOOP/__pycache__/herramientas.cpython-39.pyc differ diff --git a/07 - Classes & OOP/herramientas.py b/M08_clasesyOOP/herramientas.py similarity index 100% rename from 07 - Classes & OOP/herramientas.py rename to M08_clasesyOOP/herramientas.py diff --git a/08 - Error Handling/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-Copy1-checkpoint.ipynb b/M09_errorhandling/Prep_Course_Homework_09-Resuelto.ipynb similarity index 73% rename from 08 - Error Handling/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-Copy1-checkpoint.ipynb rename to M09_errorhandling/Prep_Course_Homework_09-Resuelto.ipynb index 5fbdeb02f..61eea5c4b 100644 --- a/08 - Error Handling/.ipynb_checkpoints/Prep_Course_Homework_08-Resuelto-Copy1-checkpoint.ipynb +++ b/M09_errorhandling/Prep_Course_Homework_09-Resuelto.ipynb @@ -1,6 +1,7 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -8,56 +9,57 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato?" + "1) Con la clase creada en el módulo 8, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato?" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import sys\n", - "sys.path.append(r'/C:/Users/lopez/Documents/Henry/Repos/Python-Prep/08 - Error Handling/herramientas.py')" + "sys.path.append(r'/C:/Users/lopez/Documents/Henry/Repos/Python-Prep/07 - Classes & OOP/herramientas.py') # Agrega la ruta al archivo 'herramientas.py' al sys.path\n" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "import herramientas as h" + "import herramientas as h #se importa el módulo llamado 'herramientas' y se le asigna un alias 'h' utilizando la palabra clave as. " ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { "ename": "ValueError", - "evalue": "Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros", + "evalue": "Se ha creado una lista vacía. Se esperaba una lista de núemeros enteros", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4832/2426941956.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mh1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHerramientas\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hola'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\lopez\\Documents\\Henry\\Repos\\Python-Prep\\08 - Error Handling\\herramientas.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlista_numeros\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlista\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlista_numeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: Se ha creado con un elemento 0. Se esperaba una lista de núemeros enteros" + "Cell \u001b[1;32mIn[4], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m h1 \u001b[39m=\u001b[39m h\u001b[39m.\u001b[39;49mHerramientas(\u001b[39m'\u001b[39;49m\u001b[39mhola\u001b[39;49m\u001b[39m'\u001b[39;49m)\n", + "File \u001b[1;32mc:\\Users\\crisz\\Desktop\\borrar1\\Python-Prep\\08 - Error Handling\\herramientas.py:5\u001b[0m, in \u001b[0;36mHerramientas.__init__\u001b[1;34m(self, lista_numeros)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39mif\u001b[39;00m (\u001b[39mtype\u001b[39m(lista_numeros) \u001b[39m!=\u001b[39m \u001b[39mlist\u001b[39m):\n\u001b[0;32m 4\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mlista \u001b[39m=\u001b[39m []\n\u001b[1;32m----> 5\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m'\u001b[39m\u001b[39mSe ha creado una lista vacía. Se esperaba una lista de núemeros enteros\u001b[39m\u001b[39m'\u001b[39m) \n\u001b[0;32m 6\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 7\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mlista \u001b[39m=\u001b[39m lista_numeros\n", + "\u001b[1;31mValueError\u001b[0m: Se ha creado una lista vacía. Se esperaba una lista de núemeros enteros" ] } ], "source": [ - "h1 = h.Herramientas('hola')" + "h1 = h.Herramientas('hola') #si se envia un tipo de dato diferente al esperado, arroja error" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -65,6 +67,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -73,28 +76,28 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import importlib\n", - "importlib.reload(h)" + "import importlib #se importa el módulo importlib, el cual proporciona funciones para recargar (reload) módulos previamente importados. \n", + "importlib.reload(h) # la función reload() de importlib recargar el módulo herramientas (previamente importado y asignado a un alias h)." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -103,24 +106,23 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n", "Los parametros esperados son: ['celsius', 'kelvin', 'farenheit']\n" ] }, { "data": { "text/plain": [ - "[2, 3, 5, 6, 2]" + "[]" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -131,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -140,7 +142,7 @@ "[35.6, 37.4, 41.0, 42.8, 35.6]" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -150,6 +152,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -167,7 +170,7 @@ "metadata": {}, "outputs": [], "source": [ - "import unittest" + "import unittest #se importa el módulo unittest,es un marco de trabajo integrado en Python para escribir y ejecutar pruebas unitarias. " ] }, { @@ -198,6 +201,57 @@ " self.assertEqual(moda, resultado)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# comentado paso a paso\n", + "class ProbandoMiClase(unittest.TestCase):\n", + " \"\"\"\n", + " Clase de prueba para la clase Herramientas del módulo 'h'.\n", + " Esta clase hereda de unittest.TestCase, lo que la convierte en una clase de prueba.\n", + " \"\"\"\n", + "\n", + " def test_crear_objeto1(self):\n", + " \"\"\"\n", + " Método de prueba para verificar el comportamiento al crear un objeto Herramientas con un parámetro inválido.\n", + " \"\"\"\n", + " param = 'hola'\n", + " self.assertRaises(ValueError, h.Herramientas, param)\n", + " # self.failUnlessRaises(ValueError, h.Herramientas, param)\n", + " # Se utiliza assertRaises para verificar que al crear un objeto Herramientas con un parámetro inválido\n", + " # se genere una excepción de tipo ValueError. Se espera que el código en el bloque de prueba genere esta excepción.\n", + " # Si no se genera la excepción, el caso de prueba falla.\n", + "\n", + " def test_crear_objeto2(self):\n", + " \"\"\"\n", + " Método de prueba para verificar el comportamiento al crear un objeto Herramientas con una lista válida como parámetro.\n", + " \"\"\"\n", + " param = [1, 2, 2, 5]\n", + " h1 = h.Herramientas(param)\n", + " self.assertEqual(h1.lista, param)\n", + " # Se utiliza assertEqual para verificar que la lista almacenada en el objeto h1 de tipo Herramientas\n", + " # sea igual a la lista param proporcionada como parámetro al crear el objeto.\n", + " # Si las listas no son iguales, el caso de prueba falla.\n", + "\n", + " def test_valor_modal(self):\n", + " \"\"\"\n", + " Método de prueba para verificar el comportamiento del método valor_modal de la clase Herramientas.\n", + " \"\"\"\n", + " lis = [1, 2, 1, 3]\n", + " h1 = h.Herramientas(lis)\n", + " moda, veces = h1.valor_modal(False)\n", + " moda = [moda]\n", + " moda.append(veces)\n", + " resultado = [1, 2]\n", + " self.assertEqual(moda, resultado)\n", + " # Se utiliza assertEqual para verificar que el valor de moda y la cantidad de repeticiones devueltos\n", + " # por el método valor_modal de la clase Herramientas sean iguales a los valores esperados almacenados en resultado.\n", + " # Si los valores no coinciden, el caso de prueba falla.\n" + ] + }, { "cell_type": "code", "execution_count": 12, @@ -233,6 +287,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -262,6 +317,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -340,6 +396,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -419,6 +476,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -518,7 +576,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/08 - Error Handling/Prep_Course_Homework_08-Resuelto.py b/M09_errorhandling/Prep_Course_Homework_09-Resuelto.py similarity index 98% rename from 08 - Error Handling/Prep_Course_Homework_08-Resuelto.py rename to M09_errorhandling/Prep_Course_Homework_09-Resuelto.py index 824084385..f7ea9384d 100644 --- a/08 - Error Handling/Prep_Course_Homework_08-Resuelto.py +++ b/M09_errorhandling/Prep_Course_Homework_09-Resuelto.py @@ -3,7 +3,7 @@ # ## Manejo de errores -# 1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato? +# 1) Con la clase creada en el módulo 8, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato? # In[1]: diff --git a/M09_errorhandling/Prep_Course_Homework_09.ipynb b/M09_errorhandling/Prep_Course_Homework_09.ipynb new file mode 100644 index 000000000..e3e771b0b --- /dev/null +++ b/M09_errorhandling/Prep_Course_Homework_09.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Manejo de errores" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) En la función que hace la conversión de grados, validar que los parámetros enviados sean los esperados, de no serlo, informar cuáles son los valores esperados." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Importar el modulo \"unittest\" y crear los siguientes casos de pruebas sobre la clase utilizada en el punto 2
\n", + "Creacion del objeto incorrecta
\n", + "Creacion correcta del objeto
\n", + "Metodo valor_modal()
\n", + "\n", + "Se puede usar \"raise ValueError()\" en la creación de la clase para verificar el error. Investigar sobre esta funcionalidad." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Probar una creación incorrecta y visualizar la salida del \"raise\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Agregar casos de pruebas para el método verifica_primos() realizando el cambio en la clase, para que devuelva una lista de True o False en función de que el elemento en la posisicón sea o no primo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7) Agregar casos de pruebas para el método conversion_grados()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8) Agregar casos de pruebas para el método factorial()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "c85384e4cb51c8b72350f3a8712cc8351fdc3955e32a27f9b60c6242ab125f01" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/08 - Error Handling/Prep_Course_Homework_08.md b/M09_errorhandling/Prep_Course_Homework_09.md similarity index 85% rename from 08 - Error Handling/Prep_Course_Homework_08.md rename to M09_errorhandling/Prep_Course_Homework_09.md index 0f8ea6086..c0223d19a 100644 --- a/08 - Error Handling/Prep_Course_Homework_08.md +++ b/M09_errorhandling/Prep_Course_Homework_09.md @@ -17,6 +17,4 @@ Se puede usar "raise ValueError()" en la creación de la clase para verificar el 7) Agregar casos de pruebas para el método conversion_grados() -8) Agregar casos de pruebas para el método factorial() - -9) Completar el código en las funciones del archivo "checkpoint.py" y probarlo a partir de la ejecución del script "tests.py" \ No newline at end of file +8) Agregar casos de pruebas para el método factorial() \ No newline at end of file diff --git a/M09_errorhandling/Prep_Course_Homework_09.py b/M09_errorhandling/Prep_Course_Homework_09.py new file mode 100644 index 000000000..837b0a4d9 --- /dev/null +++ b/M09_errorhandling/Prep_Course_Homework_09.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# coding: utf-8 + +# ## Manejo de errores + +# 1) Con la clase creada en el módulo 7, tener en cuenta diferentes casos en que el código pudiera arrojar error. Por ejemplo, en la creación del objeto recibimos una lista de números enteros pero ¿qué pasa si se envía otro tipo de dato? + +# In[1]: + + + + +# 2) En la función que hace la conversión de grados, validar que los parámetros enviados sean los esperados, de no serlo, informar cuáles son los valores esperados. + +# In[5]: + + + + + +# 3) Importar el modulo "unittest" y crear los siguientes casos de pruebas sobre la clase utilizada en el punto 2
+# Creacion del objeto incorrecta
+# Creacion correcta del objeto
+# Metodo valor_modal()
+# +# Se puede usar "raise ValueError()" en la creación de la clase para verificar el error. Investigar sobre esta funcionalidad. + +# In[9]: + + + + +# 4) Probar una creación incorrecta y visualizar la salida del "raise" + +# In[13]: + + + + +# 6) Agregar casos de pruebas para el método verifica_primos() realizando el cambio en la clase, para que devuelva una lista de True o False en función de que el elemento en la posisicón sea o no primo + +# In[14]: + + + + +# 7) Agregar casos de pruebas para el método conversion_grados() + +# In[17]: + + + + +# 8) Agregar casos de pruebas para el método factorial() + +# In[20]: + + + + diff --git a/08 - Error Handling/README.md b/M09_errorhandling/README.md similarity index 93% rename from 08 - Error Handling/README.md rename to M09_errorhandling/README.md index 3a89c0288..f59ec9305 100644 --- a/08 - Error Handling/README.md +++ b/M09_errorhandling/README.md @@ -1,11 +1,5 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -## Grabación de la Clase 8 - -
- -
- ## Manejo de Errores ### Pruebas de caja negra @@ -251,18 +245,6 @@ Para realizar una afirmación en nuestro programa lo hacemos con la expresión a - Es fuertemente tipado, lo que significa que el tipo no cambia de manera repentina. Para que se produzca un cambio de tipo tiene que hacer una conversión explícita. - Es multiplataforma, ya que un código escrito en macOS funciona en Windows o Linux y viceversa. -## Homework - -Completa la tarea descrita en el archivo [README](https://github.com/soyHenry/Python-Prep/blob/4aec1885136fdcff98899d2be13c8908b39f8b21/08%20-%20Error%20Handling/Prep_Course_Homework_08.md) - - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
+ +* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m05_estructuradedatos** de Slack + diff --git a/08 - Error Handling/__pycache__/checkpoint.cpython-39.pyc b/M09_errorhandling/__pycache__/checkpoint.cpython-39.pyc similarity index 100% rename from 08 - Error Handling/__pycache__/checkpoint.cpython-39.pyc rename to M09_errorhandling/__pycache__/checkpoint.cpython-39.pyc diff --git a/08 - Error Handling/__pycache__/herramientas.cpython-39.pyc b/M09_errorhandling/__pycache__/herramientas.cpython-39.pyc similarity index 100% rename from 08 - Error Handling/__pycache__/herramientas.cpython-39.pyc rename to M09_errorhandling/__pycache__/herramientas.cpython-39.pyc diff --git a/08 - Error Handling/herramientas.py b/M09_errorhandling/herramientas.py similarity index 100% rename from 08 - Error Handling/herramientas.py rename to M09_errorhandling/herramientas.py diff --git a/09 - Entrada-Salida y Manejo de Archivos/Prep_Course_Homework_09-Resuelto.ipynb b/M10_manejodearchivos/Prep_Course_Homework_09-Resuelto.ipynb similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/Prep_Course_Homework_09-Resuelto.ipynb rename to M10_manejodearchivos/Prep_Course_Homework_09-Resuelto.ipynb diff --git a/09 - Entrada-Salida y Manejo de Archivos/Prep_Course_Homework_09-Resuelto.py b/M10_manejodearchivos/Prep_Course_Homework_09-Resuelto.py similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/Prep_Course_Homework_09-Resuelto.py rename to M10_manejodearchivos/Prep_Course_Homework_09-Resuelto.py diff --git a/09 - Entrada-Salida y Manejo de Archivos/Prep_Course_Homework_09.md b/M10_manejodearchivos/Prep_Course_Homework_09.md similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/Prep_Course_Homework_09.md rename to M10_manejodearchivos/Prep_Course_Homework_09.md diff --git a/09 - Entrada-Salida y Manejo de Archivos/__pycache__/herramientas.cpython-39.pyc b/M10_manejodearchivos/__pycache__/herramientas.cpython-39.pyc similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/__pycache__/herramientas.cpython-39.pyc rename to M10_manejodearchivos/__pycache__/herramientas.cpython-39.pyc diff --git a/09 - Entrada-Salida y Manejo de Archivos/clase09_ej1.py b/M10_manejodearchivos/clase09_ej1.py similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/clase09_ej1.py rename to M10_manejodearchivos/clase09_ej1.py diff --git a/09 - Entrada-Salida y Manejo de Archivos/clase09_ej2.csv b/M10_manejodearchivos/clase09_ej2.csv similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/clase09_ej2.csv rename to M10_manejodearchivos/clase09_ej2.csv diff --git a/09 - Entrada-Salida y Manejo de Archivos/clase09_ej2.py b/M10_manejodearchivos/clase09_ej2.py similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/clase09_ej2.py rename to M10_manejodearchivos/clase09_ej2.py diff --git "a/09 - Entrada-Salida y Manejo de Archivos/clase09_monta\303\261as_altas/clase09_ej3.csv" "b/M10_manejodearchivos/clase09_monta\303\261as_altas/clase09_ej3.csv" similarity index 100% rename from "09 - Entrada-Salida y Manejo de Archivos/clase09_monta\303\261as_altas/clase09_ej3.csv" rename to "M10_manejodearchivos/clase09_monta\303\261as_altas/clase09_ej3.csv" diff --git a/09 - Entrada-Salida y Manejo de Archivos/datos.txt b/M10_manejodearchivos/datos.txt similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/datos.txt rename to M10_manejodearchivos/datos.txt diff --git a/09 - Entrada-Salida y Manejo de Archivos/ejemplo_parametros.py b/M10_manejodearchivos/ejemplo_parametros.py similarity index 100% rename from 09 - Entrada-Salida y Manejo de Archivos/ejemplo_parametros.py rename to M10_manejodearchivos/ejemplo_parametros.py diff --git a/Prep_Course 01/README.json b/Prep_Course 01/README.json deleted file mode 100644 index 5a6df59be..000000000 --- a/Prep_Course 01/README.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "lessonTitle": "Prep-Course 7a25-02-2022", - "permalink": "/Prep-Course_01/", - "eleventyNavigation": { - "key": "En Vivo 01", - "order": 11 - }, - "feedbackID": "Prep-Course_01" -} diff --git a/Prep_Course 01/README.md b/Prep_Course 01/README.md deleted file mode 100644 index 207690761..000000000 --- a/Prep_Course 01/README.md +++ /dev/null @@ -1,75 +0,0 @@ -![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) - -# Grabaciones de las Clases del Curso Preparatorio entre el 7 y 25 de Febrero 2022 - -## Grabación de la Clase 1 - -
- -
- -## Grabación de la Clase 2 - -
- -
- -## Grabación de la Clase 3 - -
- -
- -## Grabación de la Clase 4 - -
- -
- -## Grabación de la Clase 5 - -
- -
- -## Grabación de la Clase 6 - -
- -
- -## Grabación de la Clase 7 - -
- -
- -## Grabación de la Clase 8 - -
- -
- -## Grabación de la Clase 9 - -
- -
- -## Grabación de la Clase 10 - -
- -
- - - - - -
- - -
- Hacé click acá para dejar tu feedback sobre esta clase. -
-
diff --git a/README.json b/README.json deleted file mode 100644 index 495014ce9..000000000 --- a/README.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "permalink": "/index.html", - "layout": "intro", - "eleventyNavigation": { - "key": "Intro", - "order": 0 - } -} diff --git a/README.md b/README.md index bb1d1b7e0..15a394468 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,45 @@ ![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png) -# Prep Course -## Open House +# **🧑‍💻 PREP COURSE | HENRY 👩‍💻** -
- -
+## **📌 INTRODUCCIÓN** -## Grabación de la Introducción +¡Hola 😄! Bienvenid@ al Prep Course para la carrera de Data Science -
- -
+En este curso introductorio podrás aprender y practicar todo el contenido que necesitas para alcanzar un nivel intermedio en Python, el lenguaje con el que vas a trabajar en la carrera. Encontrarás todo el material que necesitas para lograr avanzar en la evaluación del Henry Challenge (último paso para ingresar a la carrera de Data). -## PASOS PARA RESOLVER EL HENRY CHALLENGE: +
-### 1. FORK +## **🔎 ¿QUÉ ES EL PREP COURSE?** -Primero debes forkear el repo que te indicaremos, haciendo click en el botón `fork` de arriba a la derecha. +El Prep Course (curso preparatorio) es un curso diseñado con la finalidad de nivelar a todos nuestros aplicantes. Con este curso darás tus primeros pasos en el mundo de la tecnología y aprenderás esos conceptos básicos que son necesarios para poder realizar la carrera. -Una vez que tengas una copia de este repo en tu cuenta de `github`, cloná el repo dentro de una nueva carpeta (asegurate de no utilizar la misma que el prep curse). Una vez clonado entrá a esa carpeta y ejecutá los siguientes comandos: +El curso consiste en una serie de videos, material teórico y ejercicios con los que podrás aprender nuestro lenguaje de desarrollo: Python. Puedes avanzar con el contenido a tu ritmo y de manera asincrónica (es decir, en los horarios y tiempos que tu prefieras).Una vez que hayas terminado de estudiarlo, podrás continuar con el contenido de matemática que se encuentra en: [Prep de Matemática](math.prep.soyhenry.com) + Cuando hayas finalizado, podrás inscribirte para realizar el Henry Challenge. - python tests.py +
->Si ves los tests fallando, estás listo para comenzar, si no lee bien el output para identificar el error. +## **📖 ¿QUÉ ES EL HENRY CHALLENGE?** -### 2. RESOLVER EL HENRY CHALLENGE +Es un examen en el que evaluamos los conceptos que se aprenden durante el Prep Course. El examen tiene la finalidad de asegurarnos que realmente has adquirido los conocimientos, dado que tenerlos bien claros es la clave del éxito para que puedas avanzar sin problemas dentro de la carrera. El examen se realiza todos sábado por medio sábados, con previo registro e [inscripción](https://admissions.soyhenry.com/ ). Podrás rendirlo hasta 3 veces. Tambien incluye una evaluación de Matematica, pero solamente para conocer tu nivel. -Tu tarea es completar el código en `checkpoint.py` de tal forma que pasen la mayoría de los tests, incluido el extra credit. +
-### 3. ENTREGAR TU CHECKPOINT +## **🤨 ¿QUÉ PUEDO HACER SI TENGO DUDAS?** -Correr por ultima vez los tests y verificar cuantos pasan. Ten en cuenta que si te aparece "1 failed;1 total" es porque tienes un error de sintaxis: seguramente falta o sobra un corchete, paréntesis, dos puntos, etc. -Saca un print de pantalla de tus tests. -Luego, debes subir un commit a tu repo. Para hacerlo, debes ejecutar el siguiente comando: - git add . - git commit -m 'checkpoint commit' - git push origin main -Una vez finalizado, chequea: -1. Que veas los cambios reflejados en el repo de tu cuenta de github (entrando a tu repo desde el browser.) -2. Que no haya un require - solo debe haber codigo dentro de las funciones de cada ejercicio \ No newline at end of file +- **SLACK:** es nuestra plataforma de comunicación, donde podrás ponerte en contacto con nuestra comunidad que siempre te ayudará a resolver todas tus dudas. Encontrarás acceso a Slack desde la [plataforma de admisión](https://www.admissions.soyhenry.com/) o desde los mails que recibiste al momento de aplicar. + + + +
+ +## **😋 ¿CÓMO AVANZAR EN ESTE PROCESO?** + +Para avanzar debes seguir el material teórico junto con los videos de este curso introductorio. Para afianzar tus conocimientos y comenzar a practicar realiza cada una de estas **_Homeworks_**. Esto te facilitará resolver el Henry Challenge. + +Cualquier duda, nos puedes escribir a admisiones@soyhenry.com + +
diff --git "a/Simulaci\303\263n Challenge/README.md" "b/Simulaci\303\263n Challenge/README.md" new file mode 100644 index 000000000..05125dd2f --- /dev/null +++ "b/Simulaci\303\263n Challenge/README.md" @@ -0,0 +1,84 @@ +# HENRY CHALLENGE - Python y Matemática + +### Bienvenido al Henry Challenge sobre Python y Matemática para la carrera Data Science. + +

¡ Por favor lee TODO este material con atención !

+ +## INTRODUCCION + +El Henry Challenge es un desafío técnico donde evaluamos conceptos básicos sobre Python. +En esta instancia, buscamos asegurarnos que todos nuestros aplicantes tengan una base de conocimientos mínimos necesarios para luego seguir aprendiendo temas nuevos. + +>El Challenge debe resolverse de manera individual. Si te copias o recibes ayuda de compañeros, además de estar incumpliendo con las normas de Henry (lo que te dejaría afuera de la carrera), estarás perjudicándote a ti mismo, porque el primer día de clase estarías extremadamente perdido. + +¿Se puede volver a rendir el HC? +- Si, el HC se puede rendir tantas veces como ustedes quieran! No hay límite de intentos. + +¿Qué hago una vez entregado el HC? +- ¡A esperar! Los van a estar contactando en un plazo no mayor a una semana para confirmarles, tanto si quedaron, como si no lo hicieron. + +## PASOS PARA RESOLVER EL CHECKPOINT: + +### 1. FORK + +Primero debes forkear este repo, haciendo click en el botón `fork` de arriba a la derecha. + +Una vez que tengas una copia de este repo en tu cuenta de `github`, cloná el repo dentro de una nueva carpeta (asegurate de no utilizar la misma que el prep curse). Una vez clonado entrá a esa carpeta y ejecutá los siguientes comandos: + + python tests.py + +>Si ves los tests fallando, estás listo para comenzar, si no lee bien el output para identificar el error. + + +### 2. RESOLVER EL CHALLENGE DE PYTHON + +Tu tarea es completar el código en `checkpoint.py` de tal forma que pasen la mayoría de los tests, incluido el extra credit. + +### 3. RESOLVER EL CHALLENGE DE MATEMÁTICA + +Tu tarea será leer el enunciado y resolverlo en el formulario que se adjunta. + +### 4. ENTREGAR TU CHECKPOINT + +Correr por ultima vez los tests y verificar cuantos pasan. Ten en cuenta que si te aparece "1 failed;1 total" es porque tienes un error de sintaxis: seguramente falta o sobra un corchete, paréntesis, dos puntos, etc. +Saca un print de pantalla de tus tests. +Luego, debes subir un commit a tu repo. Para hacerlo, debes ejecutar el siguiente comando: + + git add . + git commit -m 'checkpoint commit' + git push origin main + +Una vez finalizado, chequea: +1. Que veas los cambios reflejados en el repo de tu cuenta de github (entrando a tu repo desde el browser.) +2. Que no haya un require - solo debe haber codigo dentro de las funciones de cada ejercicio + + + Atención: no debes realizar un commit después de la hora de entrega porque se anulara la totalidad del examen. +>Revisar la hora del entrega del examen en los emails que te llegaron. + +### ¿TENES ALGUN PROBLEMA / CONSULTA? + +1. Busca la solución en la "guía de errores comunes". + +2. Si no la encuentras, revisa el canal de #henry_challenge en Slack. Probablemente a algún compañero le paso algo similar y ya lo consulto. + +3. Si no encuentras la respuesta, puedes publicar un mensaje en dicho canal. + +> No se puede hacer consultas sobre la resolucion de los ejercicios. + +### GUIA DE ERRORES COMUNES + +Para identificar el error, vas a tener que leerlo en la consola. + +* 1 failed, 1 total: + 1. Tenes un error de sintaxis. Revisa el último ejercicio que hayas hecho, seguramente falta o sobra un corchete, paréntesis, dos puntos, etc. + +* Author identity unknown. + 1. Intenta ejecutar los siguientes comandos para configurar tu cuenta: + * git config --global user.name "Tu usuario de GitHub aca" + * git config --global user.email "Tu email aca" + + 2. Ingresa a [Github](https://docs.github.com/es/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) y sigue las instrucciones para configurar tu token. + +* La consola se tilda en `Runs`: + 1. Revisa tu código, tenes un bucle infinito. Tenes que checkear la condición de corte de tus bucles. diff --git a/08 - Error Handling/checkpoint.py "b/Simulaci\303\263n Challenge/checkpoint.py" similarity index 100% rename from 08 - Error Handling/checkpoint.py rename to "Simulaci\303\263n Challenge/checkpoint.py" diff --git a/08 - Error Handling/checkpoint_Resuelto.py "b/Simulaci\303\263n Challenge/checkpoint_Resuelto.py" similarity index 77% rename from 08 - Error Handling/checkpoint_Resuelto.py rename to "Simulaci\303\263n Challenge/checkpoint_Resuelto.py" index 0e8711c67..a82d34605 100644 --- a/08 - Error Handling/checkpoint_Resuelto.py +++ "b/Simulaci\303\263n Challenge/checkpoint_Resuelto.py" @@ -12,14 +12,14 @@ def Factorial(numero): Factorial(-2) debe retornar nulo ''' #Tu código aca: - if (type(numero) != int): + if type(numero) != int: return None - if (numero < 1): + if numero < 1: return None factorial = 1 - while(numero > 1): - factorial = factorial * numero - numero -= 1 + while (numero > 1): + factorial = factorial * numero #(factorial*=numero) + numero = numero - 1 #(numero-=1) return factorial def EsPrimo(valor): @@ -34,12 +34,15 @@ def EsPrimo(valor): EsPrimo(8) debe retornar False ''' #Tu código aca: - if (type(valor) != int): + if type(valor) != int: return None - for i in range(2, (int(valor / 2) + 1)): - if valor % i == 0: - return False - return True + + primo = True + for i in range(2,valor): + if (valor%i == 0): + primo = False + break + return primo def ClaseAnimal(especie, color): ''' @@ -62,13 +65,12 @@ def ClaseAnimal(especie, color): #Tu código aca: class Animal: def __init__(self, especie, color): - self.Especie = especie - self.Color = color - self.Edad = 0 - + self.edad = 0 + self.especie = especie + self.color = color + def CumplirAnios(self): - self.Edad += 1 - return self.Edad - - a = Animal(especie, color) - return a + self.edad = self.edad + 1 #(self.edad += 1) + return self.edad + + return Animal(especie,color) diff --git a/08 - Error Handling/tests.py "b/Simulaci\303\263n Challenge/tests.py" similarity index 89% rename from 08 - Error Handling/tests.py rename to "Simulaci\303\263n Challenge/tests.py" index 249b3f514..2c1d8fb50 100644 --- a/08 - Error Handling/tests.py +++ "b/Simulaci\303\263n Challenge/tests.py" @@ -63,10 +63,10 @@ def test_ClaseAnimal_03(self): hc_errores = len(resultado_test.result.errors) hc_ok = hc_tests - hc_fallas - hc_errores -#archivo_test = open('resultado_test.csv', 'w') -#archivo_test.write('Total_Tests,Total_Fallas,Total_Errores,Total_Correctos\n') -#archivo_test.write(str(hc_tests)+','+str(hc_fallas)+','+str(hc_errores)+','+str(hc_ok)+'\n') -#archivo_test.close() +archivo_test = open('resultado_test.csv', 'w') +archivo_test.write('Total_Tests,Total_Fallas,Total_Errores,Total_Correctos\n') +archivo_test.write(str(hc_tests)+','+str(hc_fallas)+','+str(hc_errores)+','+str(hc_ok)+'\n') +archivo_test.close() print('Resumen') print('Total Tests:', str(hc_tests)) diff --git a/package.json b/package.json deleted file mode 100644 index 2275a2545..000000000 --- a/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "data", - "version": "1.0.0", - "description": "

", - "main": "index.js", - "scripts": { - "start": "eleventy --serve", - "build": "eleventy", - "test": "jest --collectCoverage=false --testResultsProcessor ./.reporter/index.js --detectOpenHandles" - }, - "devDependencies": { - "@11ty/eleventy-plugin-syntaxhighlight": "^3.1.3", - "eslint": "^7.32.0", - "jest": "^27.2.0", - "standard": "^16.0.4" - }, - "author": "Henry", - "license": "ISC", - "jest": { - "testURL": "http://localhost/" - }, - "dependencies": { - "@11ty/eleventy": "^0.12.1", - "@11ty/eleventy-cache-assets": "^2.3.0", - "@11ty/eleventy-navigation": "^0.3.2", - "bootstrap": "^5.1.3", - "eleventy-navigation-bootstrap": "^0.1.2", - "eleventy-plugin-toc": "^1.1.5", - "git-remote-origin-url": "^3.1.0", - "git-url-parse": "^11.6.0", - "henry-reader-bar": "https://d31uz8lwfmyn8g.cloudfront.net/Modules/henry-reader-bar-0.2.0.tgz", - "henry-reading-time": "https://d31uz8lwfmyn8g.cloudfront.net/Modules/henry-reading-time-0.1.0.tgz", - "markdown-it": "^12.3.0", - "markdown-it-anchor": "^8.4.1", - "markdown-it-highlightjs": "^3.5.0", - "simple-git": "^2.45.1" - } -}