<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Leandro Guiñazú - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Leandro Guiñazú - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 13:48:25 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/leandro/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Introducción a Q-Learning: aprendizaje por refuerzo ]]>
                </title>
                <description>
                    <![CDATA[ Q-learning es un algoritmo de aprendizaje basado en valores en el aprendizaje por refuerzo. En este artículo, aprenderemos sobre Q-Learning y sus detalles:  * ¿Qué es Q-Learning?  * Matemáticas detrás de Q-Learning Q-Learning — Una visión general simplificada Digamos que un robot tiene que cruzar un laberinto y ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/introduccion-a-q-learning-aprendizaje-por-refuerzo/</link>
                <guid isPermaLink="false">63333b7e36d7bd096041b890</guid>
                
                    <category>
                        <![CDATA[ Aprendizaje Automatico ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Leandro Guiñazú ]]>
                </dc:creator>
                <pubDate>Mon, 23 Jan 2023 20:37:48 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/09/traduc-2.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/an-introduction-to-q-learning-reinforcement-learning-14ac0b4493cc/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">An introduction to Q-Learning: reinforcement learning</a>
      </p><p>Q-learning es un algoritmo de aprendizaje basado en valores en el aprendizaje por refuerzo. En este artículo, aprenderemos sobre Q-Learning y sus detalles:</p><ul><li>¿Qué es Q-Learning?</li><li>Matemáticas detrás de Q-Learning</li></ul><h3 id="q-learning-una-visi-n-general-simplificada"><strong>Q-Learning — Una v</strong>isión general simplificada</h3><p>Digamos que un <strong>robot</strong> tiene que cruzar un <strong>laberinto</strong> y llegar al punto final. Hay <strong>minas</strong>, y el robot sólo puede moverse una casilla a la vez. Si el robot pisa una mina, el robot muere. El robot tiene que llegar al punto final en el menor tiempo posible.</p><p>El sistema de puntuación/recompensa es el siguiente:</p><ol><li>El robot pierde 1 punto en cada paso. Esto se hace para que el robot tome el camino más corto y llegue a la meta lo más rápido posible.</li><li>Si el robot pisa una mina, la pérdida de puntos es de 100 y el juego termina.</li><li>Si el robot obtiene poder ⚡️, gana 1 punto.</li><li>Si el robot alcanza la meta, el robot obtiene 100 puntos.</li></ol><p>Ahora, la pregunta obvia es: <strong>¿Cómo entrenamos a un robot para llegar a la meta final con el camino más corto sin pisar una mina?</strong></p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/3JXI06jyHegMS1Yx8rhIq64gkYwSTM7ZhD25" class="kg-image" alt="3JXI06jyHegMS1Yx8rhIq64gkYwSTM7ZhD25" width="345" height="300" loading="lazy"></figure><p>Entonces, ¿cómo resolvemos esto?</p><h3 id="introducci-n-a-q-table">Introducción a Q-Table</h3><p>Q-Table es sólo un nombre elegante para una simple tabla de búsqueda donde calculamos las máximas recompensas futuras esperadas por acción en cada estado. Básicamente, esta tabla nos guiará a la mejor acción en cada estado.</p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/CcNuUwGnpHhRKkERqJJ6xl7N2W8jcl1yVdE8" class="kg-image" alt="CcNuUwGnpHhRKkERqJJ6xl7N2W8jcl1yVdE8" width="345" height="291" loading="lazy"></figure><p>Habrá cuatro números de acciones en cada mosaico sin bordes. Cuando un robot está en un estado puede moverse hacia arriba, hacia abajo, hacia la derecha o la izquierda.</p><p>Por lo tanto, modelemos este entorno en nuestra Q-Table.</p><p>En la Q-Table, las columnas son las acciones y las filas son los estados.</p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/AjVvggEquHgsnMN8i4N35AMfx53vZtELEL-l" class="kg-image" alt="AjVvggEquHgsnMN8i4N35AMfx53vZtELEL-l" width="315" height="296" loading="lazy"></figure><p>Cada puntuación de la Q-Table será la máxima recompensa futura esperada que el robot recibirá si toma esa acción en ese estado. Se trata de un proceso iterativo, ya que necesitamos mejorar la Q-Table en cada iteración.</p><p>Pero las preguntas son:</p><ul><li>¿Cómo calculamos los valores de la Q-Table?</li><li>¿Los valores están disponibles o predefinidos?</li></ul><p>Para aprender cada valor de la Q-Table, utilizamos el <strong>algoritmo Q-Learning<strong>.</strong></strong></p><h3 id="matem-ticas-el-algoritmo-q-learning"><strong>Matemáticas: </strong>el algoritmo Q-Learning</h3><h4 id="q-function"><strong>Q-function</strong></h4><p>La Q-function utiliza la ecuación de Bellman y toma dos entradas: estado (<strong>s</strong>) y acción (<strong>a</strong>).</p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/s39aVodqNAKMTcwuMFlyPSy76kzAmU5idMzk" class="kg-image" alt="s39aVodqNAKMTcwuMFlyPSy76kzAmU5idMzk" width="552" height="232" loading="lazy"></figure><p>Usando la función anterior, obtenemos los valores de <strong>Q</strong> para las celdas de la tabla.</p><p>Cuando empezamos, todos los valores de la Q-Table son ceros.</p><p>Hay un proceso iterativo de actualización de los valores. A medida que comenzamos a explorar el entorno, la Q-function nos da mejores y mejores aproximaciones, actualizando continuamente los Q-values de la tabla.</p><p>Ahora, vamos a entender cómo se lleva a cabo la actualización.</p><h3 id="introducci-n-al-proceso-del-algoritmo-q-learning">Introducción al proceso del algoritmo Q-Learning</h3><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/oQPHTmuB6tz7CVy3L05K1NlBmS6L8MUkgOud" class="kg-image" alt="oQPHTmuB6tz7CVy3L05K1NlBmS6L8MUkgOud" width="800" height="450" loading="lazy"></figure><p>Cada una de las cajas de colores es un paso. Vamos a entender cada uno de estos pasos en detalle.</p><h4 id="paso-1-inicializar-la-q-table">Paso 1: Inicializar la Q-Table</h4><p>Primero construiremos una Q-Table. Hay n columnas, donde n= número de acciones. Hay m filas, donde m= número de estados. Inicializaremos los valores en 0.</p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/TQ9Wy3guJHUecTf0YA5AuQgB9yVIohgLXKIn" class="kg-image" alt="TQ9Wy3guJHUecTf0YA5AuQgB9yVIohgLXKIn" width="322" height="308" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/gWnhK5oLqjcQkSzuuT8WgMVOGdCEp68Xvt6F" class="kg-image" alt="gWnhK5oLqjcQkSzuuT8WgMVOGdCEp68Xvt6F" width="345" height="300" loading="lazy"></figure><p>En nuestro ejemplo de robot, tenemos cuatro acciones (a=4) y cinco estados (s=5). Así que vamos a construir una tabla con cuatro columnas y cinco filas.</p><h4 id="pasos-2-y-3-elegir-y-realizar-una-acci-n">Pasos 2 y 3: elegir y realizar una acción</h4><p>Esta combinación de pasos se realiza por un tiempo indefinido. Esto significa que este paso se ejecuta hasta el momento en que detenemos el entrenamiento, o el bucle de entrenamiento se detiene como se define en el código.</p><p>Elegiremos una acción (a) en el estado (s) basado en la Q-Table. Pero, como se mencionó anteriormente, cuando el episodio comienza inicialmente, cada valor de Q es 0.</p><p>Así que ahora entra en juego el concepto de compensación de exploración y explotación.</p><p>Vamos a utilizar algo llamado la <strong>estrategia codiciosa de Épsilon</strong>.</p><p>Al principio, las tasas de épsilon serán más altas. El robot explorará el entorno y elegirá acciones al azar. La lógica detrás de esto es que el robot no sabe nada sobre el medio ambiente.</p><p>A medida que el robot explora el entorno, la velocidad de épsilon disminuye y el robot comienza a explotar el entorno.</p><p>Durante el proceso de exploración, el robot adquiere progresivamente más confianza en la estimación de los Q-values.</p><p><strong>Para el ejemplo del robot, hay cuatro acciones para elegir:</strong> arriba, abajo, izquierda y derecha. Comenzamos el entrenamiento ahora — nuestro robot no sabe nada sobre el medio ambiente. Así que el robot elige una acción al azar, la derecha.</p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/k0IARc6DzE3NBl2ugpWkzwLkR9N4HRkpSpjw" class="kg-image" alt="k0IARc6DzE3NBl2ugpWkzwLkR9N4HRkpSpjw" width="644" height="311" loading="lazy"></figure><p>Ahora podemos actualizar los Q-values para estar en el comienzo y mover a la derecha usando la ecuación de Bellman.</p><h4 id="pasos-4-y-5-evaluar"><strong>Pasos</strong> 4 y 5: evaluar</h4><p>Ahora hemos tomado una acción y observado un resultado y recompensa.Necesitamos actualizar la función Q(s,a).</p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/TnN7ys7VGKoDszzv3WDnr5H8txOj3KKQ0G8o" class="kg-image" alt="TnN7ys7VGKoDszzv3WDnr5H8txOj3KKQ0G8o" width="598" height="299" loading="lazy"></figure><p>En el caso del juego del robot, para reiterar la estructura de puntuación/recompensa es:</p><ul><li><strong><strong>power</strong></strong> = +1</li><li><strong><strong>mine</strong></strong> = -100</li><li><strong><strong>end</strong></strong> = +100</li></ul><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/EpQDzt7lCbmFyMVUzNGaPam3WCYNuD1-hVxu" class="kg-image" alt="EpQDzt7lCbmFyMVUzNGaPam3WCYNuD1-hVxu" width="611" height="123" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/xQtpQAhBocPC46-f0GRHDOK3ybrz4ZasaDo4" class="kg-image" alt="xQtpQAhBocPC46-f0GRHDOK3ybrz4ZasaDo4" width="643" height="306" loading="lazy"></figure><p>Repetiremos esto una y otra vez hasta que el aprendizaje se detenga. De esta manera se actualizará la Q-Table.</p><h3 id="vamos-a-recapitular">Vamos a recapitular<strong> </strong></h3><ul><li>Q-Learning es un algoritmo de aprendizaje por refuerzo basado en valores que se utiliza para encontrar la política óptima de selección de acciones utilizando una función Q.</li><li>Nuestro objetivo es maximizar la función de valor Q.</li><li>La Q-Table nos ayuda a encontrar la mejor acción para cada estado.</li><li>Ayuda a maximizar la recompensa esperada seleccionando la mejor de todas las acciones posibles.</li><li>Q(estado, acción) devuelve la recompensa futura esperada de esa acción en ese estado.</li><li>Esta función se puede estimar usando Q-Learning, que actualiza iterativamente Q(s,a) usando la <strong>ecuación de Bellman<strong>.</strong></strong></li><li>Inicialmente, exploramos el entorno y actualizamos la Q-Table. Cuando la Q-Table esté lista, el agente comenzará a explotar el entorno y comenzará a tomar mejores medidas.</li></ul><p>Si usted tiene alguna pregunta, por favor hágamelo saber en un comentario en <strong><a href="https://twitter.com/I_AM_ADL">Twitter</a></strong>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo autoformatear tu código Python con Black ]]>
                </title>
                <description>
                    <![CDATA[ Escribir código Python es una cosa y escribir el código en un buen formato es otra. Los programadores junior a menudo se centran en asegurarse de que su código está funcionando y olvidan formatearlo correctamente en el camino. Si escribes un programa pequeño (con 1000 líneas de código) probablemente puedas ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-autoformatear-tu-codigo-python-con-black/</link>
                <guid isPermaLink="false">632b624436d7bd096041ad2a</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Leandro Guiñazú ]]>
                </dc:creator>
                <pubDate>Thu, 17 Nov 2022 05:50:32 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/09/5f9c9b14740569d1a4ca2991.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/auto-format-your-python-code-with-black/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Auto-Format Your Python Code with Black</a>
      </p><p>Escribir código Python es una cosa y escribir el código en un buen formato es otra. Los programadores junior a menudo se centran en asegurarse de que su código está funcionando y olvidan formatearlo correctamente en el camino.</p><p>Si escribes un programa pequeño (con 1000 líneas de código) probablemente puedas escapar sin formatear tu código.</p><p>Pero a medida que los programas se vuelven más y más complejos, se vuelven más y más difíciles de entender. En algún momento (alrededor de 15.000 líneas de código), se hace más difícil entender el código que usted mismo escribió.</p><p>La diferencia entre trabajar con código bien formateado y trabajar con código mal formateado, es como la diferencia entre vivir en un palacio y vivir en una casa sucia.</p><h2 id="por-qu-es-importante-formatear-su-c-digo-python">Por qué es importante formatear su código Python</h2><h3 id="legibilidad">Legibilidad</h3><p>Formatear tu código te ayudará a <strong>leer</strong> tu código de manera <strong>eficiente.</strong> Parecerá más organizado, y cuando alguien mire tu código obtendrá una buena impresión.</p><h3 id="te-ayudar-en-tus-entrevistas-de-codificaci-n">Te ayudará en tus entrevistas de codificación</h3><p>Cuando estás en una entrevista de codificación, a veces a los entrevistadores les importará si estás formateando tu código correctamente. Si se olvida de hacer ese formateo, es posible que pierdas tus perspectivas de trabajo, sólo debido a tu código mal formateado. </p><h3 id="apoyo-al-equipo">Apoyo al equipo</h3><p>Formatear tu código se vuelve más importante cuando trabajas en <strong>equipo.</strong> Varias personas probablemente estarán trabajando en el mismo proyecto de software y el código que escribes debe ser entendido por tus compañeros de equipo. De lo contrario, se hace más difícil trabajar juntos.</p><h3 id="hace-que-sea-f-cil-detectar-bugs">Hace que sea fácil detectar bugs</h3><p>El código mal formateado puede hacer que sea muy difícil detectar <strong>errores</strong> o incluso trabajar en un programa. También es realmente horrible de ver. Es una ofensa para tus ojos.</p><h2 id="pylint-y-flake8">Pylint y Flake8</h2><p>La mayoría de los desarrolladores de Python disfrutan usando Pylint o Flake8 para revisar su código en busca de errores y guías de estilo.</p><p><strong>Pylint</strong> es una herramienta que busca errores en Python. Trata de hacer cumplir una norma de codificación y busca posibles errores en código. También puede buscar ciertos errores de tipo, puede recomendar sugerencias sobre cómo refactorizar determinados bloques y puede ofrecer detalles sobre la complejidad del código.</p><p><strong>Flake8</strong> es una librería Python que incluye <strong>PyFlakes</strong>, <strong>Pycodestyle</strong> y <strong><strong><strong><strong>Ned Batchelder’s McCabe script</strong></strong></strong></strong>. Es un gran kit de herramientas para comprobar su código base contra el estilo de codificación (<strong>PEP8</strong>), errores de programación como “library imported but unused”, “Undefined name” y código que no está indentado.</p><p>¡El problema es que estas herramientas sólo reportan los problemas que identifican en el código fuente y dejan la carga a los desarrolladores de Python para arreglarlo!</p><p>Pero, qué pasaría si tuviéramos una herramienta que pudiera identificar y resolver el problema al mismo tiempo. <strong>Black</strong> es una herramienta que le permite <strong>identificar errores</strong> y <strong>formatear su código Python</strong> al mismo tiempo. Por lo tanto, te hace más productivo.</p><h2 id="introducci-n-a-black">Introducción a Black</h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/05/1_bxzXidSUpkEaj7j0rC5ygg.png" class="kg-image" alt="1_bxzXidSUpkEaj7j0rC5ygg" width="600" height="400" loading="lazy"></figure><p>README del proyecto:</p><blockquote><em>Al utilizar Black, usted acepta ceder el control sobre los detalles minuciosos del formato manual. A cambio, Black te da velocidad, determinismo y libertad de las quejas de Pycodestyle sobre el formateo. Ahorrarás tiempo y energía mental para asuntos más importantes.</em></blockquote><p>Black puede reformatear todo el archivo en su lugar de acuerdo con el estilo de código Black. Ayuda a que tu cerebro se centre en el problema que quieres resolver y en soluciones de código, en lugar de distraerte con la estructura del código y pequeñas diferencias de estilo.</p><p>Así que vamos a ver cómo usarlo.</p><h3 id="instalar-black"><strong>Instalar Black</strong></h3><p>Black se puede instalar ejecutando <code><strong>pip install black</strong></code>. Requiere Python 3.6.2 o + para ejecutarse. Una vez que Black esté instalado, tendrás una nueva herramienta de línea de comandos llamada black disponible en tu shell, y estás listo para empezar.</p><p>Para empezar de inmediato con valores predeterminados sensibles, elija el archivo Python que desea formatear y luego escriba <strong>black filename.py</strong> en la terminal. Entonces Black formateará su archivo Python.</p><p>Ahora veremos lo que Black puede ayudarnos a hacer.</p><h3 id="formatear-un-nico-archivo"><strong>Formatear un único archivo</strong></h3><p>Veamos este sencillo ejemplo: aquí están mis dos funciones Python en mi archivo Python llamado <strong>sample_code.py.</strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/05/1_OKkCLUmuspv8IHiU25NVTw.png" class="kg-image" alt="1_OKkCLUmuspv8IHiU25NVTw" width="600" height="400" loading="lazy"><figcaption><strong>sample_code.py</strong></figcaption></figure><p>Puede utilizar <code><strong>black sample_code.py</strong></code> en el terminal para cambiar el formato. Después de ejecutar Black, verá la siguiente salida:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/05/d.png" class="kg-image" alt="d" width="600" height="400" loading="lazy"></figure><p>Después, puede abrir <strong>sample_code.py</strong> para ver el código Python formateado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/05/e.png" class="kg-image" alt="e" width="600" height="400" loading="lazy"></figure><p>El código Python ahora está formateado y es más legible.</p><h3 id="formatear-m-ltiples-archivos"><strong>Formatear múltiples archivos</strong></h3><p>Para formatear más de un archivo Python, escribir <code><strong>black folder_name/</strong></code> en la terminal.</p><figure class="kg-card kg-image-card"><img src="https://miro.medium.com/max/30/1*VLyk0_7wCnKFOEYPRBpABg.png?q=20" class="kg-image" alt="1*VLyk0_7wCnKFOEYPRBpABg" width="600" height="400" loading="lazy"></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/05/f.png" class="kg-image" alt="f" width="600" height="400" loading="lazy"><figcaption><strong>Formatear todos los archivos Python dentro de la carpeta</strong></figcaption></figure><p>Tres archivos Python dentro de la carpeta llamada python_with_black han sido reformateados.</p><h3 id="comprobando-archivos-para-formatear"><strong>Comprobando archivos para formatear</strong></h3><p>Si no quieres que Black cambie tu archivo, pero quieres saber si Black piensa que un archivo debe ser cambiado, puedes usar uno de los siguientes comandos:</p><p><code><strong>black --check .</strong></code>: Esto comprobará qué archivos Python pueden formatearse en la carpeta actual (pero en realidad no modifica el archivo Python).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/05/g.png" class="kg-image" alt="g" width="600" height="400" loading="lazy"><figcaption><strong>Comprueba los archivos para formatear</strong></figcaption></figure><p><code><strong>black --check --diff file_name.py</strong> </code>: Esto muestra lo que hay que hacer con el archivo, pero no lo modifica.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/05/h.png" class="kg-image" alt="h" width="600" height="400" loading="lazy"><figcaption><strong>Comprobar diff, después formatear</strong></figcaption></figure><h3 id="cambiar-n-mero-de-caracteres-por-l-nea"><strong>Cambiar número de caracteres por línea</strong></h3><p>Tenga en cuenta que el valor predeterminado de Black es de 88 caracteres para su longitud de línea, pero puede cambiarlo utilizando la opción “-l” o “- -line-length”.</p><p>Por ejemplo, cambiar a 60 caracteres: <code><strong>black -l 60 python_file.py</strong></code>.</p><h2 id="black-en-jupyter-notebook">Black en Jupyter Notebook</h2><p>Para los usuarios de Jupyter notebook, todavía pueden formatear automáticamente su código Python con esta sencilla extensión llamada <a href="https://github.com/drillan/jupyter-black">Jupyter Black</a>. Esta extensión reformatea/embellece el código en la celda de código de un cuaderno por <a href="https://black.readthedocs.io/en/stable/">black</a>.</p><p>La extensión Jupyter Black proporciona</p><ul><li>Un botón en la barra de herramientas.</li><li>Un atajo de teclado para reformatear la celda de código actual (predeterminado: Ctrl-B). </li><li>Un atajo de teclado para reformatear celdas de código enteras (predeterminado: Ctrl-Shift-B).</li></ul><h3 id="instalar-jupyter-black"><strong>Instalar Jupyter Black</strong></h3><p>Primero asegúrese de haber instalado <a href="https://github.com/ipython-contrib/jupyter_contrib_nbextensions">jupyter-contrib-nbextensions</a> y Black, luego ejecute los siguientes comandos.</p><pre><code>jupyter nbextension install https://github.com/drillan/jupyter-black/archive/master.zip — user</code></pre><p>A continuación, habilite la extensión ejecutando:</p><pre><code>jupyter nbextension enable jupyter-black-master/jupyter-black
</code></pre><p>Ahora puedes empezar a formatear tu código Python en cada celda de tu cuaderno.</p><p>En primer lugar, seleccione la celda del cuaderno que desea formatear su código Python y haga clic en el botón de extensión llamado Black.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/05/i.png" class="kg-image" alt="i" width="600" height="400" loading="lazy"><figcaption><strong>Antes de usar Jupyter Black</strong></figcaption></figure><p>A continuación, haga clic en el botón Jupyter Black:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/05/j.png" class="kg-image" alt="j" width="600" height="400" loading="lazy"><figcaption><strong>Botón Jupyter Black</strong></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/05/k.png" class="kg-image" alt="k" width="600" height="400" loading="lazy"><figcaption><strong>Después de usar Jupyter Black</strong></figcaption></figure><h2 id="integrar-editor">Integrar Editor</h2><p>Puedes integrar Black con tus editores favoritos. Actualmente, Black soporta Emacs, PyCharm/IntelliJ IDEA, Wing IDE, Vim, Gedit, Visual Studio Code, Sublime Text 3, Python LSP Server, Atom/Nuclide, Gradle (the build tool), Kakoune y Thonny. Siga las instrucciones <a href="https://black.readthedocs.io/en/stable/integrations/editors.html">aquí</a> para integrar Black con su editor favorito.</p><p>Si quieres aprender más sobre Black, te recomiendo ver la charla <a href="https://www.youtube.com/watch?v=esZLCuWs_2Y">PyCon 2019 de Łukasz Langa</a>.</p><p>Si aprendiste algo nuevo o te gustó leer este artículo, por favor compártelo para que otros lo vean. Hasta entonces, nos vemos en el próximo post. También me pueden contactar en Twitter <a href="https://twitter.com/Davis_McDavid">@Davis_McDavid</a>.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
