Skip to content

Commit

Permalink
deploy: 94f1949
Browse files Browse the repository at this point in the history
  • Loading branch information
javlintor committed Nov 6, 2023
1 parent 16be465 commit 0adce31
Show file tree
Hide file tree
Showing 17 changed files with 236 additions and 99 deletions.
132 changes: 114 additions & 18 deletions _sources/notebooks/introduction-python/other-data-structures.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,15 @@
"```"
]
},
{
"cell_type": "markdown",
"source": [
"El segundo argumento de la funión `isinstance` puede ser una tupla de tipos, de modo que devolverá `True` si el objeto es de alguno de los tipos que forman la tupla."
],
"metadata": {
"id": "MDLXPdiRM3oL"
}
},
{
"cell_type": "code",
"execution_count": null,
Expand Down Expand Up @@ -740,20 +749,6 @@
":::"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "afh-nIRFDC74"
},
"source": [
":::{exercise}\n",
":label: other-data-structures-slices-4\n",
"\n",
"Dada una secuencia `seq` y un índice negativo `neg_index`, escribe la fórmula que nos daría el índice positivo correspondiente.\n",
"\n",
":::"
]
},
{
"cell_type": "markdown",
"metadata": {
Expand Down Expand Up @@ -1135,7 +1130,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 9,
"metadata": {
"id": "_1UwieAN3iOY"
},
Expand Down Expand Up @@ -1283,6 +1278,108 @@
"list(example_dict.items())"
]
},
{
"cell_type": "markdown",
"source": [
"Los diccionarios son objetos **iterables**"
],
"metadata": {
"id": "_HlIr3SKPzZn"
}
},
{
"cell_type": "code",
"source": [
"x, s = {\"a\": \"foo\", 1: \"bar\"}"
],
"metadata": {
"id": "bUtW1kN1QI7R"
},
"execution_count": 5,
"outputs": []
},
{
"cell_type": "code",
"source": [
"x"
],
"metadata": {
"id": "00SkGYQkQVa1",
"outputId": "6cdd42a9-ee83-46fa-a342-82ad9a8fc8f5",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 36
}
},
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'a'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"source": [
"s"
],
"metadata": {
"id": "Yp0TFrp1QXvD",
"outputId": "cbca2368-9c9c-4ec7-9106-2fd8bfbd4179",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"source": [
"for k in example_dict:\n",
" print(k)"
],
"metadata": {
"id": "JyLAVsNzQfOy",
"outputId": "edd2cff1-b22d-49f0-89f1-65e84dd272b7",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"key1\n",
"key2\n",
"key3\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
Expand Down Expand Up @@ -1465,7 +1562,7 @@
"source": [
"Los **generadores** nos permiten generar en forma de promesa un número arbitrario de items sin necesidad de guardarlos en memoria. Se trata de un objeto iterable, pero que genera cada uno de sus miembros en orden cuando las iteraciones lo vayan requiriendo. Ya hemos visto un ejemplo de generador cuando hemos utilizado la función `range`. Es bastante común contruir listas, tuplas o conjuntos a partir de un generador.\n",
"\n",
"La sintaxis para crear un generador es la siguiente\n",
"Una sintaxis disponible para crear un generador es la siguiente\n",
"\n",
"```\n",
"(<expression> for <var> in <iterable> if <condition>)\n",
Expand Down Expand Up @@ -1949,8 +2046,7 @@
],
"metadata": {
"colab": {
"provenance": [],
"toc_visible": true
"provenance": []
},
"kernelspec": {
"display_name": "Python 3.9.1 64-bit",
Expand Down
8 changes: 4 additions & 4 deletions notebooks/introduction-python/classes.html
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,7 @@ <h1>Clases<a class="headerlink" href="#clases" title="Permalink to this heading"
</div>
<div class="exercise admonition" id="classes-example">

<p class="admonition-title"><span class="caption-number">Exercise 40 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 39 </span></p>
<section id="exercise-content">
<p>Crea una clase <code class="docutils literal notranslate"><span class="pre">Perro</span></code> que tenga los atributos <code class="docutils literal notranslate"><span class="pre">nombre</span></code> y <code class="docutils literal notranslate"><span class="pre">edad</span></code> y los siguientes métodos:</p>
<ul class="simple">
Expand Down Expand Up @@ -662,7 +662,7 @@ <h2>Métodos especiales<a class="headerlink" href="#metodos-especiales" title="P
</div>
<div class="exercise admonition" id="classes-point">

<p class="admonition-title"><span class="caption-number">Exercise 41 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 40 </span></p>
<section id="exercise-content">
<p>Crea la clase <code class="docutils literal notranslate"><span class="pre">PointV3</span></code> copiando el código de <code class="docutils literal notranslate"><span class="pre">PointV2</span></code> y añadiendo el método especial <code class="docutils literal notranslate"><span class="pre">__add__</span></code> que nos permita sumar puntos del plano. Añade otro método que incluya un parámetro <code class="docutils literal notranslate"><span class="pre">p</span></code> para calcular la <a class="reference external" href="https://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm">norma p</a> de un punto. Crea otro método <code class="docutils literal notranslate"><span class="pre">dot</span></code> que implemente el producto escalar de los vectores correspondientes.</p>
</section>
Expand Down Expand Up @@ -735,7 +735,7 @@ <h2>Subclases y herencia<a class="headerlink" href="#subclases-y-herencia" title
<p>En este ejemplo, estamos accediendo a los métodos de la clase base mediante la función <code class="docutils literal notranslate"><span class="pre">super()</span></code>, en particular estamos creando los atributos correspondiente a la clase <code class="docutils literal notranslate"><span class="pre">PuntoV2</span></code> más el nuevo atributo <code class="docutils literal notranslate"><span class="pre">radio</span></code>. También estamos redefiniendo los métodos <code class="docutils literal notranslate"><span class="pre">distancia_al_origen</span></code>, <code class="docutils literal notranslate"><span class="pre">__eq__</span></code> y <code class="docutils literal notranslate"><span class="pre">__str__</span></code>. Finalmente, añadimos un nuevo método <code class="docutils literal notranslate"><span class="pre">calcula_area</span></code>, que no pertenece a la clase <code class="docutils literal notranslate"><span class="pre">Punto</span></code>.</p>
<div class="exercise admonition" id="chapter1-classes-bank-account">

<p class="admonition-title"><span class="caption-number">Exercise 42 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 41 </span></p>
<section id="exercise-content">
<p>Escribe una clase <code class="docutils literal notranslate"><span class="pre">Cuenta</span></code> que represente una cuenta bancaria. Dicha clase tendrá los siguientes atributos</p>
<ul class="simple">
Expand All @@ -748,7 +748,7 @@ <h2>Subclases y herencia<a class="headerlink" href="#subclases-y-herencia" title
</div>
<div class="solution dropdown admonition" id="notebooks/introduction-python/classes-solution-3">

<p class="admonition-title">Solution to<a class="reference internal" href="#chapter1-classes-bank-account"> Exercise 42</a></p>
<p class="admonition-title">Solution to<a class="reference internal" href="#chapter1-classes-bank-account"> Exercise 41</a></p>
<section id="solution-content">
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">random</span>

Expand Down
18 changes: 9 additions & 9 deletions notebooks/introduction-python/control-flow.html
Original file line number Diff line number Diff line change
Expand Up @@ -550,7 +550,7 @@ <h2>Bloques condicionales<a class="headerlink" href="#bloques-condicionales" tit
</div>
<div class="exercise admonition" id="control-flow-conditionals">

<p class="admonition-title"><span class="caption-number">Exercise 25 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 24 </span></p>
<section id="exercise-content">
<p>Dada una lista <code class="docutils literal notranslate"><span class="pre">my_list</span></code> y el siguiente código</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">first_item</span> <span class="o">=</span> <span class="kc">None</span>
Expand All @@ -564,7 +564,7 @@ <h2>Bloques condicionales<a class="headerlink" href="#bloques-condicionales" tit
</div>
<div class="exercise admonition" id="control-flow-conditionals-2">

<p class="admonition-title"><span class="caption-number">Exercise 26 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 25 </span></p>
<section id="exercise-content">
<p>Supón que la variable <code class="docutils literal notranslate"><span class="pre">my_file</span></code> contiene una cadena con el nombre de algún archivo, la cual tiene como mucho un punto que separa el nombre del archivo y el de la extensión. Escribe instrucciones para extraer el nombre del archivo. Por ejemplo,</p>
<ul class="simple">
Expand Down Expand Up @@ -599,7 +599,7 @@ <h3>Declaraciones <code class="docutils literal notranslate"><span class="pre">i
</div>
<div class="exercise admonition" id="control-flow-conditionals-3">

<p class="admonition-title"><span class="caption-number">Exercise 27 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 26 </span></p>
<section id="exercise-content">
<p>Considera el siguiente bloque condicional</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">x</span><span class="o">.</span><span class="n">isupper</span><span class="p">()</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
Expand Down Expand Up @@ -669,7 +669,7 @@ <h2>Bucles <code class="docutils literal notranslate"><span class="pre">for</spa
</div>
<div class="exercise admonition" id="control-flow-for">

<p class="admonition-title"><span class="caption-number">Exercise 28 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 27 </span></p>
<section id="exercise-content">
<p>Utilizando la cadena <code class="docutils literal notranslate"><span class="pre">ascii_lowercase</span></code> definida en el módulo <code class="docutils literal notranslate"><span class="pre">string</span></code>, escribe las letras consonantes del abecedario.</p>
</section>
Expand Down Expand Up @@ -711,7 +711,7 @@ <h2>Bucles while<a class="headerlink" href="#bucles-while" title="Permalink to t
</div></blockquote>
<div class="exercise admonition" id="control-flow-while">

<p class="admonition-title"><span class="caption-number">Exercise 29 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 28 </span></p>
<section id="exercise-content">
<p>Dada una lista <code class="docutils literal notranslate"><span class="pre">x</span></code> de números no negativos de longitud estrictamente positiva, añade a la lista la suma de la misma hasta que dicha suma sea mayor o igual a 100. Utiliza la función <code class="docutils literal notranslate"><span class="pre">sum</span></code>.</p>
</section>
Expand Down Expand Up @@ -806,7 +806,7 @@ <h2><code class="docutils literal notranslate"><span class="pre">break</span></c
</div>
<div class="exercise admonition" id="control-flow-break-continue">

<p class="admonition-title"><span class="caption-number">Exercise 30 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 29 </span></p>
<section id="exercise-content">
<p>Estudia cómo se comportan <code class="docutils literal notranslate"><span class="pre">break</span></code>, <code class="docutils literal notranslate"><span class="pre">continue</span></code> y <code class="docutils literal notranslate"><span class="pre">else</span></code> cuando tenemos varios bucles anidados.</p>
</section>
Expand Down Expand Up @@ -851,7 +851,7 @@ <h3><code class="docutils literal notranslate"><span class="pre">range</span></c
</div>
<div class="exercise admonition" id="control-flow-range">

<p class="admonition-title"><span class="caption-number">Exercise 31 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 30 </span></p>
<section id="exercise-content">
<p>Da un ejemplo de dos objetos <code class="docutils literal notranslate"><span class="pre">r1</span></code> y <code class="docutils literal notranslate"><span class="pre">r2</span></code> tipo <code class="docutils literal notranslate"><span class="pre">range</span></code> que sean iguales vía <code class="docutils literal notranslate"><span class="pre">==</span></code> pero que no tengan los mismos valores de <code class="docutils literal notranslate"><span class="pre">start</span></code>, <code class="docutils literal notranslate"><span class="pre">stop</span></code> o <code class="docutils literal notranslate"><span class="pre">step</span></code></p>
</section>
Expand Down Expand Up @@ -938,14 +938,14 @@ <h3><code class="docutils literal notranslate"><span class="pre">itertools.produ
<p>Otros muchos métodos para trabajar con objetos iterables se pueden encontrar <a class="reference external" href="https://docs.python.org/3/library/itertools.html">en la documentación de itertools</a></p>
<div class="exercise admonition" id="control-flow-iterables">

<p class="admonition-title"><span class="caption-number">Exercise 32 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 31 </span></p>
<section id="exercise-content">
<p>Usa la función <code class="docutils literal notranslate"><span class="pre">itertools.combinations</span></code> para calcular cúantas combinaciones de 3 elementos sin repetición de las letras de <code class="docutils literal notranslate"><span class="pre">string.ascii_lowecase</span></code> tienen al menos 2 vocales.</p>
</section>
</div>
<div class="exercise admonition" id="control-flow-zip">

<p class="admonition-title"><span class="caption-number">Exercise 33 </span></p>
<p class="admonition-title"><span class="caption-number">Exercise 32 </span></p>
<section id="exercise-content">
<p>Dada la lista</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">x_vals</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.6</span><span class="p">,</span> <span class="mf">0.9</span><span class="p">]</span>
Expand Down
Loading

0 comments on commit 0adce31

Please sign in to comment.