<?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[ Franciscomelov - 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[ Franciscomelov - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 13:48:23 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/franciscomelov/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Aprende SQL – Cursos gratis de Bases de Datos Relacionales para principiantes ]]>
                </title>
                <description>
                    <![CDATA[ SQL (Structured Query Language) es un lenguaje de programación popular, utilizado para bases de datos relacionales y  existen muchos recursos gratis muy buenos que puedes usar para aprenderlo. En este artículo, te compartiré 8 cursos gratis para principiantes con los que podrás aprender SQL, PostgreSQL y MySQL. Cursos gratis de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/learn-sql-free-relational-database-courses-for-beginners/</link>
                <guid isPermaLink="false">667c69027f03e8043199af37</guid>
                
                    <category>
                        <![CDATA[ SQL ]]>
                    </category>
                
                    <category>
                        <![CDATA[ base de datos ]]>
                    </category>
                
                    <category>
                        <![CDATA[ base de datos relacionales ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Thu, 04 Jul 2024 19:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/06/caspar-camille-rubin-fPkvU7RDmCo-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/learn-sql-free-relational-database-courses-for-beginners/#relational-database-freecodecamp-curriculum" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Learn SQL – Free Relational Database Courses for Beginners</a>
      </p><p>SQL (Structured Query Language) es un lenguaje de programación popular, utilizado para bases de datos relacionales y &nbsp;existen muchos recursos gratis muy buenos que puedes usar para aprenderlo.</p><p>En este artículo, te compartiré 8 cursos gratis para principiantes con los que podrás aprender SQL, PostgreSQL y MySQL.</p><h2 id="cursos-gratis-de-sql">Cursos gratis de SQL</h2><ol><li><a href="#curso-bd-freecodecamp">Relational Database Curriculum</a> (freeCodeCamp)</li><li><a href="#sql-tutorial">SQL Tutorial - Full Database Course for Beginners</a> (freeCodeCamp)</li><li><a href="#aprender-sql-60min">Learn SQL In 60 Minutes</a> (Web Dev Simplified)</li><li><a href="#tutorial-sql-principiantes">SQL For Beginners Tutorial</a> (Amigoscode)</li><li><a href="#bd-mysql-curso-completo">MySQL Database - Full Course</a> (freeCodeCamp)</li><li><a href="#tutorial-mysql">MySQL Tutorial for Beginners - Full Course</a> (Programming with Mosh)</li><li><a href="#curso-intensivo-mysql">MySQL Crash Course | Learn SQL</a> (Traversy Media)</li><li><a href="#sql-ciencias-datos">SQL for Data Science</a> (UC Davis)</li></ol><!--kg-card-begin: html--><h2 id="curso-bd-freecodecamp">Curso de Bases de Datos Relacionales de freeCodeCamp</h2><!--kg-card-end: html--><p>En septiembre de 2021, freeCodeCamp lanzó la <a href="https://www.freecodecamp.org/news/how-to-run-freecodecamps-relational-databases-curriculum-using-docker-vscode-and-coderoad/">versión beta</a> de su curso de Bases de datos relacionales. Esta versión beta corre completamente en Visual Studio Code utilizando Docker y la extensión CodeRoad.</p><p>En este curso aprenderás acerca de Git, GitHub, Bash, Nano, SQL, PostgreSQL y mucho más. Este es un curso completamente basado en proyectos.</p><p>Algunos de los proyectos que construirás son, una base de datos de Mario, una base de datos mundial, una base de datos de cuerpos celestes y una tienda de renta de bicicletas.</p><p>Para aprender más, puedes leer <a href="https://www.freecodecamp.org/news/how-to-run-freecodecamps-relational-databases-curriculum-using-docker-vscode-and-coderoad/">este artículo</a> de Tom Mondloch, creador del curso.</p><!--kg-card-begin: html--><h2 id="sql-tutorial">Tutorial de SQL- Curso completo de bases de datos para principiantes</h2><!--kg-card-end: html--><p>En este<a href="https://www.youtube.com/watch?v=HXV3zeQKqGY"> curso de freeCodeCamp en YouTube</a>, Mike Dane, te enseñará las bases de SQL. Aprenderás sobre cómo crear tablas, insertar datos, comodines, uniones y mucho más.</p><p>En este curso, aprenderás cómo instalar MySQL en tu Mac o computadora Windows. También practicarás tus habilidades en SQL al construir la base de datos de una compañía y un diagrama entidad-relación</p><p>Si te gusta este curso de Mike Dace, puedes visitar su <a href="https://www.youtube.com/c/GiraffeAcademy/videos">canal de YouTube</a>, para más cursos gratis.</p><!--kg-card-begin: html--><h2 id="aprender-sql-60min">Aprende SQL en 60 minutos</h2><!--kg-card-end: html--><p>En este <a href="https://www.youtube.com/watch?v=p3qvj9hO_Bo">curso de Desarrollo Web en YouTube</a>, Kyle te enseñará las bases para empezar con SQL. Aprenderás a crear de tablas, insertar datos a tablas, llaves primarias, llaves foráneas, agregar funciones y más.</p><p>Este es un gran curso que te servirá de introducción, a partir de aquí podrás crear tus propios proyectos usando SQL.</p><!--kg-card-begin: html--><h2 id="tutorial-sql-principiantes">Tutorial de SQL para principiantes</h2><!--kg-card-end: html--><p>En este <a href="https://www.youtube.com/watch?v=5hzZtqCNQKk">curso de Amigoscode en YouTube</a>, Nelson te enseñará como configurar PostgreSQL en Mac y Windows. También aprenderás las bases de SQL, incluyendo, la creación de tablas, llaves primarias, llaves foráneas, agregar funciones y más.</p><p>Si disfrutas este curso gratis en YouTube de Nelson, puedes ver sus otros cursos en su <a href="https://www.youtube.com/c/amigoscode/videos">canal</a> o visitar su <a href="https://amigoscode.com/">sitio web</a> para ver sus cursos de pago.</p><!--kg-card-begin: html--><h2 id="bd-mysql-curso-completo">Base De Datos Con MySQL - Curso Completo</h2><!--kg-card-end: html--><p>En este <a href="https://www.youtube.com/watch?v=ER8oKX5myE0">curso gratis de freeCodeCamp en YouTube</a>, Bharath te enseñará cómo instalar MySQL en tu máquina local. Aprenderás como crear tablas, insertar datos en tablas, hacer modelado de datos, bloquear, a usar SQL Explain y mucho más.</p><p>Bharath también ofrece recursos útiles para acompañar el curso, como una<a href="https://docs.google.com/document/d/1tDPgLoE1SakXJlwBF283nG12iUaBVy-OngmFaC4KHbI/edit"> guía de inicio</a> y un r<a href="https://github.com/jmbharathram/executeoncommand/tree/master/mysql">epositorio en GitHub</a> con los códigos MySQL.</p><p>Si disfrutas este curso, puedes visitar más cursos en su <a href="https://www.youtube.com/channel/UCwfA8RML42R-a65NRA4MQ2A">canal de YouTube</a>.</p><!--kg-card-begin: html--><h2 id="tutorial-mysql">Tutorial MySQL para Principiantes - Curso Completo</h2><!--kg-card-end: html--><p>En este <a href="https://www.youtube.com/watch?v=7S_tz1z_5bA">curso de Programming with Mosh en YouTube</a>, Mosh te enseñará como instalar MySQL en Mac o Windows. Aprenderás acerca de, crear tablas, insertar datos en tablas, uniones, operadores, cláusulas SQL, operadores SQL y más.</p><p>Si disfrutas este curso de Mosh, puedes visitar su <a href="https://www.youtube.com/channel/UCWv7vMbMWH4-V0ZXdmDpPBA">canal de YouTube</a> o visitar su <a href="https://codewithmosh.com/">sitio web</a> para ver sus cursos de pago.</p><!--kg-card-begin: html--><h2 id="curso-intensivo-mysql">Curso intensivo de MySQL | Aprende SQL</h2><!--kg-card-end: html--><p>En este <a href="https://www.youtube.com/watch?v=9ylj9NR0Lcg">curso de Traversy Media en YouTube</a>, Brad te enseñará las bases para empezar con SQL, aprenderás a crear tablas, insertar datos en tablas, modificar tablas, llaves primarias, llaves foráneas, agregar funciones y más.</p><p>Esta es una gran introducción para comenzar a aprender lo básico. A partir de aquí podrás comenzar a construir tus primeros proyectos usando MySQL.</p><p>Brad también incluye un <a href="https://gist.github.com/bradtraversy/c831baaad44343cc945e76c2e30927b3">acordeón de MySQL</a> en el curso.</p><!--kg-card-begin: html--><h2 id="sql-ciencias-datos">SQL para Ciencias de Datos</h2><!--kg-card-end: html--><p>En este <a href="https://www.coursera.org/learn/sql-for-data-science?specialization=learn-sql-basics-data-science">curso de UC Davis</a>, aprenderás las bases para usar SQL en un contexto de Ciencias de Datos, aprenderás a como crear tablas, insertar datos en tablas, llaves primarias, llaves foráneas, agregar funciones, uniones, sub-consultas y más.</p><p>Este curso es de acceso gratis en Coursera y es parte de la <a href="https://www.coursera.org/specializations/learn-sql-basics-data-science">especialización, aprende las bases de SQL para Ciencias de Datos</a>.</p><p>Si te interesa continuar con esta especialización, te sugiero mirar los otros tres cursos ofrecidos después de este curso introductorio.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Aprende matemáticas fundamentales en freeCodeCamp: Cursos interactivos de matemáticas versión beta ]]>
                </title>
                <description>
                    <![CDATA[ ¿Quieres aprender a usar Python para resolver problemas matemáticos? Entonces, el nuevo curso de Fundamentos de Matemáticas de freeCodeCamp, te guiará a través de lo que necesitas saber para prepararte para el curso de Ciencia de Datos.  Este será un repaso de matemáticas algo diferente, en lugar de usar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/aprende-matematicas-fundamentales-en-freecodecamp-cursos-interactivos-de-matematicas-version-beta/</link>
                <guid isPermaLink="false">66464fd426bf7b0404c5cfb6</guid>
                
                    <category>
                        <![CDATA[ Matemáticas ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Wed, 29 May 2024 18:22:46 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/05/pexels-nothing-ahead-3729557.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/freecodecamp-foundational-math-curriculum/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Learn Foundational Mathematics on freeCodeCamp – Interactive Math Courses Open Beta</a>
      </p><p>¿Quieres aprender a usar Python para resolver problemas matemáticos? Entonces, el nuevo curso de Fundamentos de Matemáticas de freeCodeCamp, te guiará a través de lo que necesitas saber para prepararte para el curso de Ciencia de Datos. </p><p>Este será un repaso de matemáticas algo diferente, en lugar de usar pluma y papel o una calculadora gráfica, aprenderás a escribir código en Python para hacer todos los cálculos por ti.</p><p>Yendo un paso a la vez, crearás proyectos que podrás utilizar como tu supercalculadora personal, este curso utiliza Google Colaboratory, que es parecido a Jupyter Notebook, para escribir código en Python en tu Google Drive.</p><p>Con la aplicación Google Colab, incluso puedes escribir y correr código desde tu teléfono.</p><p>Esto es solo el principio. Hemos estado creando cursos adicionales de matemáticas y Python como parte de la expansión del plan de estudios de Ciencia de Datos.</p><h2 id="-por-qu-las-matem-ticas-son-tiles-para-los-desarrolladores"><strong>¿Por qué las matemáticas son útiles para los desarrolladores?</strong></h2><p>Las matemáticas a nivel de álgebra se relacionarán directamente con los cálculos Estadísticos y de Análisis de Datos que harás en tu trabajo como desarrollador. Lo llamamos "Fundamentos de Matemáticas" porque son las bases que utilizarás al desarrollar otras aplicaciones.</p><p>Trabajar con coordenadas te ayudarán a planificar la composición de una escena o una página. Las fórmulas de distancia y cálculo de ángulos te ayudará en el desarrollo de videojuegos (y detección de proximidad).</p><p>El incremento y probar valores numéricos en bucles te ayudará a hacer predicciones basadas en valores iniciales y tendencias. Resolver valores desconocidos te ayudará con la planificación financiera y el desarrollo de aplicaciones empresariales.</p><p>Ya que cada aspecto del código (o la vida) se puede representar de manera numérica, las matemáticas son el lenguaje para describir relaciones. Encontrarás sabiduría en los números.</p><h2 id="lo-que-cubriremos-en-este-curso"><strong>Lo que cubriremos en este curso</strong></h2><p>A lo largo de este curso, aprenderás a escribir código para mostrar la gráfica de casi cualquier función, calcular casi cualquier fórmula y "resolver para x". También construirás diferentes programas que podrás utilizar y modificar en el futuro.</p><p>Al final de este curso, también obtendrás conocimientos sólidos de conceptos clave en matemáticas, y tendrás tu propia librería en Colab Notebooks para aplicar estos conceptos.</p><p>Aquí hay un ejemplo de uno de los primeros temas:</p><p>(La entrada del usuario viene como una cadena. Necesitas convertirla a un entero o flotante antes de hacer cualquier cálculo. El código de abajo, pide dos números enteros como &nbsp;entrada y los convierte a enteros. Completa el código para que todas las ecuaciones sean verdaderas)</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2021/10/Python-Math-Sample-Pic-1.png" class="kg-image" alt="Python-Math-Sample-Pic-1" width="600" height="400" loading="lazy"></figure><p>Como muchos de los cursos de freeCodeCamp, este curso tiene cinco partes, cada una de las cinco partes de este curso concluirá un proyecto de certificación que mostrará lo que has aprendido en cada uno de los pasos anteriores.</p><p>Aquí hay un ejemplo, cerca del final del curso, para ilustrar como la dificultad en el aprendizaje aún es moderada:</p><p>(Los matemáticos descubrieron y usaron el número de Euler, <em><code>e</code></em>, antes de que él hubiera nacido, pero comenzaron a usar la letra "<em><code>e</code>"</em> &nbsp;para representarlo como tributo a él. Puedes generar <em><code>e</code>, </em>que es aproximadamente 2.718281828, usando una serie convergente. Corre el siguiente código, después cambia el rango para ver como la serie converge)</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2021/10/Python-Math-sample-pic-2.png" class="kg-image" alt="Python-Math-sample-pic-2" width="600" height="400" loading="lazy"></figure><h2 id="presentaci-n-del-curso-de-matem-ticas-con-python"><strong>Presentación del curso de Matemáticas con Python</strong></h2><p>En este curso verás los temas matemáticos principales, desde álgebra hasta el eje Y (el eje Z se verá en un curso posterior). Este curso aún está en versión beta, por ello te invito a cursarlo y dejar tu comentario en el foro.</p><p>Eventualmente, quiero que las personas discutan sobre matemáticas y creen programas en Python entre ellas, Si ya cuentas con conocimientos básicos de Python, serás capaz tomar este curso.</p><p>Aquí hay una descripción de cada parte, con enlaces a Colab notebooks:</p><h3 id="parte-1-matem-ticas-con-python"><strong>Parte 1 – Matemáticas con Python</strong></h3><p>Primero, aprenderás conceptos básicos de Python para mostrarte como manejar las entradas de datos y aplicar formulas matemáticas. También aprenderás a"resolver para X" con código:</p><ul><li><a href="https://colab.research.google.com/drive/1jT7atuRCOnkdPyDmlgKVJqxouDSx7Ioh">Colab notebook para la parte 1</a></li></ul><h3 id="parte-2-gr-ficas"><strong>Parte 2 – Gráficas</strong></h3><p>En esta parte te enfocarás en gráficas, aprenderás a trazar puntos, líneas y funciones. También aprenderás a crear tablas y gráficas interactivas:</p><ul><li><a href="https://colab.research.google.com/drive/1BHKshb67jWVVZQ9VlzQOpdFA-gzJkSUF">Colab notebook para la parte 2</a></li></ul><h3 id="parte-3-matem-ticas-avanzadas"><strong>Parte 3 – Matemáticas avanzadas</strong></h3><p>Ahora profundizarás en polinomios, funciones exponenciales y fórmulas más complejas. Escribirás código para calcular los pagos de una hipoteca, estimar el balance de una cuenta de retiro y hacer diferentes cosas que te serán útiles:</p><ul><li><a href="https://colab.research.google.com/drive/1zUAVAkwyjat4Z-8nfrajM1ut9UcO18We">Colab notebook para la parte 3</a></li></ul><h3 id="parte-4-ngulos-y-trigonometr-a"><strong>Parte 4 – Ángulos y Trigonometría</strong></h3><p>Esta parte te enseñará a escribir código para crear líneas y ángulos en una gráfica, Utilizarás trigonometría para en encontrar distancias, puntos medios y ángulos. Gráficos animados incluidos:</p><ul><li><a href="https://colab.research.google.com/drive/1ildYndIoPIqUV8LPF-CBzQ1AKsAYd5HT">Colab notebook para la parte 4</a></li></ul><h3 id="parte-5-secuencias-y-sumatorias"><strong>Parte 5 – Secuencias y Sumatorias</strong></h3><p>Esta sección te guiará a través del cálculo de secuencias y series, después veremos probabilidad. Y en el camino aprenderás los principios de la suma y conteo:</p><ul><li><a href="https://colab.research.google.com/drive/14Kafh-xYNupr9HrX08uOzgxWJy30xjei">Colab notebook para la parte 5</a></li></ul><h2 id="m-s-all-de-jupyter-notebook"><strong>Más allá de Jupyter Notebook</strong></h2><p>¡La última versión de calculadora Texas Instruments TI-84 puede correr código en Python! La &nbsp;TI-84 es la calculadora ideal para estudiantes en cualquier clase que involucre gráficas y fórmulas. Puedes escribir programas en tu computadora y correrlos en tu calculadora. En este curso desarrollarás las habilidades matemáticas y en Python para poder hacerlo.</p><p>Ahora, aún llamamos "versión beta" a este curso, e incluso esto puede ser optimista. Estás obteniendo acceso temprano, ha contenido que seguirá mejorando, por lo que tu retroalimentación es bienvenida.</p><p>Mi objetivo es que este sea solo el comienzo, que podamos crear más notebooks, programas y funciones en &nbsp;Google Colaboratory y compartirlas en esta comunidad.</p><p>Por cierto, yo soy Ed y he enseñado por 18 años a estudiantes de preparatoria y por 15 años en universidad, creé este curso y puedes escribirme lo que opinas de él, al correo ed@freecodecamp.org y lo compartiré con el equipo de profesores de &nbsp;freeCodeCamp.</p><p>Gracias por acompañarme en este viaje.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Operaciones CRUD  – ¿Qué es CRUD? ]]>
                </title>
                <description>
                    <![CDATA[  CRUD no es una palabra. Es más bien una abreviación en inglés, que significa: - Create - crear - Read - leer - Update - actualizar - Delete - eliminar o destruir En este artículo te mostraré lo que significa  CRUD y cada una de sus siglas, también te ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/operaciones-crud-que-es-crud/</link>
                <guid isPermaLink="false">64c54dce73ccf107b75200f3</guid>
                
                    <category>
                        <![CDATA[ crud ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Desarrollo Backend ]]>
                    </category>
                
                    <category>
                        <![CDATA[ full stack ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Fri, 09 Feb 2024 12:38:33 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/crud.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p> CRUD no es una palabra. Es más bien una abreviación en inglés, que significa:</p><p>- Create - crear<br>- Read - leer<br>- Update - actualizar<br>- Delete - eliminar o destruir</p><p>En este artículo te mostraré lo que significa &nbsp;CRUD y cada una de sus siglas, también te enseñaré cómo funcionan las operaciones CRUD de crear, leer, actualizar y eliminar en el mundo real.</p><h2 id="-ndice"><strong>Índice</strong></h2><ul><li>¿Qué es CRUD?</li><li>¿Qué es la operación <code>CREATE</code> (Crear) y cómo funciona?</li><li>¿Qué es la operación <code>READ</code> (Leer) y cómo funciona?</li><li>¿Qué es la operación<code>UPDATE</code> (Actualizar) y cómo funciona?</li><li>¿Qué es la operación <code>DELETE</code> (Eliminar) y cómo funciona?</li><li>Conclusión</li></ul><h2 id="-qu-es-crud"><strong>¿Qué es CRUD?</strong></h2><p>CRUD se refiere a las cuatro operaciones básicas que una aplicación debería poder hacer- "Create - Crear", "Read - Leer", "Update - Actualizar" y "Delete - eliminar"</p><p>En una aplicación, el usuario debe de ser capaz de crear datos, poder leerlos y tener acceso a ellos desde la interfaz gráfica, actualizar o editar los datos y ser capaz de eliminarlos.</p><p>Las aplicaciones CRUD completas, consisten de 3 partes: una API (o servidor), una base de datos y una interfaz de usuario (IU/UI - user interface).</p><p>La API contiene código y métodos, la base de datos almacena y ayuda al usuario a extraer información, mientras que la interfaz de usuario ayuda a los usuarios a interactuar con la aplicación.</p><p>Puedes hacer una aplicación CRUD con cualquier lenguaje de programación existente. La aplicación no tiene que ser full-stack puedes hacer aplicaciones CRUD solo con JavaScript en el lado del cliente.</p><p>De hecho, la aplicación con la que te enseñaré cómo hacer operaciones CRUD - crear, leer, actualizar y eliminar, funciona solo con JavaScript del lado del cliente.</p><p>Cada letra en CRUD tiene un método de petición HTTP (HTTP request) correspondiente.</p><p>*Recuerda que es normal que en programación las instrucciones sean en inglés, ya que en este idioma están hechos la mayoría de los lenguajes de programación.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-2.png" class="kg-image" alt="image-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/01/image-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-2.png 635w" width="635" height="211" loading="lazy"></figure><h2 id="-cu-l-es-la-operaci-n-create-y-c-mo-funciona"><strong>¿Cuál es la operación <code>CREATE</code> y cómo funciona?</strong></h2><p>La operación CREATE (crear) como su nombre lo dice, crea un dato, este dato puede ser un usuario, información del usuario, una publicación o una tarea.</p><p>Como mencioné antes, la instrucción HTTP que ejecuta la operación <code>CREATE</code>es el método POST.</p><p>CREATE es el equivalente a <code>INSERT</code> (INSERTAR) en una base de datos SQL. En una base de datos NoSQL como MongoDB, se utiliza la instrucción <code>insert()</code>.</p><p>En la interfaz de usuario, que se muestra el siguiente GIF, se muestra cómo funciona la operación <code>CREATE</code>.</p><p>Primero se escribe el dato en la caja de texto y al dar clic en <code>Submit</code>, se crea o agrega un dato en nuestra aplicación.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/06/create-op.gif" class="kg-image" alt="create-op" width="600" height="400" loading="lazy"></figure><h2 id="-qu-es-la-operaci-n-read-y-c-mo-funciona"><strong>¿Qué es la operación <code>READ</code> y cómo funciona?</strong></h2><p>La operación <code>READ</code> (leer) nos permite tener acceso, poder ver o leer los datos o información desde la interfaz gráfica, que pueden ser desde información de los usuarios, publicaciones de redes sociales, etc.</p><p>Se puede acceder a estos datos inmediatamente después de introducirlos en la aplicación o buscarlos después. Una caja de búsqueda se implementa para permitir a los usuarios filtrar los datos que no necesitan.</p><p>El método HTTP GET es el encargado de implementar la operación <code>READ</code>.</p><p>READ es el equivalente a <code>SELECT</code> (seleccionar) en una base de datos SQL. En una base de datos NoSQL como MongoDB, para leer se utiliza el método <code>find()</code> o <code>findById()</code></p><p>En el siguiente ejemplo, en la sección "Entries" se puede ver cómo se leen o se muestran los datos previamente ingresados en la aplicación.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/06/read-operation.png" class="kg-image" alt="read-operation" width="600" height="400" loading="lazy"></figure><h2 id="-qu-es-la-operaci-n-update-y-c-mo-funciona"><strong>¿Qué es la operación <code>UPDATE</code> y cómo funciona?</strong></h2><p>La operación <code>UPDATE</code> (actualizar) nos permite modificar datos existentes o editar los datos de la aplicación.</p><p>A diferencia de <code>READ</code>, la operación <code>UPDATE</code> modifica los datos existentes, haciendo cambios a estos.</p><p>PUT y PATCH &nbsp;son los protocolos HTTP con los que se puede implementar la operación <code>UPDATE</code>, dependiendo de lo que necesites.</p><p>Utilizarás <code>PUT</code> cuando quieras modificar todo un dato, y PATCH si solo quieres modificar una parte de este.</p><p>En una base de datos SQL, se utiliza <code>UPDATE</code> para actualizar un dato, en una base de datos NoSQL como MongoDB, puedes implementar una actualización con el método <code>findByIdAndUpdate()</code>.</p><p>En el siguiente ejemplo nos muestran cómo funciona la operación <code>UPDATE</code>, dando clic en el botón "Update" podemos modificar un dato de la lista.<br></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/06/update-op.gif" class="kg-image" alt="update-op" width="600" height="400" loading="lazy"></figure><h2 id="-qu-es-la-operaci-n-delete-y-c-mo-funciona"><strong>¿Qué es la operación <code>DELETE</code> y cómo funciona?</strong></h2><p><code>DELETE</code> (eliminar) nos permite eliminar o deshacernos de un dato de la interfaz de usuario y de la base de datos.</p><p><code>DELETE</code> es el protocolo HTTP que nos permita implementar la operación <code>DELETE</code>.</p><p>En una base de datos SQL, <code>DELETE</code> se utiliza para eliminar un dato. En una base de datos NoSql como MongoDB, puedes implementar una función de eliminar con el método <code>findByIdAndDelete()</code>.</p><p>En el siguiente ejemplo podemos ver cómo se elimina cada elemento de la lista al dar clic en el botón "Delete"</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/06/delete-op.gif" class="kg-image" alt="delete-op" width="600" height="400" loading="lazy"></figure><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>Este artículo te mostró lo que significa CRUD, y qué hace cada una de sus funciones en una aplicación CRUD.</p><p>Puedes pensar en CRUD de la siguiente forma:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-2.png" class="kg-image" alt="image-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/01/image-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-2.png 635w" width="635" height="211" loading="lazy"></figure><ul><li>Puedes "crear" una cuenta y añadir tu información en una red social - <code>CREATE</code></li><li>Puedes acceder a la información que ingresaste y otras personas te pueden buscar – <code>READ</code></li><li>Al obtener un trabajo en Google hay que cambiar/actualizar tu información de trabajo – <code>UPDATE</code></li><li>Si te cansas de la toxicidad de las redes sociales y eliminas tu cuenta - <code>DELETE</code></li></ul><p>Para aprender a hacer tu propia aplicación CRUD - puedes ver <a href="https://www.freecodecamp.org/news/learn-crud-operations-in-javascript-by-building-todo-app/">este tutorial</a> de Joy Shaheb en FreeCodeCamp.</p><p>!No pares de programar¡👋</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Scripts de automatización en Python que debes saber ]]>
                </title>
                <description>
                    <![CDATA[  Todos hemos tenido las mismas tareas aburridas que tenemos que hacer una y otra vez, por suerte, podemos automatizar algunos de estos procesos, y así enfocarnos en cosas que realmente requieran nuestra energía y atención. En este artículo hablaremos de algunos scripts de automatización en Python, que podrás usar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/scripts-de-automatizacion-en-python-que-debes-saber/</link>
                <guid isPermaLink="false">64065af0e1521006f2da6895</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Fri, 19 May 2023 01:37:43 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/03/Python-Automation-Scripts-You-Should-Know.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/python-automation-scripts/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python Automation Scripts You Should Know</a>
      </p><p> Todos hemos tenido las mismas tareas aburridas que tenemos que hacer una y otra vez, por suerte, podemos automatizar algunos de estos procesos, y así enfocarnos en cosas que realmente requieran nuestra energía y atención.</p><p>En este artículo hablaremos de algunos scripts de automatización en Python, que podrás usar fácilmente para automatizar tareas. Es importante entender que será código ya escrito que nos ayudará a realizar muchas de nuestras tareas repetitivas.</p><p>Recomiendo firmemente tener algo de experiencia en el lenguaje de programación Python antes que continuar con este artículo.</p><p>Empecemos.</p><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe src="https://tenor.com/embed/25608746" width="600" height="400" frameborder="0" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle;"></iframe><figcaption>gif, Bailando</figcaption></figure><h2 id="como-automatizar-la-correcci-n-de-errores-en-un-texto"><strong>Como automatizar la corrección de errores en un texto</strong></h2><p>Lo primero en la lista es la corrección de textos. Siempre que quieras eliminar errores ortográficos o de escritura en un escrito, puedes utilizar este proyecto que utiliza el módulo <strong><strong><code>Lmproof</code></strong></strong>.</p><pre><code class="language-python"># Python Proofreading
# pip install lmproof
import lmproof
def proofread(text):
    proofread = lmproof.load("en")
    correction = proofread.proofread(text)
    print("Original: {}".format(text))
    print("Correction: {}".format(correction))
    
proofread("Tu texto")</code></pre><p>Primero necesitarás instalar la librería &nbsp;<strong><strong><code>lmproof</code></strong></strong>. Después podrás utilizar la función <strong><strong><code>proofread()</code></strong></strong>, que toma un <strong><code>texto</code> </strong>como parámetro. La función se ejecuta y muestra el texto original y el texto corregido. Puedes usarlo para corregir errores de forma rápida de un escrito o un artículo corto.</p><h2 id="como-automatizar-la-reproducci-n-de-m-sica-de-manera-aleatoria"><strong>Como automatizar la reproducción de música de manera aleatoria</strong></h2><p>Mientras trabajan, muchos programadores aman escuchar música. Para estos amantes de la música (como yo), este script escoge aleatoriamente canciones desde una carpeta y las reproduce con la ayuda de los módulos de Python <code><strong><strong>OS</strong></strong></code> y <code><strong><strong>random</strong></strong></code>.</p><pre><code class="language-python">import random, os
music_dir = 'E:\\music diretory'
songs = os.listdir(music_dir)

song = random.randint(0,len(songs))

# Muestra el nombre de la cancion
print(songs[song])  

os.startfile(os.path.join(music_dir, songs[0])) </code></pre><p>El código va a la carpeta donde están las canciones que quieras reproducir y las pone en una lista. Entonces las reproduce de manera aleatoria una después de la otra. Con <strong><strong><code>os.startfile</code></strong> </strong>reproducimos la canción.</p><h2 id="convertir-autom-ticamente-de-pdf-a-csv"><strong>Convertir automáticamente de PDF a CSV</strong></h2><p>Algunas veces necesitarás convertir datos de un <code><strong><strong>pdf</strong></strong></code> &nbsp;a datos <code><strong><strong>CSV</strong></strong></code><strong><strong> </strong> </strong>(comma separated value, valores separados por coma), para utilizarlos para algún análisis de datos. En estos casos, este script será de mucha ayuda.</p><pre><code class="language-python">import tabula

filename = input("Enter File Path: ")
df = tabula.read_pdf(filename, encoding='utf-8', spreadsheet=True, pages='1')

df.to_csv('output.csv')</code></pre><p>Tendrás que instalar la librería <code><strong><strong>tabula</strong></strong></code> &nbsp;utilizando <code><strong><strong>pip</strong></strong></code> para poder ejecutar este código. Después de instalarla puedes pasarle tu archivo PDF para convertirlo a CSV.</p><p>La librería viene con la función <code><strong><strong>read_pdf()</strong></strong></code>, que toma un archivo y lo lee. Y para terminar la automatización se utiliza la función <code><strong><strong>to_csv()</strong></strong></code><strong> </strong>para convertir el archivo a <strong><strong>CSV</strong>.</strong></p><h2 id="compresor-autom-tico-de-fotos"><strong>Compresor automático de fotos</strong></h2><p>También puedes reducir el tamaño de una imagen comprimiéndola – Manteniendo la calidad original</p><pre><code class="language-python">import PIL
from PIL import Image
from tkinter.filedialog import *

fl=askopenfilenames()
img = Image.open(fl[0])
img.save("output.jpg", "JPEG", optimize = True, quality = 10)</code></pre><p>Puedes usar <strong><strong>PIL</strong> </strong>(Python Imaging Library - libreria de images de Python) para manipular imágenes, añadir filtros, desenfocar, cambiar nitidez, compresión de imágenes, cambiar bordes y mucho más.</p><h2 id="descargas-autom-ticas-de-youtube"><strong>Descargas automáticas de YouTube</strong></h2><p>El siguiente código automatiza la descarga de videos de YouTube. Simplemente, usa este programa para hacer tus descargas sin la necesidad de otras aplicaciones o páginas.</p><pre><code class="language-python">import pytube

link = input('Youtube Video URL')
video_download = pytube.Youtube(link)
video_download.streams.first().download()
print('Video Downloaded', link)</code></pre><p>La librería <code>pytube</code> es muy fácil usar y con ella podrás descargar videos en tu computadora local. Todo lo que necesitas es ingresar el enlace del video y el método <strong><code><strong>download</strong></code></strong><code><strong>()</strong></code><strong> </strong>lo descargara en tu computadora</p><h2 id="texto-a-voz-autom-ticamente"><strong>Texto a voz automáticamente</strong></h2><p>Haremos uso de la API "texto a voz" de Google para este código. La API está actualizada y funciona con diferentes idiomas y podrás seleccionar diferentes tonos y tipos de voz.</p><figure class="kg-card kg-code-card"><pre><code class="language-python">from pygame import mixer
from gtts import gTTS

def main():
   tts = gTTS('Like This Article')
   tts.save('output.mp3')
   mixer.init()
   mixer.music.load('output.mp3')
   mixer.music.play()
   
if __name__ == "__main__":
   main()</code></pre><figcaption>,&nbsp;</figcaption></figure><h2 id="como-convertir-autom-ticamente-im-genes-a-pdf"><strong>Como convertir automáticamente imágenes a PDF</strong></h2><p>Esta es una tarea muy común que probablemente harás varias veces. Talvez querrás convertir una sola o varias imágenes a PDF.</p><p><strong>Como convertir una sola imagen a PDF</strong>:</p><pre><code class="language-python">import os
import img2pdf
with open("output.pdf", "wb") as file:
   file.write(img2pdf.convert([i for i in os.listdir('path to image') if i.endswith(".jpg")]))</code></pre><p><strong>Como convertir varias imágenes a PDF<strong>:</strong></strong></p><pre><code class="language-python">from fpdf import FPDF
Pdf = FPDF()

list_of_images = ["wall.jpg", "nature.jpg","cat.jpg"]
for i in list_of_images:
   Pdf.add_page()
   Pdf.image(i,x,y,w,h)
   Pdf.output("result.pdf", "F")</code></pre><p>Aquí estamos usando la librería &nbsp;<code><strong><strong>image2pdf</strong></strong></code> de Python para convertir nuestra imagen a PDF. También podemos convertir varias imágenes a PDF con solo unas cuantas líneas de código.</p><h2 id="verificador-de-plagio-autom-tico"><strong>Verificador de plagio automático</strong></h2><p>El plagio es el acto de presentar ideas o palabras como tuyas, con o sin el permiso de la otra persona, integrándolas a un trabajo o escrito, sin dar crédito al autor original.</p><p>Este código puede ser muy útil cuando quieras buscar plagio entre 2 archivos.</p><pre><code class="language-python">from difflib import SequenceMatcher
def plagiarism_checker(f1,f2):
    with open(f1,errors="ignore") as file1,open(f2,errors="ignore") as file2:
        f1_data=file1.read()
        f2_data=file2.read()
        res=SequenceMatcher(None, f1_data, f2_data).ratio()
        
print(f"These files are {res*100} % similar")
f1=input("Enter file_1 path: ")
f2=input("Enter file_2 path: ")
plagiarism_checker(f1, f2)</code></pre><h2 id="como-hacer-un-acortador-de-urls"><strong>Como hacer un acortador de URLs</strong></h2><p>Una URL muy larga puede ser molesta para leer o compartir, Para acortar una URL, en este código hacemos uso de una API.</p><pre><code class="language-python">from __future__ import with_statement
import contextlib
try:
	from urllib.parse import urlencode
except ImportError:
	from urllib import urlencode
try:
	from urllib.request import urlopen
except ImportError:
	from urllib2 import urlopen
import sys

def make_tiny(url):
	request_url = ('http://tinyurl.com/app-index.php?' + 
	urlencode({'url':url}))
	with contextlib.closing(urlopen(request_url)) as response:
		return response.read().decode('utf-8')

def main():
	for tinyurl in map(make_tiny, sys.argv[1:]):
		print(tinyurl)

if __name__ == '__main__':
	main()
    

'''

-----------------------------OUTPUT------------------------
python url_shortener.py https://www.wikipedia.org/
https://tinyurl.com/bif4t9

'''
    </code></pre><h2 id="probador-de-velocidad-de-internet"><strong>Probador de velocidad de internet</strong></h2><p>La API para prueba de velocidad de OOKLA, permite comprobar el ping y la velocidad de internet, este pequeño código medirá la velocidad de subida y de bajada.</p><pre><code class="language-python"># Internet Speed tester
# pip install speedtest-cli
import speedtest as st

# Set Best Server
server = st.Speedtest()
server.get_best_server()

# Test Download Speed
down = server.download()
down = down / 1000000
print(f"Download Speed: {down} Mb/s")

# Test Upload Speed
up = server.upload()
up = up / 1000000
print(f"Upload Speed: {up} Mb/s")

# Test Ping
ping = server.results.ping
print(f"Ping Speed: {ping}")

</code></pre><p>Aunque haya otras alternativas como <a href="https://www.freecodecamp.org/news/p/596c046e-0ba5-4a99-bf4d-eb3e0bebe75c/www.fast.com">fast.com</a>, con este código puedes hacerlo de manera rápida utilizando Python.</p><h2 id="conclusi-n">Conclusión</h2><p>Hemos visto 10 ejemplos de automatización con Python en este artículo, espero que lo hayas encontrado útil. También puedes investigar un poco más sobre las librerías utilizadas y así expandir tu conocimiento.</p><p>Contáctame en <a href="https://www.twitter.com/Shittu_Olumide_">Twitter</a> o en <a href="https://www.freecodecamp.org/news/p/596c046e-0ba5-4a99-bf4d-eb3e0bebe75c/linkedin.com/in/olumide-shittu">LinkedIn</a>.</p><p><strong>! Y que tengas un gran día programando¡</strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como aprobar las certificaciones en Java de Oracle: una guía práctica para desarrolladores ]]>
                </title>
                <description>
                    <![CDATA[ Una certificación en Java es muy estimada en la industria TI y provee de un reconocimiento mundial a un desarrollador Java. Te ayudará a conseguir un mejor empleo, un mejor salario o incluso, un aumento o bono en tu trabajo actual. Por esta razón, miles de programadores Java intentan certificarse ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-aprobar-las-certificaciones-en-java-de-oracle-una-guia-practica-para-desarrolladores/</link>
                <guid isPermaLink="false">63dd53ea12ea69079612c9d7</guid>
                
                    <category>
                        <![CDATA[ java ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Wed, 01 Mar 2023 17:01:53 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/02/cake.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-pass-oracles-java-certifications-a-practical-guide-for-developers-e9b607ba6173/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Pass Oracle’s Java Certifications — a Practical Guide for Developers</a>
      </p><p>Una certificación en Java es muy estimada en la industria TI y provee de un reconocimiento mundial a un desarrollador Java. Te ayudará a conseguir un mejor empleo, un mejor salario o incluso, un aumento o bono en tu trabajo actual.</p><p>Por esta razón, miles de programadores Java intentan certificarse cada año, pero el éxito no es sencillo en este examen</p><p>La certificación en Java de Oracle tiene un porcentaje de aprobación <strong>cercano al 65% </strong>para OCAJP (the Oracle Certified Associate Java Programmer) y OCPJP (the Oracle Certified Professional Java Programmer).</p><p>Y necesitas un gran nivel de conocimiento en el lenguaje Java y la API para aprobar el examen.</p><p>Prepararte para el OCPJP no es muy diferente que hacerlo para el OCAJP, sin embargo, tendrás que usar recursos enfocados en OCPJP, también tendrás que abarcar más temas y tener una mayor preparación, porque OCPJP 8 es un hueso duro de roer.</p><p>Para que puedas prepararte bien y obtener una puntuación alta, compartiré algunos consejos. Estos consejos me han ayudado en el pasado a conseguir una puntuación de más del 90% en las certificaciones.</p><p>Y para no perder más tiempo, aquí están mis 5 consejos para preparar bien los exámenes OCAJP y OCPJP.</p><h3 id="1-escribe-c-digo-diariamente"><strong>1. Escribe código diariamente</strong></h3><p>No hay un sustituto para la práctica. Debes escribir código todos los días para desarrollar una lógica de programación que te ayudara a la hora de leer el código que vendrá en los exámenes.</p><p>En el caso del OCPJP, esto será aún más importante, ya que requerirás una gran atención al detalle para entender cada pregunta antes de poder contestar.</p><h3 id="2-nete-a-un-buen-curso"><strong>2. Únete a un buen curso</strong></h3><p>En mi opinión, los cursos en línea son una de las mejores formas de aprender una nueva tecnología en un corto periodo de tiempo, y es lo mismo para prepararte para un examen de certificación, como las Java de Oracle.</p><p>Son la segunda mejor manera de aprender, solo después de un instructor personal, ya que de esta forma aprenderás de la mano de profesionales con experiencia en la industria, que han pasado por el mismo camino y conocen los baches y errores con los que te podrías topar.</p><p>Cuando me preparé para mi certificación en Java hace más de 10 años, solamente había libros, en especial el libro de Khalid Mughal, pero ahora tú tienes muchas más opciones en libros y cursos.</p><ol><li><a href="http://shareasale.com/r.cfm?b=1130601&amp;u=880419&amp;m=43514&amp;urllink=&amp;afftrack=">Curso de entrenamiento Whizlab’s OCAJP 8 </a></li><li><a href="https://shareasale.com/r.cfm?b=1130600&amp;u=880419&amp;m=43514&amp;urllink=&amp;afftrack=">Curso de entrenamiento Whizlab’s OCPJP 8</a></li><li><a href="https://click.linksynergy.com/fs-bin/click?id=JVFxdTr9V80&amp;subid=0&amp;offerid=323058.1&amp;type=10&amp;tmpid=14538&amp;RD_PARM1=https%3A%2F%2Fwww.udemy.com%2Foracle-java-associate-certification-exam-course-1z0-808%2F" rel="noopener"><strong><strong>Oracle Java Certification — Pass the Associate 1Z0–808 ExamOracle Java Certification — Pass the Associate 1Z0–808 ExamOracle Java Certification — Pass the Associate 1Z0–808 ExamOracle Java Certification — Pass the Associate 1Z0–808 ExamOracle Java Certification — Pass the Associate 1Z0–808 ExamOracle Java Certification — Pass the Associate 1Z0–808 ExamOracle Java Certification — Pass the Associate 1Z0–808 ExaOracle Java Certification — Pass the Associate 1Z0–808 Exam</strong></strong></a><a href="https://www.udemy.com/course/oracle-java-associate-certification-exam-course-1z0-808/?LSNPUBID=JVFxdTr9V80&amp;ranEAID=JVFxdTr9V80&amp;ranMID=39197&amp;ranSiteID=JVFxdTr9V80-uPQCbxTidzkMe.KyY9xaxQ">Certificación Oracle Java — Aprueba el examen Associate 1Z0–808</a></li></ol><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/02/letrero.jpg" class="kg-image" alt="letrero" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/02/letrero.jpg 600w, https://www.freecodecamp.org/espanol/news/content/images/2023/02/letrero.jpg 700w" width="700" height="300" loading="lazy"></figure><h3 id="3-lee-una-buena-gu-a-de-estudio-"><strong>3. Lee una buena guía de estudio.</strong></h3><p>No hay mejor compañera que una buena guía de estudio si te estás preparando para una certificación en Java.</p><p>Cubren todos los temas del examen, tienen preguntas de práctica al final de cada capítulo y comparten muchos consejos enfocados a exámenes que no encontraras en un libro normal de Java.</p><p>Hay diferentes guías de estudio disponibles en el mercado, pero si te estás preparando para <a href="http://www.java67.com/2016/07/3-best-books-to-prepare-ocajp-7-1z0-803.html" rel="noopener">OCAJP 7</a> u <a href="https://javarevisited.blogspot.com/2017/07/ocajp-8-faq-oracle-certified-associate-certification-1z0-808-exam.html" rel="noopener">OCAJP 8</a> puedes visitar estas páginas para encontrar una buena guía de estudio.</p><ol><li><strong><a href="http://www.amazon.com/OCA-Certified-Associate-Programmer-1Z0-808/dp/1118957407?tag=javamysqlanta-20"><strong>OCA</strong> - <strong>Oracle Certified Associate Java SE 8 Programmer I</strong> -<strong> </strong>por <strong>Jean Boyarsky </strong>y <strong>Scott Selikoff</strong></a></strong></li><li><strong><a href="https://www.amazon.com/OCA-Java-Programmer-Certification-Guide/dp/1617293253?tag=javamysqlanta-20">Guía de certificacion <strong>OCA Java SE 8 Programmer I (Exam</strong>en<strong> 1Z0–808) (Mala Gupta)</strong></a></strong></li><li><strong><a href="https://www.amazon.com/Oracle-Certified-Professional-Programmer-1Z0-809/dp/1484218353/?tag=javamysqlanta-20"><strong>Oracle Certified Professional Java SE 8 Programmer</strong>, Examen <strong>1Z0–809 </strong>Por <strong>Ganesh, Hari</strong> y <strong>Tushar</strong></a></strong></li></ol><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/KmMNZ0-vGov5jRJC-qeEIYLqazi9-K7tb9Oo" class="kg-image" alt="KmMNZ0-vGov5jRJC-qeEIYLqazi9-K7tb9Oo" width="603" height="803" loading="lazy"></figure><h3 id="4-escoge-un-buen-simulador-de-examen-"><strong>4. Escoge un buen simulador de examen.</strong></h3><p>Después de escoger un buen libro o guía de estudio, necesitarás un simulador de examen. Esto es muy importante si quieres tener una calificación alta, pero si solo quieres pasar el examen no es tan necesario.</p><p>El simulador de examen te ayudará a desarrollar la velocidad y precisión requerida para completas todas las preguntas en 2.5 horas.</p><p>Recomiendo hacer exámenes de práctica hasta que alcances una calificación del 80% de manera constante antes de ir por el examen real.</p><p>Aquí hay algunas de mis recomendaciones de simuladores de examen:</p><ol><li><a href="http://shrsl.com/?g0ce" rel="noopener"><strong><strong>Whizlab’s Exam Simulator</strong></strong></a><br>Son los mejores en el mercado, probado por muchos desarrolladores, incluyéndome a mí.</li><li><strong><strong><a href="https://enthuware.com/index.php/java-mock-exams/oracle-certified-professional/java-se-8-1z0-809" rel="noopener">Enthuware’s Practice Test</a></strong></strong><br>La segunda mejor opción, en mi opinión y muy barato, lo puedes conseguir en menos de $10 dólares. También probado por muchos desarrolladores en java certificados.</li><li><a href="https://www.certification-questions.com/java8-dumps/1Z0-808-dumps.html?affiliateCode=fcff36fd-557a-4713-abf6-973e9924770f&amp;utm_source=Javin&amp;utm_medium=affiliate&amp;utm_campaign=affiliate" rel="noopener"><strong><strong>David Mayer’s Practice Test</strong></strong></a><br>Si quieres prepararte aún más, recomiendo resolver los más de 450 problemas del examen de David Mayer.</li><li><strong><strong><a href="https://click.linksynergy.com/fs-bin/click?id=JVFxdTr9V80&amp;subid=0&amp;offerid=323058.1&amp;type=10&amp;tmpid=14538&amp;RD_PARM1=https%3A%2F%2Fwww.udemy.com%2Fjava-oca%2F" rel="noopener">Java Certification: OCA (1Z0–808) Exam Simulation [2018]</a></strong></strong><br>Más de 260 preguntas de opción múltiple con explicación para pasar la certificación "Oracle Certified Associate, Java SE 8 Programmer I preparation"</li><li><a href="https://click.linksynergy.com/fs-bin/click?id=JVFxdTr9V80&amp;subid=0&amp;offerid=323058.1&amp;type=10&amp;tmpid=14538&amp;RD_PARM1=https%3A%2F%2Fwww.udemy.com%2Fjava-ocajp%2F" rel="noopener"><strong><strong>Java Certification — OCA (1Z0–808) Topic-wise Tests [2018]</strong></strong></a><br>Preguntas de opción múltiple que cubren todos los objetivos del examen "Oracle Certified Associate, Java SE 8 Programmer I"</li></ol><p>Por cierto, si decides comprar Whizlab’s simulator, puedes utilizar el cupón “<strong><strong>JAVACOMBO2”</strong></strong> para un descuento del 25%.</p><p>Ya que Whizlab, ofrece acceso de por vida a sus simuladores, recomiendo comprar ambos simuladores juntos, OCAJP y OCPJP, y aprovecha el cupón de descuento.</p><p></p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/hHLYo2UvjIUmQzFAzHR78f8hpvtlwicpao9H" class="kg-image" alt="hHLYo2UvjIUmQzFAzHR78f8hpvtlwicpao9H" width="800" height="666" loading="lazy"></figure><h3 id="5-participa-en-foros-de-forma-regular"><strong>5. Participa en foros de forma regular</strong></h3><p>Tienes que motivarte y actualizarte respecto a los exámenes y otros detalles, por lo que no hay mejor manera de hacerlo que, participando en foros, como <a href="http://coderanch.com/" rel="noopener">CodeRanch</a> o el foro oficial de certificaciones Java de Oracle</p><p>Puedes hacer preguntas, responderlas y familiarizarte con otros usuarios que al igual que tú se preparan para sus exámenes.</p><p>Incluso podrías hacer amigos y amigas que te ayudarán a prepararte mejor para tu examen.</p><figure class="kg-card kg-image-card"><img src="https://cdn-media-1.freecodecamp.org/images/SFhzfaXGxkJE3S29ZKniStDcZQNm4TJHuHAx" class="kg-image" alt="SFhzfaXGxkJE3S29ZKniStDcZQNm4TJHuHAx" width="800" height="354" loading="lazy"></figure><h3 id="6-responde-tantas-preguntas-como-sea-posible"><strong>6. Responde tantas preguntas como sea posible</strong></h3><p>La práctica hace al maestro, practica tanto como puedas y poco a poco desarrollaras la velocidad y precisión que requiere el examen.</p><p>Hay muchos exámenes gratis disponibles y Google es tu amigo. Puedes buscarlos y comenzar a practicar.</p><p>Aquí hay una lista de algunas <strong>preguntas de práctica gratis</strong> para los exámenes OCAJP 8 y OCPJP 8:</p><ol><li><a href="http://www.java67.com/2017/05/10-free-java-8-certification-sample-questions-OCAJP8-OCPJP8-Mock-Exams.html" rel="noopener">http://www.java67.com/2017/05/10-free-java-8-certification-sample-questions-OCAJP8-OCPJP8-Mock-Exams.html</a></li><li><a href="http://javarevisited.blogspot.sg/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html#axzz5ACLhR0b5" rel="noopener">http://javarevisited.blogspot.sg/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html#axzz5ACLhR0b5</a></li><li><a href="http://javarevisited.blogspot.sg/2016/08/5-free-ocajp-7-and-ocpjp7-mock-exams.html#axzz4pXl8Axsv" rel="noopener">http://javarevisited.blogspot.sg/2016/08/5-free-ocajp-7-and-ocpjp7-mock-exams.html#axzz4pXl8Axsv</a></li></ol><p>Si quieres prepararte lo mejor posible para las certificaciones Java, también puedes visitar estas páginas para obtener preguntas de prueba y exámenes de práctica:</p><p><a href="https://javarevisited.blogspot.com/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html"><strong>5 exámenes de prueba y preguntas de práctica para </strong></a><strong><a href="https://javarevisited.blogspot.com/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html"><strong>OCAJP8, OCPJP8 &nbsp;- 1Z0-808 809 (</strong></a></strong><a href="https://javarevisited.blogspot.com/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html"><strong>Certificación </strong></a><strong><a href="https://javarevisited.blogspot.com/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html"><strong>Java 8)</strong></a>.</strong></p><p><strong><a href="http://www.java67.com/2017/05/10-free-java-8-certification-sample-questions-OCAJP8-OCPJP8-Mock-Exams.html">10 preguntas de muestra en Java 8 para las certificaciones<strong> - OCAJP8 </strong>y <strong>OCPJP8 - 1Z0-808 </strong>y <strong>1Z09</strong>.</a></strong></p><h3 id="otros-recursos-tiles-para-las-certificaciones-en-java-8-"><strong>Otros recursos útiles para las certificaciones en Java 8:</strong></h3><p>Aquí puedes encontrar recursos útiles para los exámenes OCAJP8 (<a href="http://javarevisited.blogspot.com/2017/04/ocajp-1z0-808-best-books-and-mock-exams-Java8-certification.html" rel="noopener">1Z0–808</a>) y OCAPJP8 (<a href="http://www.java67.com/2017/05/top-5-books-for-ocajp8-and-ocpjp8-Java-8-certification-exam.html" rel="noopener">1Z0–809</a>).</p><p>Algunos recursos son gratis y otros los tendrás que comprar, pero teniendo en cuenta el precio de los exámenes, que es de <strong><strong>245 USD</strong></strong>, vale la pena gastar un poco más, en lugar de no pasar el examen y tener que volver a tomarlo.</p><ul><li><a href="https://javarevisited.blogspot.com/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html">Exámenes de prueba para OCAJP 8 y OCPJP8 </a></li><li><a href="http://javarevisited.blogspot.com/2016/11/top-5-java-8-practice-test-and-exam-simulators-best-OCAJP-OCAPJP.html" rel="noopener">Los mejores simuladores de examen para OCAJP8 y OCPJP8</a></li><li><a href="https://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&amp;get_params=p_exam_id:1Z0-809" rel="noopener">Plan de estudio completo y especificaciones de Java SE 8 para la certificación (OCAJP 8)</a></li><li><a href="http://www.pearsonvue.com/oracle/" rel="noopener">Enlace para registrarte al examen de Java 8</a></li><li><a href="http://www.java67.com/2015/07/5-books-learn-java-8-functional-programming.html" rel="noopener">Los mejores 8 libros de Java 8 </a></li><li><a href="http://javarevisited.blogspot.com/2014/01/does-java-certifications-like-scjp-ocjp-ocpjp-helps-carrer-job-interviews.html" rel="noopener">Beneficios de hacer una certificación en Java</a></li><li><a href="http://javarevisited.blogspot.com/2016/12/5-tips-to-prepare-for-oracle-java-certifications-OCAJP-OCPJP-exams.html" rel="noopener">Consejos de preparación &nbsp;para la certificación OCAJP8</a></li><li><a href="https://javarevisited.blogspot.com/2017/07/ocajp-8-faq-oracle-certified-associate-certification-1z0-808-exam.html" rel="noopener">OCAJP 8 - preguntas frecuentes de desarrolladores</a></li></ul><h4 id="notas-finales">Notas finales</h4><p>Gracias, llegaste al final del artículo... Buena suerte con tu examen de certificación en Java. Es cierto que no será fácil, pero siguiendo esta ruta de estudio y los consejos, estas un paso más cerca de ser un desarrollador certificado en Java.</p><h4 id="p-d-si-necesitas-m-s-recursos-gratis-puedes-revisar-esta-lista-de-ex-menes-de-prueba-para-ocajp-8-y-ocpjp-8-"><strong>P.D. — Si necesitas más recursos gratis, puedes revisar esta lista de </strong><a href="https://javarevisited.blogspot.com/2015/11/5-free-ocajp8-ocpjp8-mock-exams-and-practice-questions.html"><strong>exámenes de prueba para OCAJP 8 y OCPJP 8</strong></a><strong>.</strong></h4> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Que es HTML – Definición y significado de lenguaje de marcado de hipertexto ]]>
                </title>
                <description>
                    <![CDATA[ HTML, Lenguaje de marcado de hipertexto o HyperText Markup Language por sus siglas en inglés. Es un lenguaje que permite definir y darle estructura a las páginas web. Es una de las partes más básicas de todas las páginas web, por lo que es muy importante aprenderlo si se quiere ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/que-es-html-definicion-y-significado-de-lenguaje-de-marcado-de-hipertexto/</link>
                <guid isPermaLink="false">63b5c75bed18d008013acf61</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Thu, 26 Jan 2023 19:36:15 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/01/html-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/what-is-html-definition-and-meaning/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">What is HTML – Definition and Meaning of Hypertext Markup Language</a>
      </p><p>HTML, Lenguaje de marcado de hipertexto o HyperText Markup Language por sus siglas en inglés. Es un lenguaje que permite definir y darle estructura a las páginas web.</p><p>Es una de las partes más básicas de todas las páginas web, por lo que es muy importante aprenderlo si se quiere tener una carrera en el mundo del desarrollo web.</p><p>En este artículo explicaré en detalle que es HTML, como funciona en una página web y veremos una parte muy interesante de HTML - HTML semántico.</p><h2 id="-que-es-html">¿Que es HTML?</h2><p>Para entender "HTML" al derecho y al revés, veamos cada letra de esta contracción:</p><p><strong><strong>Hypertext</strong> (hipertexto)</strong>: texto (usualmente enlaces) que está organizado de manera que conecta elementos relacionados.</p><p><strong><strong>Markup</strong> (marcado)</strong>: Es una guía de estilo para representar elementos que son mostrados de forma visual en el navegador. </p><p><strong><strong>Language</strong> (lenguaje)</strong>:Un lenguaje que entiende una computadora y utiliza para interpretar comandos.</p><p>HTML determina la estructura de las páginas web. Sin embargo, esta estructura no es suficiente para hacer que una página luzca bien y sea interactiva, por lo que necesitas otras tecnologías como CSS y JavaScript, que harán que tu HTML luzca bien y sea interactivo, respectivamente.</p><p>En seguida describiré los 3 lenguajes- HTML, CSS y JavaScript - utilizando el cuerpo humano como analogía:</p><ul><li>HTML es el esqueleto.</li><li>CSS es la piel.</li><li>JavaScript es el sistema circulatorio, digestivo y respiratorio que le da al esqueleto y a la piel vida.</li></ul><p>También puedes mirar a HTML, CSS y JavaScript de la siguiente forma:</p><ul><li>HTML es la estructura de la casa.</li><li>CSS es la decoración interior y exterior.</li><li>JavaScript es el sistema eléctrico, del agua y otras funcionalidades que hace de tu hogar habitable</li></ul><h2 id="etiquetas-html"><strong>Etiquetas HTML</strong></h2><p>Ya que HTML define la estructura de una página web, querrás que el texto, imágenes y otros elementos se muestren de cierta forma.</p><p>Por ejemplo, que un texto se vea grande y otro pequeño, que esté en negritas, cursiva, o sea una lista con viñetas.</p><p>HTML tiene "etiquetas" que te dejan hacer esto y mucho más. Hay etiquetas para crear títulos, párrafos, resaltar palabras, escribir en cursiva, etc.</p><p>La siguiente imagen describe la anatomía de una etiqueta HTML:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/01/anatomy-of-an-html-tag.png" class="kg-image" alt="anatomy-of-an-html-tag" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/01/anatomy-of-an-html-tag.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2023/01/anatomy-of-an-html-tag.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2023/01/anatomy-of-an-html-tag.png 1200w" sizes="(min-width: 720px) 720px" width="1200" height="628" loading="lazy"></figure><h2 id="elementos-html"><strong>Elementos HTML</strong></h2><p>Un elemento consiste de una etiqueta de apertura, un contenido y una etiqueta de cierre.</p><p> También existen "elementos vacíos" que solo utilizan una etiqueta, no necesitan etiqueta de cierre, en su lugar utilizan un enlace o una fuente, ha contenido que quieras insertar en la página web.</p><p>Un ejemplo de este tipo de elementos es <code>&lt;img&gt;</code>, que se utiliza para insertar imágenes en una página web</p><p>Elementos HTML y etiquetas HTML son términos que por lo general se utilizan indistintamente, pero hay una pequeña diferencia entre ellos. Un elemento es la combinación de la etiqueta de apertura, la etiqueta de cierre y el contenido entre ellas.</p><p>Aquí hay otra imagen para ayudarte a visualizar la anatomía de un elemento HTML:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/01/anatomy-of-an-html-element.png" class="kg-image" alt="anatomy-of-an-html-element" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/01/anatomy-of-an-html-element.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2023/01/anatomy-of-an-html-element.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2023/01/anatomy-of-an-html-element.png 1200w" sizes="(min-width: 720px) 720px" width="1200" height="628" loading="lazy"></figure><h2 id="atributos-html"><strong>Atributos HTML</strong></h2><p>Las etiquetas HTML también acepta "atributos". Los atributos se añaden en la etiqueta de apertura y pueden ser de tipo style, id, class, etc. Los atributos toman un valor, que le da información extra a un elemento para agregar estilos o interactividad con JavaScript</p><p>En la siguiente infografía, la etiqueta de apertura contienen un atributo <code>class</code> con el valor <code>“text”</code>. Esto puede ser útil para darle estilo al elemento o seleccionarlo con JavaScript para hacerlo interactivo.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/01/attribute-1.png" class="kg-image" alt="attribute-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/01/attribute-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2023/01/attribute-1.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2023/01/attribute-1.png 1200w" sizes="(min-width: 720px) 720px" width="1200" height="628" loading="lazy"></figure><p>Aquí está la anatomía básica de una página HTML:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
    &lt;title&gt;Definition of HTML&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;!--Contenido de la páguina, por ejemplo, texto e imagenes--&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>Veamos las diferentes partes del código anterior:</p><p><code>&lt;!Doctype html&gt;</code>: Especifica que estamos utilizando HTML5 en el código, antes de la introducción de HTML5 en la etiqueta <code>&lt;!Doctype&gt;</code> se tenía que especificar que versión de HTML se estaba utilizando. Por ejemplo, &nbsp; HTML4.0, 3.2, etc. Esto ya no es necesario, ahora el navegador automáticamente asume que estás programando con HTML5.</p><p><code>&lt;html&gt;&lt;/html&gt;</code>: elemento raíz o principal de todo documento HTML. Los demás elementos irán dentro de este.</p><p><code>&lt;head&gt;&lt;/head&gt;</code>:Una de las partes más importantes del documento HMTL. Los "Web crawlers" (escanean internet) miran dentro de este elemento para obtener información importante acerca de la página. Contiene información como el título de la página, enlaces que dan estilo a la página, meta-información para SEO (Optimización para motores de búsqueda) y mucho más.</p><p><code>&lt;meta /&gt;</code>: Este es un elemento vacío que contiene meta-información acerca de la página, por ejemplo, el autor, tipo de codificación de caracteres (casi siempre es UTF-8), adaptabilidad del diseño web, compatibilidad y mucho más. Los Web crawlers siempre miran las etiquetas meta para obtener información acerca de la página web, lo cual será muy importante para el SEO.</p><p><code>&lt;title&gt;&lt;/title&gt;</code>: Aquí se especifica el nombre de la página web, este siempre se muestra en las pestañas del navegador.</p><p><code>&lt;body&gt;&lt;/body&gt;</code>: Todo el contenido del documento HTML se inserta entre las etiquetas body. Solo puede haber un elemento <code>&lt;body&gt;</code>en la página.</p><h2 id="-que-es-html-sem-ntico"><strong>¿Que es HTML semántico?</strong></h2><p>HTML semántico significa, usar las etiquetas HTML correctas para cada tipo de contenido.</p><p>La semántica ha sido una parte integral de HTML desde su creación, a principios de los años 90, pero tomó mayor relevancia a finales de los 90, cuando CSS comenzó a funcionar en los navegadores.</p><p>Con HTML semántico, el uso de etiquetas genéricas como <code>&lt;div&gt;</code> y<code>&lt;span&gt;</code> está mal visto, ya que etiquetas más descriptivas como <code>&lt;header&gt;</code>, <code>&lt;nav&gt;</code>, <code>&lt;main&gt;</code>, <code>&lt;section&gt;</code>, <code>&lt;footer&gt;</code> y<code>&lt;article&gt;</code> pueden hacer lo mismo.</p><p>Una gran ventaja de utilizar etiquetas semánticamente correctas, es que los web crawlers pueden indexar fácilmente una página o sitio web, lo que mejorara el SEO.</p><p>Además, una página con una semántica correcta se vuelve informativa, adaptable y accesible para aquellos que utilicen lectores de pantalla.</p><h3 id="etiquetas-sem-nticas-principales-y-que-hacen-">Etiquetas semánticas principales y que hacen.</h3><p>Veamos algunas de las etiquetas más importantes en HTML semántico:</p><p><code>&lt;header&gt;</code>: El elemento <code>&lt;header&gt;</code> define la sección introduciría de la página web. Contiene elementos como el logo, barra de navegación, cambiador de tema y barra de búsqueda.</p><p><code>&lt;nav&gt;</code>: El elemento <code>&lt;nav&gt;</code> especifica los elementos de navegación de la página, por ejemplo, &nbsp;home (inicio), contact (contacto), about (acerca de), FAQs (preguntas frecuentes), etc.</p><p><code>&lt;main&gt;</code>: El elemento <code>&lt;main&gt;</code> &nbsp;contiene las secciones principales del documento HTML, a excepción de los elementos <code>&lt;header&gt;</code> y <code>&lt;footer&gt;</code>. Idealmente, solo debería de haber un solo elemento <code>&lt;main&gt;</code> en todo el documento HTML</p><p><code>&lt;section&gt;</code>: EL elemento <code>&lt;section&gt;</code> define una sección específica de la página web. Esta puede ser la sección acerca de, la sección de contactos, etc. Puedes utilizar diferentes secciones en el documento HTML.</p><p><code>&lt;article&gt;</code>: EL elemento <code>&lt;article&gt;</code> representa una parte de la página web que transmite un tipo de información. Por ejemplo, puede ser una combinación de imágenes, texto, videos, etc. Como su nombre sugiere, este elemento representa un artículo independiente en un blog que podría tener más artículos</p><p><code>&lt;aside&gt;</code>: el elemento <code>&lt;aside&gt;</code> representa contenido, que aunque no sea parte de la información principal, está relacionada indirectamente. </p><p><code>&lt;footer&gt;</code>: El <code>&lt;footer&gt;</code> posiciona diferentes elementos, como enlaces destacados, información sobre derechos de autor o información relevante acerca de la página o sitio web.</p><p>Recuerda que los elementos semánticos están relacionados con el tipo de contenido que tienen (como usar <code>nav</code> para una barra de navegación, <code>&lt;article&gt;</code> para un artículo, etc.). Estos elementos no se posicionan automáticamente donde deberían ir, esto se tiene que hacer con CSS</p><p>Ejemplo de un documento básico utilizando HTML semántico:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
    &lt;title&gt;Definicion de HTML&lt;/title&gt;
  &lt;/head&gt;

  &lt;body&gt;
    &lt;header&gt;
      &lt;h1 class="logo"&gt;LOGO&lt;/h1&gt;
      &lt;nav&gt;
        &lt;ul&gt;
          &lt;li&gt;Inicio&lt;/li&gt;
          &lt;li&gt;Acerca de&lt;/li&gt;
          &lt;li&gt;Contacto&lt;/li&gt;
          &lt;li&gt;Preguntas Frecuentes&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/nav&gt;
    &lt;/header&gt;
    &lt;main&gt;
      &lt;section class="about-me"&gt;
        &lt;article&gt;
          Lorem ipsum dolor, sit amet consectetur adipisicing elit. Optio magni
          est asperiores nemo, adipisci minus itaque quam, rem libero aliquam
          nesciunt, nisi inventore assumenda earum repellat labore ratione
          architecto eos quis. Soluta mollitia cupiditate dolorem. Consequatur a
          soluta laudantium nihil. Molestias, officiis ut! Nobis adipisci
          voluptatem quam at officia beatae!
        &lt;/article&gt;
      &lt;/section&gt;
      &lt;section class="contact-me"&gt;
        Me puedes encontrar en
        &lt;a href="https://twitter.com/koladechris"&gt;Twitter&lt;/a&gt; Me puedes encontrar en
        &lt;a href="https://Instagram.com/koladechris"&gt;Instagram&lt;/a&gt;
      &lt;/section&gt;
      &lt;aside class="address"&gt;Mi direccion&lt;/aside&gt;
    &lt;/main&gt;
    &lt;footer&gt;© 2020 Todos los derechos reservados&lt;/footer&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>Así luce en el navegador:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/01/image-2.png" class="kg-image" alt="image-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/01/image-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2023/01/image-2.png 655w" width="655" height="370" loading="lazy"></figure><p>Puedes notar como el contenido de <code>&lt;aside&gt;</code> es parte del contenido principal y el contenido de <code>&lt;nav&gt;</code> no aparece como una barra de navegación automáticamente. Por esta razón, aún tienes que hacer que luzca como debería, haciendo uso de CSS.</p><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>Espero que este artículo te haya ayudado a aprender lo básico de HTML y que es lo que hace. Ahora puedes comenzar a aprender tecnologías más avanzadas como CSS o JavaScript y comenzar a formar una carrera sólida en el desarrollo web</p><p>Muchas gracias por haber leído y espero que te encuentres bien.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Subcadena de Python: Cómo dividir una cadena ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Davis David [https://www.freecodecamp.org/news/author/davis/] Artículo original Python Substring – How to Slice a String [https://www.freecodecamp.org/news/python-substring-how-to-slice-a-string/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] En Python, una cadena de caracteres es una secuencia  que puede contener caracteres especiales o alfanuméricos. Un ejemplo de una cadena es "Nos vemos el viernes ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/subcadena-de-pyton-como-dividir-una-cadena/</link>
                <guid isPermaLink="false">62264d977fbf230853a580cc</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Tue, 15 Mar 2022 02:17:40 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/03/portada-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original escrito por </strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/davis/">Davis David</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original</strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/python-substring-how-to-slice-a-string/">Python Substring – How to Slice a String</a><br><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Traducido y adaptado por</strong></strong></strong></strong></strong></strong></strong></strong> </strong></strong></strong></strong></strong></strong></strong></strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>En Python, una cadena de caracteres es una secuencia &nbsp;que puede contener caracteres especiales o alfanuméricos.</p><p>Un ejemplo de una cadena es <em>"Nos vemos el viernes a las 8:00 am". </em>Y en Python es posible acceder a partes específicas de una cadena de caracteres; también llamadas subcadenas.</p><p>Una subcadena se puede definir como una secuencia de caracteres dentro de una cadena. En el caso de la cadena anterior, ejemplos de subcadenas pueden ser los siguientes "viernes", "vemos" y "8:00".</p><h2 id="como-generar-una-subcadena-en-python"><strong>Como generar una subcadena en Python</strong></h2><p>Python cuenta con diferentes métodos y formas para generar subcadenas, para verificar si una subcadena existe, para obtener el índice de una cadena y mucho más.</p><p>Puedes extraer una subcadena de una cadena con una técnica comúnmente llamada "slicing", la cual se refiere a dividir la cadena original en "rebandas" por medio de índices o la posición de un carácter de la cadena original.</p><p>slicing &nbsp;puede ser traducido como rebanar.</p><p>cadena <code>[inicio:final:saltos o pasos]</code></p><ul><li><strong>inicio</strong>- El índice inicial donde empezara la subcadena- por defecto es 0.</li><li><strong>final</strong>- El índice final, donde terminara la subcadena - por defecto, es -1.</li><li><strong>salto o paso</strong>- Número que indicara los saltos que seguirá la secuencia o subcadena. Por defecto es 1.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/03/image-8.png" class="kg-image" alt="image-8" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/03/image-8.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/03/image-8.png 774w" sizes="(min-width: 720px) 720px" width="774" height="132" loading="lazy"></figure><p>Los índices pueden ser positivos o negativos. Los índices positivos van desde el inicio de la cadena hasta el final y los índices negativos van del final de la cadena al inicio.</p><p>Ahora veremos diferentes ejemplos de lo que podemos hacer con subcadenas.</p><h2 id="como-obtener-los-primeros-n-caracteres-de-una-cadena-en-python"><strong>Como obtener los primeros n caracteres de una cadena en Python</strong></h2><p>En este ejemplo verás como obtener los primeros 4 caracteres de una cadena.</p><pre><code class="language-python">cadena = "hola mundo"
print(cadena[:4])

# Recuerda
# cadena[inicio:final:saltos]</code></pre><p>Aquí el parámetro "final" es 4 y el parámetro "inicio" por defecto es 0.</p><p>El resultado será <code>‘hola’</code>.</p><h2 id="como-obtener-los-caracteres-de-en-medio-de-una-cadena-en-python-con-subcadenas"><strong>Como obtener los caracteres de en medio de una cadena en Python con subcadenas</strong></h2><p>En este ejemplo verás como obtener los caracteres del índice 3 al índice 5 de una cadena.</p><pre><code class="language-python">cadena = "hola mundo"
print(cadena[2:4])
</code></pre><p>El resultado es <code>'la’</code>.</p><h2 id="como-obtener-los-ltimos-n-caracteres-de-una-cadena-en-python"><strong>Como obtener los últimos n caracteres de una cadena en Python</strong></h2><p>En este ejemplo verás como obtener los últimos 4 caracteres de una cadena, para esto, el parámetro "inicio" ahora será un índice negativo para iniciar a partir del final dela cadena.</p><pre><code class="language-python">cadena = "freecodecamp"
print(cadena[-4:])
</code></pre><p>El resultado es <code>‘camp’</code>.</p><h2 id="como-obtener-una-subcadena-con-saltos-en-los-caracteres-de-la-cadena-original-en-python"><strong>Como obtener una subcadena con saltos en los caracteres de la cadena original en Python </strong></h2><p>También es posible obtener los caracteres con saltos, respecto a la cadena original.<br>Por defecto los saltos son de uno en uno (1, 2, 3, 4, 5) pero si especificamos que el valor de los saltos sea dos (1, 3, 5, 7, 9) o tres (1, 4, 7, 10, 13) podemos obtener diferentes resultados.</p><pre><code class="language-python">cadena = "Bienvenido a freecodecamp"
print(cadena[::2])
</code></pre><p>El resultado es <code>‘Bevnd reoeap’</code>.</p><h2 id="como-saber-si-una-subcadena-es-parte-de-una-cadena-en-python"><strong>Como saber si una subcadena es parte de una cadena en Python</strong></h2><p>Hay veces que necesitarás saber si una subcadena es parte de una cadena. El siguiente ejemplo comprobará si la subcadena ‘code’ &nbsp;está dentro de una cadena diferente.</p><pre><code class="language-python">subcadena = "code"
cadena = "Bienvenido a freecodecamp"
print(subcadena in cadena)

# "in" en este contexto se puede traducir como "dentro de"

</code></pre><p>Si la subcadena es parte de la cadena, el código retornara verdadero (true) de lo contrario retornará False/falso<br><br>El resultado es <code>True</code>.</p><h2 id="otra-forma-de-comprobar-si-una-subcadena-es-parte-de-una-cadena-en-python"><strong>Otra forma de comprobar si una subcadena es parte de una cadena en Python</strong></h2><p>También puedes utilizar el método &nbsp;<code>find()</code> para comprobar si una subcadena es parte de una cadena.</p><pre><code class="language-python">subcadena = "zz"
cadena = "hola mundo"
print(cadena.find(subcadena))

# find en este contexto se puede traducir como "encontrar"
</code></pre><p>Si encuentra la subcadena dentro de la cadena, el código retornará el índice donde empieza la subcadena, &nbsp;de lo contrario retornará -1 (que significa que no encontró la subcadena)</p><p>Aquí el resultado es <code>-1</code>, lo que significa que <strong><strong> “zz”</strong></strong> no está dentro de “hola mundo”.</p><h2 id="como-obtener-el-car-cter-de-un-ndice-dado-de-una-cadena-en-python-"><strong>Como obtener el carácter de un índice dado de una cadena en Python.</strong></h2><p>También puedes extraer un solo carácter dando su índice como único parámetro.</p><pre><code class="language-python">cadena ="hola mundo"
print(cadena[3])
</code></pre><p>El resultado es <code>‘a’</code>.</p><h2 id="como-obtener-el-ltimo-car-cter-de-una-cadena-en-python-"><strong>Como obtener el último carácter de una cadena en Python.</strong></h2><p>Para obtener el último carácter se utiliza el índice -1 (un índice negativo).</p><pre><code class="language-python">cadena = "freecodecamp"
print(cadena[-1])
</code></pre><p>El resultado es <code>‘p’</code>.</p><h2 id="como-obtener-una-lista-de-subcadenas-a-partir-de-una-cadena-en-python"><strong>Como obtener una lista de subcadenas a partir de una cadena en Python</strong></h2><p>Usando el método &nbsp;<strong><strong><code>split()</code></strong>,</strong> puedes crear una lista de subcadenas como en el siguiente ejemplo.</p><pre><code class="language-python">cadena = "Bienvenido a la plataforma freecodecamp"
print(cadena.split())
</code></pre><p>El resultado es <code>['Bienvenido', 'a', 'la', 'plataforma', 'freecodecamp']</code></p><h2 id="como-invertir-una-cadena-en-python-con-saltos-negativos"><strong>Como invertir una cadena en Python con saltos negativos</strong></h2><p>Para invertir una cadena, el parámetro saltos debe ser un valor negativo, por ejemplo -1</p><pre><code class="language-python">cadena = "Bienvenido a freecodecamp"
print(cadena[::-1])
</code></pre><p>EL resultado es <code>‘pmacedoceerf a odinevneiB’</code>.</p><h2 id="como-saber-cuantas-veces-est-una-subcadena-dentro-de-una-cadena-en-python"><strong>Como saber cuantas veces está una subcadena dentro de una cadena en Python</strong></h2><p>Puedes utilizar el método <code>count()</code> &nbsp;para saber cuantas veces esta una subcadena dentro de una cadena.</p><pre><code class="language-python">cadena = "tendremos una clase rapida de programacion esta tarde"
print(cadena.count('arde'))

# "count" en este contexto se puede traducir como "contar"</code></pre><p>El resultado es <code>1</code>.</p><h2 id="para-terminar-"><strong>Para terminar.</strong></h2><p>Felicidades ??, ¡has terminado de leer este artículo! Espero y hayas aprendido algo nuevo sobre subcadenas en Python</p><p>Si aprendiste algo nuevo o disfrutaste este artículo, por favor comparte y así más personas podrán leerlo. ¡Nos vemos en el siguiente artículo!.</p><p>También puedes encontrarme en Twitter <a href="https://twitter.com/Davis_McDavid?ref=hackernoon.com" rel="noopener noreferrer ugc">@Davis_McDavid</a>. o puedes leer más artículos similares <a href="https://hackernoon.com/u/davisdavid?ref=hackernoon.com" rel="ugc">aquí</a>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Sentencias Try y Except de Python: Cómo manejar excepciones en Python ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Bala Priya C [https://www.freecodecamp.org/news/author/bala-priya/] Artículo original Python Try and Except Statements – How to Handle Exceptions in Python [https://www.freecodecamp.org/news/python-try-and-except-statements-how-to-handle-exceptions-in-python/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] Al programar en Python algunas veces podemos anticipar errores de ejecución, incluso en un programa sintáctica y lógicamente corre ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/sentencias-try-y-except-de-python-como-menejar-excepciones-en-python/</link>
                <guid isPermaLink="false">61d8bd9b148c1c0972346783</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Fri, 04 Feb 2022 03:01:22 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/try-except--1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original escrito por </strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/bala-priya/">Bala Priya C</a><br><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original </strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/python-try-and-except-statements-how-to-handle-exceptions-in-python/">Python Try and Except Statements – How to Handle Exceptions in Python</a><br><strong><strong><strong><strong><strong><strong><strong><strong>Traducido y adaptado por</strong></strong></strong></strong> </strong></strong></strong></strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>Al programar en Python algunas veces podemos anticipar errores de ejecución, incluso en un programa sintáctica y lógicamente correcto, pueden llegar a haber errores causados por entrada de datos inválidos o inconsistencias predecibles.</p><p>En Python, puedes usar los bloques <code>try</code> y <code>except</code> para manejar estos errores como <em>excepciones.</em></p><p>En este tutorial aprenderás la sintaxis básica de <code>try</code> y <code>except</code>. Después escribirás ejemplos simples, detectaras que puede salir mal y brindaras soluciones correctivas usando los bloques <code>try</code> y <code>except</code>.</p><h2 id="sintaxis-de-try-y-except-en-python"><strong>Sintaxis de Try y Except en Python</strong></h2><p>Empecemos por entender la sintaxis de las declaraciones <code>try</code> y <code>except</code> en Python. La sintaxis básica es la siguiente:</p><pre><code>try:
	# Codigo a ejecutar
	# Pero podria haber errores en este bloque
    
except &lt;tipo de error&gt;:
	# Haz esto para manejar la excepcion
	# El bloque except se ejecutara si el bloque try lanza un error
    
else:
	# Esto se ejecutara si el bloque try se ejecuta sin errores
   
finally:
	# Este bloque se ejecutara siempre
</code></pre><p>Veamos el uso de cada uno de estos bloques:</p><ul><li>EL bloque <code>try</code> es el bloque con las sentencias que quieres ejecutar. Sin embargo, podrían llegar a haber errores de ejecución &nbsp;y el bloque se dejará de ejecutarse.</li><li>El bloque <code>except</code> se ejecutará cuando el bloque <code>try</code> falle debido a un error. Este bloque contiene sentencias que generalmente nos dan un contexto de lo que salió mal en el bloque <code>try</code>.</li><li>Siempre deberías de mencionar el <code>tipo de error</code> que se espera, como una excepción dentro del bloque <code>except</code> dentro de <code>&lt;tipo de error&gt;</code> como lo muestra el ejemplo anterior.</li><li>Podrías usar <code>except</code> sin especificar el <code>&lt;tipo de error&gt;</code>. Pero no es una práctica recomendable, ya que no estarás al tanto de los tipos de errores que puedan ocurrir.</li></ul><blockquote>Cuando se ejecute el código dentro del bloque <code>try</code>, existe la posibilidad de que ocurran diferentes errores.</blockquote><p>Por ejemplo, podrías acceder a una lista utilizando un índice fuera de rango, usar una clave incorrecta en un diccionario y tratar de abrir un archivo que no existe - todo esto dentro de un bloque <code>try</code>.</p><p>En este caso, podrías esperar lo siguiente: <code>IndexError</code>, <code>KeyError</code> y <code>FileNotFoundError</code>. Y tendrías que añadir un bloque <code>except</code> por cada tipo de error que puedas anticipar.</p><ul><li>El bloque <code>else</code> se ejecutará solo si el bloque <code>try</code> se ejecuta sin errores. Esto puede ser útil cuando quieras continuar el código del bloque <code>try</code>. Por ejemplo si abres un archivo en el bloque <code>try</code>, podrías leer su contenido dentro del bloque <code>else</code>.</li><li>El bloque <code>finally</code> siempre es ejecutado sin importar que pase en los otros bloques, esto puede ser útil cuando quieras liberar recursos después de la ejecución de un bloque de código, &nbsp;( <code>try</code>, <code>except</code> o <code>else</code> ).</li></ul><blockquote><strong>Nota</strong>: Los bloques <code>else</code> y <code>finally</code> son opcionales. En muchos casos puedes solo ocupar el bloque <code>try</code> para tratar de ejecutar algo y capturar los errores como excepciones &nbsp;en el bloque <code>except</code>.</blockquote><p>Ahora es momento de usar lo que has aprendido sobre el manejo de excepciones en Python.<br>Empecemos.</p><h2 id="como-manejar-zerodivisionerror-en-python"><strong>Como manejar <code>ZeroDivisionError</code> en Python</strong></h2><p>Considera la siguiente función, <code>dividir()</code>, toma 2 argumentos - <code>num</code> y <code>div</code> - y retorna el resultado o cociente de dividir <code>num/ div</code>.</p><pre><code class="language-python">def dividir(num,div):
  return num/div</code></pre><p>▶ Llamar a la función con diferentes números retorna el resultado de la división.</p><pre><code class="language-python">res = dividir(100,8)
print(res)

# Salida
12.5

res = dividir(568,64)
print(res)

# Salida
8.875
</code></pre><p>Este código funciona hasta que tratamos de dividir entre cero:</p><pre><code class="language-python">dividir(27,0)

</code></pre><p>Puedes ver que el programa se detiene y arroja <code>ZeroDivisionError</code>:</p><pre><code># Salida
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
&lt;ipython-input-19-932ea024ce43&gt; in &lt;module&gt;()
----&gt; 1 dividir(27,0)

&lt;ipython-input-1-c98670fd7a12&gt; in dividir(num, div)
      1 def divide(num,div):
----&gt; 2   return num/div

ZeroDivisionError: division by zero
</code></pre><pre><code>ZeroDivisionError
Esta linea nos describe el tipo de error y se podria traducir como:

"Error de division entre cero"

Y lo vemos cuando en python intentamos dividir un numero entre cero
</code></pre><p>Podemos tratar esta división entre cero como una excepción, haciendo lo siguiente:</p><ul><li>Desde el bloque <code>try</code> llama a la función <code>dividir()</code>.</li><li>En el bloque <code>except</code> tendremos una excepción en caso de que <code>div</code> sea igual a cero.</li><li>En este ejemplo se hace una excepción a <code>ZeroDivisionError</code> (el tipo de error) el cual se especifica en <code>except</code> </li><li>Cuando se detecte el error <code>ZeroDivisionError</code> se ejecutara el bloque <code>except</code> donde pondremos un mensaje informando que se trató de dividir entre cero.</li></ul><p>Aquí se muestra el código completo:</p><pre><code class="language-python">try:
    res = dividir(num, div)
    print(res)
except ZeroDivisionError:
    print("Trataste de dividir entre cero :( ")
</code></pre><p>Con una entrada valida el código funciona correctamente:</p><pre><code class="language-python">dividir(10,2)
# Salida
5.0
</code></pre><p>Cuando tratas de dividir entre cero, se notificara de la excepción &nbsp;y el código seguirá ejecutándose.</p><pre><code class="language-python">dividir(10,0)
# Salida
Trataste de dividir entre cero :(
</code></pre><h2 id="como-enfrentar-typeerror-en-python"><strong>Como enfrentar <code>TypeError</code> en &nbsp;Python</strong></h2><p>En esta sección, verás como usar <code>try</code> y <code>except</code> para manejar el error <code>TypeError</code> en Python.</p><p>▶Piensa en una función llamada &nbsp;<code>mas_10()</code>, que toma un número como argumento, le añade 10, y retorna el resultado de la suma.</p><pre><code class="language-python">def mas_10(num):
  return num + 10</code></pre><p>Puedes llamar a la función <code>mas_10()</code> con cualquier número y funcionará correctamente, como puedes ver en el siguiente ejemplo:</p><pre><code class="language-python">resultado = mas_10(89)
print(resultado)

# Salida
99</code></pre><p>Ahora trata llamar a <code>mas_10()</code> con <code>"cinco"</code> en lugar de <code>5</code>.</p><pre><code class="language-python">add_10("cinco")</code></pre><p>Notarás que tu programa se detiene y el siguiente mensaje de error es mostrado.</p><pre><code>---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
&lt;ipython-input-15-9844e949c84e&gt; in &lt;module&gt;()
----&gt; 1 add_10("five")

&lt;ipython-input-13-2e506d74d919&gt; in add_10(num)
      1 def add_10(num):
----&gt; 2   return num + 10

TypeError: can only concatenate str (not "int") to str</code></pre><pre><code>TypeError
Este error se puede traducir como:
"Error de tipo" 
Que sale cuando usamos un tipo de dato incorrecto.

can only concatenate str (not "int") to str
Esta linea se puede traducir como:
Solo se puede concatenar una cadenas de texto, (no un "numero entero") a otra cadena de texto.

Ya que no se pueden hacer operaciones entre un numero y un texto.</code></pre><p>Ahora, teniendo el siguiente código:</p><pre><code class="language-python">mi_num = "cinco"
try:
  resultado = mas_10(mi_num)
  print(resultado)
except TypeError:
  print("El argumento `mi_num` deberia ser un número")</code></pre><p>Así funciona el código anterior:</p><ul><li>Teniendo la variable <code>mi_num</code>, llamamos a la función <code>mas_10()</code> con <code>mi_num</code> como argumento, si el argumento es un tipo de dato válido, no se activará la excepción.</li><li>De lo contrario, el bloque <code>except</code> con el tipo de error <code>TypeError</code> se activará, &nbsp;notificándole al usuario que el argumento es un tipo de dato inválido.</li></ul><pre><code># Salida

El argumento `mi_num` deberia ser un número</code></pre><p>Ya que estamos especificando que <code>TypeError</code> es una excepción el programa no se detendrá y te notificara que el argumento es inválido.</p><h2 id="como-manejar-indexerror-en-python"><strong>Como manejar <code>IndexError</code> en Python</strong></h2><p>Si has trabajado con listas en Python o cualquier tipo de iterable, probablemente ya hayas visto el error <code>IndexError</code>.</p><p>Esto ocurre, ya que a veces es difícil estar al tanto de todos los cambios en un iterable y podrías estar usando un índice no válido para acceder a un elemento del iterable.</p><p>mira la siguiente lista:</p><pre><code class="language-python">mi_lista = ["Python","C","C++","JavaScript"]
</code></pre><p>▶ En este ejemplo, <code>mi_lista</code> tiene 4 elementos. Los índices válidos son <code>0, 1, 2, 3</code> &nbsp;y <code>-1, -2, -3, -4</code> si usas indexación negativa.</p><pre><code class="language-python">mi_lista = ["Python","C","C++","JavaScript"]
print(my_lista[2])

# Salida
C++</code></pre><p>Ya que <code>2</code>es un índice válido, al imprimir <code>my_lista[2]</code> el elemento <code>c++</code> es mostrado en pantalla.</p><p>Si tratas de acceder a la lista con un índice fuera del rango permitido, ocurrirá un error en la ejecución y aparecerá el error <code>IndexError</code>:</p><pre><code class="language-python">print(mi_lista[4])</code></pre><pre><code>---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
&lt;ipython-input-7-437bc6501dea&gt; in &lt;module&gt;()
      1 mi_lista = ["Python","C","C++","JavaScript"]
----&gt; 2 print(mi_lista[4])

IndexError: list index out of range</code></pre><pre><code>IndexError
Esta linea se puede traducir como:
Error de indice

list index out of range
Esta linea se puede traducir como:
indice de la lista fuera de rango</code></pre><p>Si ya te familiarizaste &nbsp;con los bloques <code>try</code> y <code>except</code> sabes que podemos usarlos para evitar el error anterior.</p><p>▶En el siguiente código, etas intentando acceder a un elemento con la variable <code>buscar_ind</code></p><pre><code class="language-python">mi_lista = ["Python","C","C++","JavaScript"]
buscar_ind = 3
try:
  print(mi_lista[buscar_ind])
except IndexError:
  print("Lo siento, el indice esta fuera de rango")</code></pre><p>Aquí, <code>buscar_ind</code> &nbsp;(<code>3</code>) es un índice válido, y elemento en ese índice &nbsp;es impreso en pantalla:</p><pre><code>JavaScript</code></pre><p>Si <code>buscar_ind</code> está fuera del rango permitido, el bloque <code>except</code> reconoce el error <code>IndexError</code> como una <code>excepcion</code> y se mostrara nuestro pequeño mensaje en lugar de la descripción larga del error &nbsp;?.</p><pre><code class="language-python">mi_lista = ["Python","C","C++","JavaScript"]
buscar_ind = 4
try:
  print(mi_lista[buscar_ind])
except IndexError:
  print("Lo siento, el indice esta fuera de rango")</code></pre><p>Aquí podemos ver nuestro mensaje personalizado para la excepción</p><pre><code>Lo siento, el indice esta fuera de rango</code></pre><h2 id="como-manejar-keyerror-en-python"><strong>Como manejar <code>KeyError</code> en Python</strong></h2><p>Si has trabajado con diccionarios en Python, probablemente el error &nbsp;<code>keyError</code> no sea algo nuevo.</p><p>▶ Examina el siguiente código donde tenemos un diccionario <code>mi_dict</code>.</p><pre><code class="language-python">mi_dict ={"clave1":"valor1", "clave2":"valor2", "clave3":"valor3"}
buscar_clave = "clave no existente"
print(mi_dict[buscar_clave])</code></pre><ul><li>El diccionario <code>mi_dict</code> tiene 3 pares "clave-valor", <code>"clave1":"valor1"</code>, <code>"clave2":"valor2"</code>, <code>"clave3":"valor3"</code></li><li>Intentamos acceder a los valores del diccionario con la clave <code>"clave no existente"</code>.</li></ul><p>Ya que la clave no existe, el programa se detiene y obtenemos el error <code>keyError</code>.</p><pre><code>---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
&lt;ipython-input-2-2a61d404be04&gt; in &lt;module&gt;()
      1 my_dict ={"key1":"value1","key2":"value2","key3":"value3"}
      2 search_key = "non-existent key"
----&gt; 3 my_dict[search_key]

KeyError: 'non-existent key'</code></pre><pre><code>KeyError
Este la linea se puede traducir como:
Error de clave

'non-existent key'
Esta linea se puede traducir como:
Clave no existente</code></pre><p>Puedes resolver el error <code>KeyError</code> de la misma forma que el error anterior <code>IndexError</code>.</p><pre><code class="language-python">try:
  print(mi_dict[buscar_clave])
except KeyError:
  print("¡Lo siento, clave invalida!")</code></pre><ul><li>Accedemos al diccionario con una clave especificada en <code>buscar_clave</code></li><li>Si <code>buscar_clave</code> contiene una clave válida, el valor correspondiente será impreso en pantalla.</li><li>Si, por el contrario, la clave no existe, usamos el bloque <code>except</code> para tratar al error <code>keyError</code> como una excepción e informar al usuario con un pequeño mensaje.</li></ul><pre><code>¡Lo siento, clave invalida!</code></pre><p>▶ También es posible añadir información extra; como el nombre de la clave inválida, talvez solo ingresaste mal la clave, lo que provocaría el error, hacerle saber al usuario la clave que introdujo podría ayudarle a corregir errores de escritura, como escribir <code>nombe</code> en lugar de <code>nombre</code>.</p><p>Puedes hacerlo guardando la clave inválida en <code>&lt;msg_error&gt;</code> y agregarla en nuestro mensaje de error.</p><pre><code class="language-python">try:
  print(mi_dict[buscar_clave])
except KeyError as msg_error::
  print(f"¡Lo siento, {error_msg} no es una clave valida!")</code></pre><p>▶Puedes ver como el nombre de la clave también se imprime en pantalla:</p><pre><code>¡Lo siento, 'clave no existente' no es una clave valida!</code></pre><h2 id="como-manejar-filenotfounderror-en-python"><strong>Como manejar &nbsp;<code>FileNotFoundError</code> en Python</strong></h2><p>Un error común al trabajar con archivos en Python es el error <code>FileNotFoundError</code>.</p><p>▶En el siguiente ejemplo, trataras de abrir el archivo <code>mi_archivo.txt</code> especificando su ruta en la función <code>open()</code>, después intentaras leerlo e imprimir su contenido.</p><p>Sin embargo, aún no has creado el archivo en la ruta especificada.</p><p>Si intentas correr el código siguiente, obtendrás el error <code>FileNotFoundError</code>:</p><pre><code class="language-python">mi_archivo = open("Contenido/datos_muestra/mi_archivo.txt")
contenido = mi_archivo.read()
print(contenido)</code></pre><pre><code>---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
&lt;ipython-input-4-4873cac1b11a&gt; in &lt;module&gt;()
----&gt; 1 my_file = open("my_file.txt")

FileNotFoundError: [Errno 2] No such file or directory: 'my_file.txt'</code></pre><pre><code>FileNotFoundError
Esta linea se puede traducir como:
error, archivo no encontrado

No such file or directory: 'mi_archivo.txt.txt'
Esta linea se puede traducir como:
El archivo o directorio no existe: 'mi_archivo.txt.txt'

</code></pre><p>Usando <code>try</code> y <code>except</code>, puedes hacer lo siguiente:</p><ul><li>Tratar de abrir el archivo en el bloque <code>try</code>.</li><li>En el bloque <code>except</code> tendremos una excepción en caso de que el archivo no exista y le notificaremos al usuario.</li><li>Si el bloque <code>try</code> no tiene errores y el archivo si existe, leeremos e imprimiremos el contenido del archivo. </li><li>En el bloque <code>finally</code>, cerramos el archivo para evitar desperdiciar recursos. Recuerda que el archivo será cerrado independientemente de lo que ocurra en los pasos de apertura y lectura del archivo</li></ul><figure class="kg-card kg-code-card"><pre><code class="language-python">try:
  mi_archivo = open("Contenido/datos_muestra/mi_archivo.txt")
except FileNotFoundError:
  print(f"Lo siento, el archivo no existe")
else:
  contenido = mi_archivo.read()
  print(contenido)
finally:
  mi_archivo.close()</code></pre><figcaption></figcaption></figure><p>Ahora manejamos el error como una excepción y el programa termina solo con un pequeño mensaje:</p><pre><code>Lo siento, el archivo no existe</code></pre><p>▶ Ahora consideremos que el archivo <code>mi_archivo.txt</code> existe y, por lo tanto, el bloque <code>else</code> ya se podría ejecutar.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/01/image-77.png" class="kg-image" alt="image-77" width="497" height="137" loading="lazy"></figure><p>Y aquí está el contenido de <code>miarchivo.txt</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/image-7.png" class="kg-image" alt="image-7" width="331" height="596" loading="lazy"></figure><p>Ahora que tenemos el archivo y carpetas, ejecutaremos una vez más el código anterior y debería funcionar sin problemas.</p><p>Esta vez, el archivo <code>mi_archivo.txt</code> está presente, el bloque <code>else</code> es ejecutado y su contenido es mostrado en pantalla.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2022/02/Sin-t-tulo.png" class="kg-image" alt="Sin-t-tulo" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2022/02/Sin-t-tulo.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2022/02/Sin-t-tulo.png 672w" width="672" height="842" loading="lazy"></figure><p>Espero esto te haya dejado claro como manejar las excepciones cuando trabajes con archivos.</p><p><strong>Conclusión</strong></p><p>Este tutorial aprendiste como usar <code>try</code> y <code>except</code> en Python para manejar excepciones.</p><p>Escribiste ejemplos para entender que tipo de excepciones pueden ocurrir y como usar &nbsp;<code>except</code> para detectar los errores más comunes.</p><p>Espero hayas disfrutado este tutorial.<br>Hasta la próxima :)</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Tutorial de f-strings en Python: Formato de cadenas en Python explicado con ejemplos ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Bala Priya C [https://www.freecodecamp.org/news/author/bala-priya/] Artículo original Python f-String Tutorial – String Formatting in Python Explained with Code Examples [https://www.freecodecamp.org/news/python-f-strings-tutorial-how-to-use-f-strings-for-string-formatting/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] Al querer dar formato o mostrar una cadena texto en Python, probablemente hayas usado el método format(). Pero a p ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/tutorial-de-f-strings-en-python-formato-de-cadenas-en-python-explicado-con-ejemplos/</link>
                <guid isPermaLink="false">617c16249f4fd50941223b79</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Fri, 07 Jan 2022 08:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/12/py-fstrings--1--1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong>Artículo original escrito por </strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/bala-priya/">Bala Priya C</a><br><strong><strong><strong><strong>Artículo original </strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/python-f-strings-tutorial-how-to-use-f-strings-for-string-formatting/">Python f-String Tutorial – String Formatting in Python Explained with Code Examples</a><br><strong><strong><strong><strong>Traducido y adaptado por</strong></strong> </strong></strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>Al querer dar formato o mostrar una cadena texto en Python, probablemente hayas usado el método <code>format()</code>.</p><p>Pero a partir de la versión 3.6 se introdujo <em><code>f-Strings</code>.</em> También llamado <em><em>formatted string literals</em> </em>ó<em> Formateo literal de cadenas, </em>f-Strings tiene una sintaxis simple y fluida que hará más sencillo el darle formato a cadenas de texto.</p><p>En este tutorial, aprenderás sobre f-strings en Python y diferentes formas de darle formato a cadenas de texto</p><h2 id="-qu-son-f-strings-en-python"><strong>¿Qué son f-Strings en Python?</strong></h2><p>En Python, una cadena de texto normalmente se escribe entre comillas dobles (<code>""</code>) o comillas simples (<code>''</code>). Para crear f-strings, solo tienes que agregar la letra <code>f</code> o <code>F</code> mayúscula antes de las comillas.</p><blockquote>Por ejemplo, <code>"esto"</code><em> es una cadena de texto normal y</em> <code>f"esto"</code> es una f-string.</blockquote><h2 id="como-imprimir-variables-usando-f-strings-en-python"><strong>Como imprimir variables usando f-strings en Python</strong></h2><p>Si quieres mostrar variables utilizando f-strings, solo tienes especificar el nombre de las variables entre llaves <code>{}</code>. Y al ejecutar tu código, todos los nombres de las variables serán remplazados con sus respectivos valores.</p><blockquote>En caso de tener multiples variables en tu cadena de texto, cada variable necesita llaves propias {}</blockquote><p>Aquí puedes ver la sintaxis:</p><pre><code>f"Esta es una f-string {nombre_var} y {nombre_var}."</code></pre><p>▶ Ejemplo de una f-string.</p><p>Tienes dos variables <code>lenguaje</code> y <code>escuela</code>, entre llaves, dentro de una f-string.</p><pre><code class="language-python">lenguaje = "Python"
escuela = "freeCodeCamp"
print(f"Estoy aprendiendo {lenguaje} en {escuela}.")</code></pre><p>El resultado es el siguiente:</p><pre><code># Salida
Estoy aprendiendo Python en freeCodeCamp.</code></pre><p>Puedes ver como las variables &nbsp;<code>lenguaje</code> y <code>escuela</code> han sido reemplazadas con <code>Python</code> y <code>freeCodeCamp</code>, respectivamente.</p><h2 id="como-evaluar-expresiones-en-python-con-f-strings"><strong>Como evaluar expresiones en Python con f-Strings</strong></h2><p>Como las f-Strings son evaluadas al momento de ejecución (cuando se está ejecutando el código Python), bien podrías usar una f-string para evaluar expresiones válidas.</p><p>▶ En el siguiente ejemplo. <code>num1</code> y<code>num2</code> son nuestras variables, para obtener el producto de estas variables únicamente basta con escribir la siguiente expresión <code>num1 * num2</code> dentro de llaves.</p><pre><code class="language-python">num1 = 83
num2 = 9
print(f"El producto de {num1} y {num2} es {num1 * num2}.")</code></pre><p>Puedes ver como <code>num1 * num2</code> es reemplazado &nbsp;por el producto de <code>num1</code> y<code>num2</code> a la hora de ejecutar el código.</p><pre><code># Salida 
El producto de 83 y 9 es 747.</code></pre><p>Espero y puedas ver el patrón al momento de utilizar f-Strings.</p><p>En cualquier f-string, &nbsp;<code>{var_nombre}</code> y <code>{expresion}</code> se sustituirán &nbsp;por los valores que representan &nbsp;o por el valor resultante de una operación en el momento de ejecución (cuando se está ejecutando el código Python).</p><p>Sigue leyendo para aprender más de f-Strings.</p><h2 id="como-usar-condicionales-en-python-con-f-strings"><strong>Como usar condicionales en Python con f-strings</strong></h2><p>Empecemos dando un repaso a las declaraciones <code>if..else</code>. La sintaxis básica es la siguiente:</p><pre><code>if condicion:
  # Haz esto si la condicion es verdadra/true &lt;bloque_true&gt;
else:
  # Haz esto di la condicion es falsa/false &lt;bloque_false&gt;</code></pre><p>Aquí, <code>condicion</code> es la expresión a la cual evaluaremos su valor booleano,</p><ul><li>Si la <code>condicion</code> es verdadera, las declaraciones del bloque <code>if</code> &nbsp;(<code>bloque_true</code>) serán ejecutadas.</li><li>Si la <code>condicion</code> es falsa, Las declaraciones del bloque <code>else</code> (<code>bloque_false</code>) serán ejecutadas.</li></ul><p>Hay otra alternativa a la sintaxis <code>if..else</code>, la cual puede ser escrita en una sola línea con la sintaxis siguiente.</p><pre><code>&lt;bloque_true&gt; if &lt;condicion&gt; else &lt;bloque_false&gt;</code></pre><blockquote>En la sintaxis anterior, el <code>&lt;bloque true&gt;</code> es ejecutado cuando <code>condicion</code> es verdadera, y el <code>&lt;bloque false&gt;</code> se ejecutara &nbsp;cuando <code>condicion</code> sea falsa</blockquote><p>La sintaxis anterior &nbsp;puede parecer complicada si no la habías visto antes, talvez el siguiente ejemplo sea un poco más sencillo.</p><pre><code>&lt;bloque_true&gt; if &lt;condicion&gt; else &lt;bloque_false&gt;
&lt;Haz esto&gt; si la &lt;condicion es verdadera&gt;; si no , &lt;haz esto otro&gt;</code></pre><p><br>Comúnmente en Python &nbsp;a esta declaración se le llama operador <code>ternario⁣, ya que</code> toma tres operadores, el &lt;bloque true&gt;, &nbsp;&lt;condición&gt; y el &lt;bloque false&gt;</p><p>▶ Veamos un ejemplo sencillo utilizando el operador ternario.</p><p>Dado un número <code>num</code>, te gustaría saber si es par. Sabemos si un número es par si es divisible entre 2. </p><p>Escribamos nuestro código:</p><pre><code class="language-python">num = 87;
print(f"¿num es par? {True if num%2==0 else False}")</code></pre><p>En el código anterior:</p><ul><li><code>num%2==0</code> es la condición.</li><li>Si la condición es true/verdadera, se retornara <code>True</code> indicando que <code>num</code> es par y retornara <code>False</code> si la condición es False/falsa</li></ul><pre><code>#Salida
¿num es par? False</code></pre><p>En el ejemplo anterior, &nbsp;<code>num</code> es 87, un número impar, por lo tanto, la declaración if dentro del f-string es remplazada con <code>False</code></p><p>Ahora probemos con un número diferente.</p><pre><code class="language-python">num = 10;
print(f"¿num es par? {True if num%2==0 else False}")

#salida
¿num es par? True</code></pre><h2 id="como-llamar-m-todos-en-python-con-f-strings"><strong>Como llamar métodos en Python con f-Strings</strong></h2><p>Hasta ahora hemos visto como imprimir el valor de una variable, evaluar una expresión y como usar condicionales dentro de f-strings. Es hora de pasar al siguiente nivel.</p><p>▶ Analiza el siguiente ejemplo:</p><pre><code class="language-python">autor = "gabriel garcia"
print(f"libro escrito por {autor}.")</code></pre><p>El código anterior imprime en pantalla <code>libro escrito por gabriel garcia</code>.</p><p>¿No sería mejor imprimir <code>libro escrito por Gabriel Garcia</code>?. &nbsp;Bueno, con Python podemos lograrlo, &nbsp;los métodos de cadenas retornan una cadena de texto con los cambios requeridos en el método utilizado.</p><blockquote>En el caso del método <code>title()</code>, Python retorna una nueva cadena con un formato de título, esto es con la primera letra de cada palabra en mayúsculas ("Gabriel Garcia" en lugar de "gabriel garcia")</blockquote><p>Para imprimir el nombre del autor con un formato de título puedes hacer lo siguiente:</p><ul><li>Usa el método <code>title()</code> en la cadena <code>autor</code></li><li>guarda la nueva cadena retornada dentro de otra variable e</li><li>imprime la nueva variable dentro de una f-string</li></ul><p>Ejemplo del código:</p><pre><code class="language-python">autor = "gabriel garcia"
nuevo_nombre = autor.title()
print(f"libro escrito por {nuevo_nombre}.")

#Salida
libro escrito por Gabriel Garcia.</code></pre><p>Sin embargo, con f-strings podemos ahorrarnos un paso, solo tienes que llamar al método <code>title()</code> en la cadena <code>autor</code> &nbsp;dentro de la f-string. </p><pre><code class="language-python">autor = "gabriel garcia"
print(f"libro escrito por {autor.title()}.")</code></pre><p>Cuando se analiza la cadena al momento de ejecución ocurre lo siguiente:</p><ul><li>El método <code>title()</code> es llamado en la cadena <code>autor</code>, y</li><li>la cadena retornada con un formato de título es impresa.</li></ul><p>Aquí puedes verificar el resultado del código anterior:</p><pre><code>autor = "gabriel garcia"
print(f"libro escrito por {autor.title()}.")

# Salida
libro escrito por Gabriel Garcia.</code></pre><p>Puedes llamar cualquier método en un objeto válido de Python entre llaves y tu código funcionará perfectamente.</p><h2 id="como-llamar-funciones-dentro-de-f-strings-en-python"><strong>Como llamar funciones dentro de f-Strings en Python</strong></h2><p>Aparte de poder llamar métodos en un objeto de Python, también puedes llamar funciones con f-strings. Y funciona de forma similar a los ejemplos anteriores.</p><p>Al igual que el nombre las variables son reemplazadas por sus valores y las expresiones son reemplazadas por el resultado de las operaciones, una función es reemplazada por el valor que retorna la función.</p><p>▶ Tomemos la función <code>opcion()</code> en el siguiente ejemplo:</p><pre><code class="language-python">def opcion(o):
  if o%2 ==0:
    return "aprende Python!"
  else:
    return "aprende JavaScript!"</code></pre><p>La función anterior retorna <code>"aprende Python!</code> si es llamada con un número par como argumento. Y retorna <code>"aprende JavaScript!"</code> cuando el argumento con el cual se llama a la función es un número impar.</p><p>▶En el siguiente ejemplo, tienes una f-string, entre llaves que llama a la función <code>opcion()</code>:</p><pre><code class="language-python">print(f"Hola Python, dime que deberia aprender. {opcion(3)}")</code></pre><p>Ya que el argumento es un número impar (<code>3</code>), Python nos da la opción de aprender JavaScript. Aquí está el resultado del código:</p><pre><code># Salida
Hola Python, dime que deberia aprender. aprende JavaScript!</code></pre><p>Si llamas a la función <code>opcion()</code> con un número par, Python ahora te dirá que aprendas Python. ?</p><pre><code class="language-python">print(f"Hola Python, dime que deberia aprender. {opcion(10)}")</code></pre><pre><code># Salida
Hola Python, dime que deberia aprender. aprende Python!</code></pre><p>Y así termina nuestro tutorial. <br>¡Espero lo hayas disfrutado!</p><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>En este tutorial aprendiste, como usar f-Strings para:</p><ul><li>Imprimir el valor de variables.</li><li>Evaluar expresiones,</li><li>Llamar a métodos en objetos de Python </li><li>Llamar a funciones de Python.</li></ul><h3 id="art-culos-relacionados"><strong>Artículos relacionados</strong></h3><p>Aquí hay un <a href="https://www.freecodecamp.org/espanol/news/formato-de-cadenas-en-python-ejemplos-de-formato-s-sprint-en-python/">artículo</a> traducido por Andres, donde explica como darle formato a cadenas de texto con el método <code>format()</code>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Funciones any() y all() en Python: Explicadas con ejemplos ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Bala Priya C [https://www.freecodecamp.org/news/author/bala-priya/] Artículo original Python any() and all() Functions – Explained with Examples [https://www.freecodecamp.org/news/python-any-and-all-functions-explained-with-examples/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] Al programar en Python, ¿alguna vez has tenido que revisar si algún valor o todos los valores de un iterable tienen un valor True ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/funciones-any-y-all-en-python-explicadas-con-ejemplos/</link>
                <guid isPermaLink="false">617f21409f4fd50941223e6b</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Mon, 29 Nov 2021 02:26:17 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/11/POINTERS-IN-c--8---1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong>Artículo original escrito por </strong></strong><a href="https://www.freecodecamp.org/news/author/bala-priya/">Bala Priya C</a><br><strong><strong>Artículo original </strong></strong><a href="https://www.freecodecamp.org/news/python-any-and-all-functions-explained-with-examples/">Python any() and all() Functions – Explained with Examples</a><br><strong><strong>Traducido y adaptado por</strong> </strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>Al programar en Python, ¿alguna vez has tenido que revisar si algún valor o todos los valores de un iterable tienen un valor <code>True</code> (Verdadero)?. La siguiente vez que tengas que hacerlo recuerda usar las funciones <code>any()</code> y <code>all()</code>.</p><p>En este tutorial, aprenderemos acerca de las funciones <code>any()</code> y <code>all()</code>, también entenderemos su funcionamiento con ejemplos sencillos.</p><h2 id="tipo-de-dato-booleano-en-python"><strong>Tipo de dato booleano en Python</strong></h2><p>Antes de empezar con <code>any()</code> y <code>all()</code> repasemos los tipos de datos booleanos en Python. En Python puedes ver el valor booleano de cualquier objeto con la función <code>bool()</code>. </p><pre><code class="language-python">#False -&gt; Falso

# El valor booleano de None es False
print(bool(None))
# Salida
False

# El valor booleano de una cadena de texto vacia ("") es False
print(bool(""))
# salida
False

# El valor booleano de una lista vacía (o cualquier iterable vacío) es False
print(bool([]))
# Salida
False

# el valor booleano de 0 {int(0), float (0.0) y complex (0j)} es False 
print(bool(0))
# Salida
False</code></pre><p>Como vemos en el código anterior:</p><ul><li><code>None</code> tiene un valor booleano de &nbsp;<code>False</code>, (Falso)</li><li>El número cero(<code>0</code>) – entero, punto flotante (decimal) y representaciones de números complejos de <code>0</code> – todos tienen un valor booleano <code>False</code>, y</li><li>Todos los iterables vacíos como listas, tuplas y cadenas de texto tienen un valor booleano <code>False</code>.</li></ul><p>Una vez entendido lo anterior podemos deducir que los valores distintos de cero e iterables no vacíos tienen un valor booleano <code>True</code>.</p><h2 id="como-usar-la-funci-n-any-en-python"><strong>Como usar la función any() en Python</strong></h2><p>primero veamos la sintaxis básica de la función <code>any()</code> con ejemplos sencillos.</p><p><strong><strong>? S</strong>i<strong>ntax</strong>is</strong>: <code>any(iterable)</code></p><ul><li>Devuelve <code>True</code> si <code>bool(x)</code> es <code>True</code> en cualquiera de los elementos de <code>x</code> del iterable.</li><li>Devuelve <code>False</code> si el iterable está vacío o si el valor booleano de "todos" los elementos del iterable son <code>False</code>.</li></ul><p>En resumen, la función <code>any()</code> toma un iterable como argumento y retorna <code>True</code> si por lo menos uno de los elementos del iterable es <code>True</code></p><p>Aquí puedes ver algunos ejemplos para entender mejor la función <code>any()</code>:</p><pre><code class="language-python">lista_1 = [0,0,0,1,0,0,0,0]
# any(Una lista con por lo menos un valor distinto de cero) Devuelve True
print(any(lista_1))
# Salida
True

lista_2 = [0j, 0, 0, 0.0, 0, 0, 0.0, 0]
# any(Una lista de ceros) Devuelve False
print(any(lista_2))
# Salida
False

lists_3 = [True, False, False]
# any(Una lista con por lo menos un valor True) Deveulve True
print(any(lista_3))
# Salida
True

lista_4 = ["", "", "amo programar"]
# any(Una lista con por lo menos una cadena  de texto no vacia ) Devuelve True
print(any(lista_4))
# Salida
True

lista_5 = ["", "", ""]
# any(Una lista de cadenas de texto vacias) Devuelve False
print(any(lista_5))
# Salida
False

</code></pre><h3 id="como-saber-si-hay-n-meros-en-una-cadena-de-caracteres-con-la-funci-n-any-en-python"><strong>Como saber si hay números en una cadena de caracteres con la función any() en Python</strong></h3><p>Ahora usaremos la función <code>any()</code> para leer una cadena de caracteres y saber si hay números o no.</p><p>Estos son los pasos a seguir para saber si hay números en una cadena de caracteres:</p><ul><li>Iterar la cadena de caracteres para acceder a cada carácter (cada letra). </li><li>Comprobar si un carácter es un dígito llamando al método <code>isdigit()</code> </li><li><code>isdigit()</code> devolverá <code>True</code> si el carácter en turno es un dígito de lo contrario retornará <code>False</code></li></ul><p>El método <code>isdigit()</code> se puede traducir como -&gt; es dígito. </p><p>La comprensión de listas puede ser muy útil para obtener los valores booleanos de una lista.<br>Aquí hay pequeña explicación de comprensión de listas:</p><pre><code> # Comprension de listas
 
 [expresion_a_retornar por cada_elemento en un_iterable]
 
 con las palabras clave for/in que lleva originalmente:
 [expresion_a_retornar for cada_elemento in un_iterable]
     |
     |
     V
     resultado de hacerle algo a cada elemento de un iterable
    
 # En resumen
 # Iterar un interable, hacer algo a cada elemento y retornar el resultado de la operacion.
 </code></pre><pre><code class="language-Python"># Ejemplo de comprension de listas para multiplicar por 2 cada elemento de una lista

mi_lista = [1, 2, 3, 4, 5]

doble = [x * 2 for x in mi_lista]
# [2, 4, 6, 8, 10]</code></pre><p>Como podemos ver en el código siguiente, tenemos una variable, <code>mi_cadena</code>, con una cadena de caracteres <code>programar**es**divertido**345</code>.</p><p>Así que, llamar a la función <code>any()</code>, &nbsp;debería retornar <code>True</code>.<br>Haciendo uso de compresión de listas para obtener una lista de valores &nbsp;<code>True</code> y <code>False</code> dependiendo de si el carácter es un dígito o no.</p><pre><code class="language-python">my_cadena = "programar**es**divertido**345"
buscando_digitos = [caracter.isdigit() for caracter in my_cadena]
print(any(buscando_digitos))

# Salida
True

# Puedes intentar:
# print(buscando_digitos)
# para ver los valores que retorna isdigit() cuando hay y cuando no hay un numero.</code></pre><p>Al imprimir la lista <code>buscando_numeros</code> podrás notar que tiene la misma cantidad de elementos que la variable <code>mi_cadena</code></p><p>Por cada carácter de la cadena de caracteres hay un valor booleano - <code>True</code> si el carácter es un dígito y <code>False</code> si el carácter no es un dígito. Esto también lo podemos ver en el siguiente ejemplo.</p><pre><code class="language-python">print(buscando_digitos)

# Output
[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True]</code></pre><h3 id="como-usar-la-funci-n-any-en-python-para-saber-si-hay-letras-en-una-cadena-de-caracteres"><strong>Como usar la función any() en Python para saber si hay letras en una cadena de caracteres</strong></h3><p>En el siguiente ejemplo, queremos saber si en una cadena de caracteres hay por lo menos una letra, el método <code>isalpla()</code> nos dice si un carácter es o no una letra.</p><p>La cadena a probar es <code>***456278)))</code>, la cual no contiene letras - al llamar <code>any()</code>, podemos saber que &nbsp;retornara <code>False</code>, ya que al llamar <code>isalpha()</code> en cada carácter de la cadena retornará <code>False</code> ya que ningún carácter es una letra</p><pre><code class="language-python">mi_cadena = "***456278)))"
buscando_letras = [caracter.isalpha() for caracter in mi_cadena]
print(any(buscando_letras))

# Salida
False</code></pre><p>La variable <code>buscando_letras</code>, es una lista con solo valores <code>False</code>, lo cual lo podemos comprobar imprimiendo la variable.</p><pre><code class="language-python">print(buscando_letras)

# Salida
[False, False, False, False, False, False, False, False, False, False, False, False]</code></pre><h3 id="como-usar-la-funci-n-any-para-combinar-m-ltiples-condiciones-con-el-operador-l-gico-or"><strong>Como usar la función any() para combinar múltiples condiciones con el operador lógico OR</strong></h3><p>La palabra "OR" se puede traducir como "O".<br>ejemplo de uso: Quieres tomar agua &nbsp;O quieres tomar jugo</p><p>Ahora que quieres aprender programación, has decidido escribir la siguiente lista para ser más productivo y para motivarte un poco te darás un premio si por lo menos terminas una tarea ?.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/11/image-27.png" class="kg-image" alt="image-27" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/11/image-27.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/11/image-27.png 661w" width="600" height="400" loading="lazy"></figure><p>Observa, aunque tenemos múltiples condiciones (tareas por hacer), podemos comer dulces aunque solo una condición se evalúa como <code>True</code> y no es necesario cumplirlas todas.</p><p>¿No es esto similar a una sentencia <code>if</code> donde revisamos si múltiples condiciones unidas por el operador lógico <code>or</code> evaluadas como <code>True</code>? Si lo es y la función <code>any()</code> puede ser muy útil para hacerlo.</p><p>Imagina que tienes <code>N</code> condiciones, <code>c1</code>, <code>c2</code>, <code>c3</code>, ..., <code>cN</code>. Así es como se vería en pseudocódigo:</p><pre><code>if c1 or c2 or ... c_(N-1) or CN:
	# Haz esto

else:
	# Haz esto</code></pre><p>Puedes guardar todas las condiciones en un iterable, como una lista o una tupla y llamas a la función <code>any()</code> con este iterable para verificar si una o más condiciones retornan <code>True</code>.</p><pre><code>condiciones = [c1,c2,..., c_N]

if any(condiciones):
	# Haz esto
else:
	# Haz esto</code></pre><h2 id="como-usar-la-funci-n-all-en-python"><strong>Como usar la función all() en Python</strong></h2><p>Primero veamos la sintaxis básica de la función <code>all()</code>.</p><p>? <strong><strong>S</strong>i<strong>ntax</strong>is</strong>: <code>all(iterable)</code></p><ul><li>Retorna <code>True</code> si <code>bool(x)</code> es <code>True</code> en todos los valores de <code>x</code> en el iterable.</li><li>Retorna <code>True</code> si el iterable está vacío.</li></ul><pre><code>any([True, True, True]) # Retorna True
any([]) # Retorna True

any([True, True, False]) # Retorna False</code></pre><p>La función <code>all()</code> toma un iterable como argumento y retorna <code>True</code> solo si todos los elementos del iterable tienen un valor booleano de <code>True</code> o el iterable está vacío, en los demás casos retornara <code>False</code>.</p><h3 id="como-usar-la-funci-n-all-en-python-para-saber-si-solo-hay-letras-en-una-cadena-de-caracteres"><strong>Como usar la función all() en Python, para saber si solo hay letras en una cadena de caracteres</strong></h3><p>La cadena de caracteres <code>programar**es**divertido*</code> contiene letras y el carácter especial &nbsp;<code>*</code>. Si comprobamos si todos los caracteres en la cadena son letras usando la función <code>all()</code>, obtendríamos <code>False</code></p><pre><code class="language-python">mi_cadena = "programar**es**divertido*"
buscando_letras = [caracter.isalpha() for caracter in mi_cadena]
print(all(buscando_letras))
# Saldida
False

print(buscando_letras)
# Salida
[True, True, True, True, True, True, True, True, True, False, False, True, True, False, False, True, True, True, True, True, True, True, True, True, False]</code></pre><p>Podemos notar que la lista <code>buscando_letras</code> tiene el valor <code>False</code> en las posiciones donde está el símbolo <code>*</code> </p><h3 id="como-usar-la-funci-n-all-en-python-para-saber-si-solo-hay-n-meros-en-una-cadena-de-caracteres"><strong>Como usar la función all() en Python, para saber si solo hay números en una cadena de caracteres</strong></h3><p>Ahora comprobaremos si todos los caracteres de una cadena son números usando la función <code>all()</code>, la cadena <code>56456278</code> contiene solamente dígitos, por lo tanto, al usar <code>all()</code> obtendremos <code>True</code>, lo cual podemos ver en el siguiente ejemplo:</p><pre><code class="language-python">mi_cadena = "56456278"
buscando_numeros= [caracter.isdigit() for caracter in mi_cadena]
print(all(buscando_numeros))
# Salida
True

print(buscando_numeros)
# Salida
[True, True, True, True, True, True, True, True]</code></pre><h3 id="como-usar-la-funci-n-all-para-combinar-m-ltiples-condiciones-con-el-operador-l-gico-and"><strong>Como usar la función all() para combinar múltiples condiciones con el operador lógico AND</strong></h3><p>La palabra AND se traduce como "y"</p><p>Consideremos el siguiente ejemplo: ahora en lugar de dulces, tienes la oportunidad de ganar un iPad, por lo tanto, las condiciones son más difíciles. Ahora tendrás que completar <em>todas<em> </em></em>las tareas para que tu primo te dé el iPad.?</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/11/image-25.png" class="kg-image" alt="image-25" width="600" height="400" loading="lazy"></figure><p>Podemos incluir múltiples condiciones encadenadas por el operador lógico <code>AND</code> dentro de una sentencia <code>if</code> de la siguiente forma:</p><pre><code>if c1 and c2 and ... c_(N-1) and CN:
	# Haz esto

else:
	# Haz esto</code></pre><p>También podemos usar la función <code>all()</code> y guardar las condiciones en una lista para hacer el código un poco más legible de la siguiente forma:</p><pre><code>condiciones = [c1,c2,..., c_N]

if all(condiciones):
	# Haz esto
else:
	# Haz esto</code></pre><p>Espero que este tutorial te haya ayudado a entender las funciones &nbsp;<code>any()</code> y <code>all()</code> </p><p>Espero verte en otro artículo y no olvides divertirte aprendiendo Python.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Funciones lambda en Python: Ejemplos de sintaxis ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Ilenia Magoni [https://www.freecodecamp.org/news/author/ilenia/] Artículo original Lambda Function in Python – Example Syntax [https://www.freecodecamp.org/news/lambda-function-in-python-example-syntax/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] Las funciones Lambda son funciones anónimas que solo pueden contener una expresión. Podrías pensar que las funciones lambda son un tema intermedio o avanzado, pero aquí aprenderás ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/funciones-lambda-en-python-ejemplos-de-sintaxis/</link>
                <guid isPermaLink="false">617617335658740999354572</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Wed, 03 Nov 2021 12:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/10/1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong></strong> </strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/author/ilenia/">Ilenia Magoni</a><br><strong><strong><strong><strong><strong><strong><strong><strong>Artículo original </strong></strong></strong></strong></strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/lambda-function-in-python-example-syntax/">Lambda Function in Python – Example Syntax</a><br><strong><strong><strong><strong><strong><strong><strong><strong>Traducido y adaptado por </strong></strong></strong></strong></strong></strong></strong></strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>Las funciones Lambda son funciones anónimas que solo pueden contener una expresión.</p><p>Podrías pensar que las funciones lambda son un tema intermedio o avanzado, pero aquí aprenderás de manera sencilla como puedes comenzar a utilizarlas en tu código.</p><p>Así creas una función en Python:</p><pre><code class="language-pithon">def mi_func(argumentos):
  # cuerpo de la función</code></pre><p>Se declara la función con la palabra clave <code>def</code>, les das un nombre y entre paréntesis los argumentos que recibirá la función. Puede haber tantas líneas de código como quieras con &nbsp;todas las expresiones y declaraciones que necesites.</p><p>Pero algunas veces solo necesitarás una expresión dentro de tu función, por ejemplo, una función que duplique el valor de un argumento:</p><pre><code class="language-python">def doble(x):
  return x * 2</code></pre><p>Esta función puede ser usada dentro de la función <code>map</code>, de la siguiente forma:</p><pre><code class="language-python">def doble(x):
  return x * 2
  
mi_lista = [1, 2, 3, 4, 5, 6]
lista_nueva = list(map(doble, mi_lista))
print(lista_nueva) # [2, 4, 6, 8, 10, 12]</code></pre><p>Este es un buen lugar para usar una función lambda, ya que puede ser creada en el mismo lugar donde se necesite, esto significa menos líneas de código y así también evitarás nombrar una función que solo utilizaras una sola vez y que tendría que ser almacenada en memoria,</p><h2 id="como-usar-funciones-lambda-en-python"><strong>Como usar funciones lambda en Python</strong></h2><p>Una función lambda se usa cuando necesitas una función sencilla y de rápido acceso: por ejemplo, como argumento de una función de orden mayor como los son <code>map</code> o <code>filter</code></p><p>La sintaxis de una función lambda es <code>lambda args: expresión</code>. Primero escribes la palabra clave <code>lambda</code>, dejas un espacio, después los argumentos que necesites separados por coma, dos puntos <code>:</code>, y por último la expresión que será el cuerpo de la función.</p><p>Recuerda que no puedes darle un nombre a una función lambda, &nbsp;ya que estas son anónimas (sin nombre) por definición.</p><p>Una función lambda puede tener tantos argumento como necesites, pero debe tener una sola expresión.</p><h3 id="ejemplo-1"><strong>Ejemplo 1</strong></h3><p>Por ejemplo, puedes escribir una función lambda que duplique sus argumentos <code>lambda x: x * 2</code> y usarla con la función <code>map</code> para duplicar todos los elementos de una lista:</p><pre><code class="language-python">mi_lista = [1, 2, 3, 4, 5, 6]
lista_nueva = list(map(lambda x: x * 2, mi_lista))
print(lista_nueva)  # [2, 4, 6, 8, 10, 12]</code></pre><p>Así luce sin una función lambda</p><pre><code class="language-python">def doble(x):
  return x*2
  
mi_lista = [1, 2, 3, 4, 5, 6]
lista_nueva = list(map(doble, mi_lista))
print(lista_nueva) # [2, 4, 6, 8, 10, 12]</code></pre><p>Puedes notar la diferencia, entre usar una función lambda &nbsp;y el ejemplo con la función <code>doble</code>, ahora el código es más compacto y no hay una función extra utilizando espacio en memoria.</p><h3 id="ejemplo-2"><strong>Ejemplo 2</strong></h3><p>También puedes escribir una función lambda que revise si un número es positivo, <code>lambda x: x &gt; 0</code>, y usarla con la función <code>filter</code> para crear una lista de números positivos.</p><pre><code class="language-python">mi_lista = [18, -3, 5, 0, -1, 12]
lista_nueva = list(filter(lambda x: x &gt; 0, mi_lista))
print(lista_nueva) # [18, 5, 12]</code></pre><p>Una función lambda se define donde se usa, de esta manera no hay una función extra utilizando espacio en memoria.</p><p>Si una función es utilizada una sola vez, lo mejor es usar una función lambda para evitar código innecesario y desorganizado.</p><h3 id="ejemplo-3"><strong>Ejemplo 3</strong></h3><p>También es posible que una función devuelva una función lambda.</p><p>Si necesitas funciones que multipliquen diferentes números, por ejemplo, duplicar, triplicar, etc... una función lambda puede ser útil</p><p>En lugar de crear múltiples funciones, puedes crear una sola función <code>multiplicar_por()</code> y llamarla con diferentes argumentos para crear una función que duplique o triplique.</p><pre><code class="language-python">def multiplicar_por (n):
  return lambda x: x * n
  
duplicar = multiplicar_por(2)
triplicar = multiplicar_por(3)
diez_veces = multiplicar_por(10)</code></pre><p>La función lambda toma el valor de <code>n</code> de la función <code>multiplicar_por(n)</code> así que en <code>duplicar</code> el valor de <code>n</code> es <code>2</code>, en <code>triplicar</code> <code>n</code> vale <code>3</code> y en <code>diez_veces</code> vale <code>10</code>. Y al llamar a estas funciones con un argumento podemos retornar el número multiplicado.</p><pre><code class="language-python">duplicar(6)
&gt; 12
triplicar(5)
&gt; 15
diez_veces(12)
&gt; 120</code></pre><p>Si no usáramos funciones lambda, tendríamos que crear una función diferente dentro de <code>multiplicar_por</code>, y se vería algo así:</p><pre><code class="language-python">def multiplicar_por(x):
  def temp (n):
    return x*n
  return temp</code></pre><p>Usando una función lambda el código necesita menos líneas de código y es más legible.</p><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>Las funciones lambda son una manera compacta de escribir una función si solo necesitas una expresión corta. Talvez no sean algo que un programador principiante usaría, pero después de leer este artículo talvez puedas implementarlas en tu propio código.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Python abre archivo: Cómo leer un archivo de texto línea por línea ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Jessica Wilkins [https://www.freecodecamp.org/news/author/jessica-wilkins/] Artículo original Python Open File – How to Read a Text File Line by Line [https://www.freecodecamp.org/news/python-open-file-how-to-read-a-text-file-line-by-line/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] En Python, hay diferentes formas de leer un archivo de texto. En este artículo abarcaré, la función open(), los métodosread(), readline(), ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/python-abre-archivo-como-leer-un-archivo-de-texto-linea-por-linea/</link>
                <guid isPermaLink="false">615f1911818d3e0912698f5d</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Mon, 25 Oct 2021 12:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/10/alex-chumak-zGuBURGGmdY-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong>Artículo original escrito por</strong></strong> </strong></strong><a href="https://www.freecodecamp.org/news/author/jessica-wilkins/">Jessica Wilkins</a><br><strong><strong><strong><strong>Artículo original </strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/python-open-file-how-to-read-a-text-file-line-by-line/">Python Open File – How to Read a Text File Line by Line</a><br><strong><strong><strong><strong>Traducido y adaptado por </strong></strong></strong></strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>En Python, hay diferentes formas de leer un archivo de texto.</p><p>En este artículo abarcaré, la función <code>open()</code>, los métodos &nbsp;<code>read()</code>, <code>readline()</code>, <code>readlines()</code>, <code>close()</code> y la palabra clave <code>with</code>.</p><pre><code class="language-text">Significado de las palabras en el contexto del articulo.

open =&gt; Abrir
read =&gt; Leer
readLine =&gt; Leer linea
readLines =&gt; Leer lineas
close =&gt; cerrar
with =&gt; Con</code></pre><h2 id="-qu-es-la-funci-n-open-en-python"><strong>¿Qué es la función open() en Python?</strong></h2><p>Si quieres leer un archivo de texto en Python, primero tienes que abrirlo.</p><p>Esta es la sintaxis básica de la función <code>open()</code>:</p><pre><code class="language-py">open("nombre del archivo que quieres abrir", "modo de apertura")</code></pre><h3 id="nombres-de-archivos-y-rutas-correctas"><strong>Nombres de archivos y rutas correctas</strong></h3><p>Si tu archivo de texto y tu programa Python están en el mismo directorio ("carpeta") solo tienes que escribir el nombre del archivo en la función <code>open()</code>.</p><figure class="kg-card kg-code-card"><pre><code class="language-py">open("lista_compras.txt")</code></pre><figcaption>.</figcaption></figure><p>Ejemplo de los dos archivos en el mismo directorio:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-4.png" class="kg-image" alt="image-4" width="600" height="400" loading="lazy"></figure><p>Si tu archivo de texto está en una carpeta diferente, tendrás que especificar la ruta correcta del archivo de texto.</p><p><code>main.py</code> es el nombre de mi programa Python.</p><p>En este ejemplo, tengo <code>recetas.txt</code> &nbsp;dentro de una carpeta diferente que <code>main.py</code></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-6.png" class="kg-image" alt="image-6" width="600" height="400" loading="lazy"></figure><p><code>recetas.txt</code> está dentro de la carpeta <code>otros</code></p><p>Para acceder a <code>recetas.txt</code> desde <code>main.py</code>, tienes que incluir la el nombre de esta otra carpeta y el nombre del archivo</p><pre><code class="language-py">open("otros/recetas.txt")</code></pre><p>Si no tienes la ruta o nombre correcto, recibirás un mensaje de error:</p><pre><code class="language-py">open("recetas.txt")</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-13-at-2.03.33-AM.png" class="kg-image" alt="Screen-Shot-2021-09-13-at-2.03.33-AM" width="600" height="400" loading="lazy"></figure><p>El error nos dice: "Archivo o directorio no encontrado: 'recetas.txt' ".</p><p>Es importante saber en qué directorio estás trabajando para poder referenciar las rutas correctas.</p><h3 id="modos-de-apertura-con-la-funci-n-open-"><strong>Modos de apertura con la función <code>open()</code></strong></h3><p>Hay diferentes formas de trabajar con archivos de texto, el modo por defecto es el de &nbsp;modo lectura.</p><p>Podemos abrir un archivo en modo de lectura con la letra <code>r</code> que viene de la palabra en inglés <code>read</code> que sígnica leer.</p><pre><code class="language-py">open("lista_compras.txt", mode="r")</code></pre><p>Podemos omitir <code>mode=</code> y solo escribir <code>"r"</code>.</p><pre><code class="language-py">open("demo.txt", "r")</code></pre><p>Existen otros modos de apertura como:<br><code>"w"</code> de &nbsp;<code>"write"</code> que significa <code>escribir</code>.<br><code>"a"</code> de <code>appending</code> que significa <code>añadir</code> o <code>anexar</code> (al final).</p><p>En este artículo no entraré en detalle respecto a otros métodos de apertura, ya que solo nos enfocaremos en leer archivos.</p><p>Para una lista completa de los otros modos de escritura puedes leer la <a href="https://python-docs-es.readthedocs.io/es/3.9/library/functions.html?highlight=funciones%20integradas#open">documentación</a>.</p><h3 id="par-metros-adicionales-de-la-funci-n-open-python"><strong>Parámetros adicionales de la función </strong><code><strong>open()</strong></code><strong> &nbsp;Python</strong></h3><p>La función <code>open()</code> acepta los siguientes parámetros:</p><ul><li>buffering</li><li>encoding</li><li>errors</li><li>newline</li><li>closefd</li><li>opener</li></ul><p>Para aprender más sobre estos parámetros adicionales, puedes leer la <a href="https://python-docs-es.readthedocs.io/es/3.9/library/functions.html?highlight=funciones%20integradas#open">documentación</a>.</p><h2 id="-qu-es-el-m-todo-readable-en-python"><strong>¿Qué es el método <code>readable()</code> en Python?</strong></h2><p>Si quieres saber si un archivo se puede leer, puedes usar el método <code>redable()</code> (legible). <br>Este método devolverá verdadero <code>True</code> o falso <code>False</code>.</p><p>El siguiente ejemplo devolverá <code>True</code>, porque estamos en el modo lectura por defecto.</p><pre><code class="language-py">archivo = open("lista_compras.txt")
print(archivo.readable())</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-13-at-3.36.37-AM.png" class="kg-image" alt="Screen-Shot-2021-09-13-at-3.36.37-AM" width="600" height="400" loading="lazy"></figure><p>Si modifico el ejemplo con <code>w</code> (write = escribir), entonces el método <code>readable()</code> devolverá <code>False</code>, ya que ahora estoy en modo escritura:</p><pre><code class="language-py">archivo = open("lista_compras, "w")
print(archivo.readable())</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-13-at-3.36.18-AM.png" class="kg-image" alt="Screen-Shot-2021-09-13-at-3.36.18-AM" width="600" height="400" loading="lazy"></figure><h2 id="-qu-es-el-m-todo-read-en-python"><strong>¿Qué es el método <code>read()</code> en Python?</strong></h2><p>El método <code>read()</code> leerá todo el contenido de un archivo y lo devolverá como una cadena de texto, este es una buena forma de leer un archivo solo si tu archivo de texto no es muy grande.</p><p>En el siguiente ejemplo, Usare el método <code>read()</code> para imprimir una lista de compras del archivo lista_compras.txt:</p><pre><code class="language-py">archivo = open("lista_compras.txt")
print(archivo.read())</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-10.png" class="kg-image" alt="image-10" width="600" height="400" loading="lazy"></figure><p>Este método acepta un parámetro adicional donde podemos especificar el número de caracteres a leer.</p><p>Modificando el ejemplo anterior, &nbsp;podremos imprimir solo la primera palabra, añadiendo el número 5 como argumento de <code>read()</code></p><pre><code class="language-py">archivo = open("lista_compras.txt")
print(archivo.read(5))</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-11.png" class="kg-image" alt="image-11" width="600" height="400" loading="lazy"></figure><p>Si omitimos el argumento adicional o el número es negativo, el archivo completo será leído</p><h2 id="-qu-es-el-m-todo-close-cerrar-en-python"><strong>¿Qué es el método <code>close()</code> (cerrar) en Python?</strong></h2><p>Una vez terminaste de leer un archivo, es importante cerrarlo, &nbsp;de otra forma el archivo se queda abierto, lo cual puede generar problemas</p><p>Este es un ejemplo de como cerrar el archivo <code>lista_compras.txt</code>:</p><pre><code class="language-py">archivo = open("lista_compras.txt")
print(archivo.read(5))
archivo.close()</code></pre><h3 id="como-usar-la-palabra-clave-with-para-cerrar-archivos-en-python"><strong>Como usar la palabra clave <code>with</code> para cerrar archivos en Python</strong></h3><p><br>Con <code>as</code> estamos diciendo como llamaremos a <em><code>open("lista_compras.txt")</code> </em></p><p>Una forma de asegurar que tu archivo es cerrado, es &nbsp;usar la palabra clave <code>with</code>. Su uso es considerado una &nbsp;buena práctica, porque el archivo se cierra automáticamente en lugar de tener que cerrarlo manualmente.</p><p>Aquí hay un ejemplo de como usar la palabra clave <code>with</code>.</p><pre><code class="language-py">with open("lista_compras.txt") as archivo:
    print(archivo.read())</code></pre><pre><code class="language-py">archivo = open("lista_compras.txt")
print(archivo.read())
archivo.close()</code></pre><p>Los dos códigos hacen exactamente lo mismo.</p><h2 id="-qu-es-el-m-todo-readline-leer-l-nea-en-python"><strong>¿Qué es el método <code>readline()</code> (</strong>leer línea)<strong> en Python? </strong></h2><p>Este método leerá una línea del archivo y la devolverá.</p><p>En este ejemplo, tenemos un archivo con dos enunciados.</p><pre><code class="language-txt">Esta es la primera linea
Esta es la segunda linea</code></pre><p>Si usamos el método <code>readline()</code>, imprimirá solo la primera sentencia.</p><pre><code class="language-py">with open("prueba.txt") as archivo:
    print(archivo.readline())</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-15.png" class="kg-image" alt="image-15" width="600" height="400" loading="lazy"></figure><p>El método <code>readline()</code> acepta un parámetro opcional donde podemos especificar el número de caracteres a leer.</p><p>Añadiendo el número 7 a <code>readline()</code> para leer solo y caracteres:</p><pre><code class="language-py">with open("demo.txt") as file:
    print(file.readline(7))</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-16.png" class="kg-image" alt="image-16" width="600" height="400" loading="lazy"><figcaption>el espacio cuenta como un carácter</figcaption></figure><h2 id="-qu-es-el-m-todo-readlines-leer-l-neas-en-python"><strong>¿Qué es el método </strong><code><strong>readlines()</strong></code><strong> (leer líneas) en Python?</strong></h2><p>Este método devolverá una lista de todas las líneas de texto del archivo</p><p>En este ejemplo, Imprimiremos <code>lista_compras.txt</code> como una lista usando el método <code>readlines()</code></p><pre><code class="language-py">with open("lista_compras.txt") as archivo:
    print(archivo.readlines())</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-25.png" class="kg-image" alt="image-25" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/10/image-25.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-25.png 649w" width="600" height="400" loading="lazy"></figure><h2 id="como-usar-un-bucle-for-para-leer-cada-l-nea-de-texto-de-un-archivo-en-python"><strong>Como usar un bucle <code>for</code> para leer cada línea de texto de un archivo en Python</strong></h2><p>Una alternativa a estos métodos, sería usa un <code>bucle for</code>.</p><p>En este ejemplo, podemos imprimir cada línea de texto de <code>lista_compras.txt</code> iterando sobre el objeto <code>archivo</code>.</p><pre><code class="language-py">with open("lista_compras.txt") as archivo:
    for linea in archivo:
        print(linea)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-26.png" class="kg-image" alt="image-26" width="600" height="400" loading="lazy"></figure><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>Si quieres leer un archivo de texto en Python, primero debes abrirlo.</p><pre><code class="language-py">open("nombre del archivo que quieres abrir", "modo de apertura")
</code></pre><p>Si tu programa Python y tu archivo de texto están en el mismo directorio ("carpeta"), solo necesitas escribir el nombre del archivo de texto.</p><p>Si tu archivo de texto y tu programa Python no están en la misma carpeta, necesitas escribir la ruta/dirección correcta.</p><p>La función <code>open()</code> acepta un parámetro opcional para especificar el modo de apertura, por defecto lo abre en modo lectura.</p><pre><code class="language-py">open("datos.txt", "r")</code></pre><p>Si quieres comprobar si un archivo se puede leer, puedes usar el método <code>readable()</code>, que devolverá <code>True</code> o <code>False</code>.</p><pre><code class="language-py">archivo.readable()</code></pre><p>El método <code>read()</code> leerá todo el archivo y lo guardará como una sola cadena de texto.</p><pre><code class="language-py">archivo.read()</code></pre><p>Una vez terminaste de leer un archivo, es importante no olvidar cerrarlo, de lo contrario, esto podría ocasionar problemas.</p><pre><code class="language-py">archivo.close()</code></pre><p>Una forma de asegurarse de que tu archivo es cerrado, es usando la palabra clave <code>with</code>.</p><pre><code class="language-py">with open("archivo.txt") as archivo:
    print(archivo.read())</code></pre><p>El método <code>readlines()</code> leerá una sola línea de tu archivo de texto y la devolverá.</p><pre><code class="language-py">archivo.readline()</code></pre><p>El método <code>readlines()</code> leerá y devolverá una lista con todas las líneas de texto.</p><pre><code class="language-py">archivo.readlines()</code></pre><p>Una alternativa a los métodos anteriores, sería el uso de un <code>bucle for</code>.</p><pre><code class="language-py">with open("archivo.txt") as archivo:
    for linea in archivo:
        print(linea)</code></pre><p>Espero hayas disfrutado este artículo y te deseo mucha suerte en tu camino como Pythonista.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Enumerar en Python: Ejemplo de enumeración de Python para índice de bucle ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Jessica Wilkins [https://www.freecodecamp.org/news/author/jessica-wilkins/] Artículo original Python Enumerate – Python Enum For Loop Index Example [https://www.freecodecamp.org/news/python-enumerate-python-enum-for-loop-index-example/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] Enumerate = Enumerar Cuando estás programando con Python, puedes usar la función enumerate() y un bucle for para imprimir cada valor de un iterable junto ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/enumerar-en-python-ejemplo-de-enumeracion-de-python-para-indice-de-bucle/</link>
                <guid isPermaLink="false">6155ef55c757580942e5c606</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Tue, 12 Oct 2021 12:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/09/enum_loop.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong>Artículo original escrito por</strong></strong> </strong></strong><a href="https://www.freecodecamp.org/news/author/jessica-wilkins/">Jessica Wilkins</a><br><strong><strong><strong><strong>Artículo original </strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/python-enumerate-python-enum-for-loop-index-example/">Python Enumerate – Python Enum For Loop Index Example</a><br><strong><strong><strong><strong>Traducido y adaptado por </strong></strong></strong></strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>Enumerate = Enumerar<br>Cuando estás programando con Python, puedes usar la función &nbsp; <code>enumerate()</code> y un &nbsp;<code>bucle for </code> &nbsp;para imprimir cada valor de un iterable junto con un contador.</p><p>En este artículo, Te mostraré como usar la función <code>enumerate()</code> de Python &nbsp;y el <code>bucle for</code> y explicaré por qué es una mejor opción a crear tu propio contador incremental.</p><p>Pero primero, veamos como hacerlo sin la función <code>enumerate()</code>.</p><h2 id="como-usar-el-bucle-for-sin-la-funci-n-enumerate-en-python"><strong>Como usar el <code>bucle for</code> sin la función <code>enumerate()</code> en Python</strong></h2><p>En Python, un iterable es un objeto el cual puedes iterar y retornar un valor en cada paso. Ejemplos de iterables son listas, tuplas y una cadena de texto ó string.</p><p>En este ejemplo, Tenemos una lista de nombres de perros y una variable llamada contador.</p><pre><code class="language-py">perros = ['firulais', 'lola', 'pluto', 'nico']
contador = 1</code></pre><p>Podemos usar un <code>bucle for</code> para pasar por cada nombre de la lista e imprimirlo. También incrementaremos el valor de <code>contador</code> en cada paso para saber cuantas veces iteramos sobre la lista.</p><pre><code class="language-py">for nombre in perros:
    print(contador, nombre)
    contador += 1</code></pre><p>Así es como se vería el resultado impreso en la pantalla:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image.png" class="kg-image" alt="image" width="600" height="400" loading="lazy"></figure><p>Aunque este método funciona, pueden llegar a presentarse errores.</p><p>Un problema común es; olvidar incrementar la variable <code>contador</code>.</p><p>Si modifico el código:</p><pre><code class="language-py">perros = ['firulais', 'lola', 'pluto', 'nico']
contador = 1

for nombre in perros:
    print(contador, nombre)
</code></pre><p> esto sería lo que se imprimiría en pantalla:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-1.png" class="kg-image" alt="image-1" width="600" height="400" loading="lazy"></figure><p>Ahora la variable <code>contador</code> ya no nos cuenta los pasos de cada iteración, sino solo muestra su valor original "1".</p><p>En lugar de incrementar la variable <code>contador</code> por nosotros mismos, podemos usar la función <code>enumerate()</code> con el <code>bucle for</code> para hacerlo automáticamente.</p><h2 id="-qu-es-la-funci-n-enumerate-en-python"><strong>¿Qué es la función </strong><code><strong>enumerate()</strong></code><strong> en Python?</strong></h2><p>La función incorporada (que viene por defecto al instalar python) <code>enumerate()</code> toma un iterable y un valor inicial, el cual es opcional</p><pre><code class="language-py">enumerate(iterable, valor inicial opcional)</code></pre><p>Si omites el <code>valor inicial</code>, la cuenta inicia en cero.</p><p>El valor retornado de la función <code>enumerate()</code> es un objeto.</p><p>Esta función realiza el seguimiento de cada iteración, así no tendremos que actualizar la variable <code>contador</code> nosotros mismos.</p><p>Podemos usar la función <code>enumerate()</code> con un <code>bucle for</code> para imprimir los valores de un iterable junto a un contador.</p><h2 id="como-usar-el-bucle-for-y-la-funci-n-enumerate-en-python"><strong>Como usar el &nbsp;<code>bucle for</code> y la función <code>enumerate()</code> en Python </strong></h2><p>En el siguiente ejemplo queremos imprimir una lista con las instrucciones para ir de una escuela a la tienda más cercana.</p><p>Primero crearemos una lista de <code>direcciones</code>:</p><pre><code class="language-py">direcciones = [
    'Dirigete hacia la fuente en la calle principal',
    'Camina sobre la calle principal hacia el norte',
    'Gira a la derecha en la calle Simon Bolivar',
    'Camina 2 calles y gira a hacia la izquierda  ',
    'Gira a la derecha en la calle 8',
    'Gira a la izquierda en la farmacia',
    'Gira a la izquiera en el estadio',
]</code></pre><p>La función <code>enumerate()</code> tomará como argumentos la lista <code>direcciones</code> y el <code>valor inicial</code>.<br>Iniciaremos en 1 en lugar del valor por defecto cero.</p><p>Podemos escribirlo:</p><pre><code class="language-py">enumerate(direcciones, 1)
</code></pre><p>ó también podemos ser más específicos y escribir: </p><pre><code class="language-py">enumerate(direcciones, start = 1)
</code></pre><p>donde "start" significa, "inicia en".</p><p>Ahora en el <code>bucle for </code>, &nbsp;creamos las variables <code>contador</code> y <code>direccion</code>.</p><pre><code class="language-py">for contador, direccion in enumerate(direcciones, start=1):</code></pre><p>Dentro del bucle imprimiremos las variables <code>contador</code> y <code>direccion</code></p><pre><code class="language-py">print(contador, direccion)</code></pre><p>Asé es como luce el programa completo:</p><pre><code class="language-py">direcciones = [
    'Dirigete hacia la fuente en la calle principal',
    'Camina sobre la calle principal hacia el norte',
    'Gira a la derecha en la calle Simon Bolivar',
    'Camina 2 calles y gira a hacia la izquierda  ',
    'Gira a la derecha en la calle 8',
    'Gira a la izquierda en la farmacia',
    'Gira a la izquiera en el estadio',
]

for contador, direccion in enumerate(direcciones, start=1):
	print(contador, direccion)</code></pre><p>Y esto es lo que se imprimirá en la consola:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/10/image-2.png" class="kg-image" alt="image-2" width="600" height="400" loading="lazy"></figure><p>Como puedes ver la variable &nbsp;<code>contador</code> se incrementa automáticamente con la función <code>enumerate()</code>.</p><p>La función <code>enumerate()</code> dentro del <code>bucle for</code> retorna dos valores en cada iteración, uno es un contador que se guarda en la variable <code>contador</code> y el segundo valor es un elemento de la lista que se guarda en la variable &nbsp;<code>direccion</code>.</p><p>Esto elimina la posibilidad de errores &nbsp;al olvidar incrementar manualmente a <code>contador</code>.</p><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>Puedes usar la función <code>enumerate()</code> y un <code>bucle for</code> para imprimir cada elemento de un iterable junto a un contador.</p><p>La función <code>enumerate()</code> toma un iterable y un &nbsp;valor inicial el cual es opcional, como argumentos. </p><p>start = 1 &nbsp;significa "inicia en 1"</p><pre><code class="language-py">enumerate(iterable, valor inicial opcional)
Ejemplo:
enumerate(mi_lista, start=1)
enumerate(mi_lista, 1)

</code></pre><p>Si el valor inicial opcional (start) es omitido la cuenta iniciara en cero.</p><p>Usar la función <code>enumerate()</code> es una mejor alternativa a crear tu propio contador y tener que incrementarlo manualmente dentro del <code>bucle for</code>.</p><p>Ya que la función <code>enumerate()</code> se actualiza automáticamente, se elimina la posibilidad de olvidar incrementarlo manualmente.</p><p>Espero que hayas disfrutado de este artículo y suerte en tu viaje al mundo de Python.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo crear una aplicación web en tu celular: Tutorial de la aplicación Android de Python y Pydroid ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Precious Oladele [https://www.freecodecamp.org/news/author/precious/] Artículo original How to Build a Web App on Your Phone – Python & Pydroid Android App Tutorial [https://www.freecodecamp.org/news/how-to-code-on-your-phone-python-pydroid-android-app-tutorial/] Traducido y adaptado por Franciscomelov [https://twitter.com/francisco_melov] Hola, ¿cómo estás? Tengo 18 años, soy desarrollador Backend y aspirante a ingeniero en aprendizaje automático, y en ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-crear-una-aplicacion-en-tu-celular-tutorial-de-la-aplicacion-android-de-python-y-pydroid/</link>
                <guid isPermaLink="false">606e21f7669b0108f64b7b3f</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Thu, 16 Sep 2021 12:00:00 +0000</pubDate>
                <media:content url="https://images.unsplash.com/photo-1585095595274-aeffce35511a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDd8fHB5dGhvbnxlbnwwfHx8fDE2MTc4MzA1MzU&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong>Artículo original escrito por </strong></strong><a href="https://www.freecodecamp.org/news/author/precious/">Precious Oladele</a><br><strong><strong>Artículo original </strong></strong><a href="https://www.freecodecamp.org/news/how-to-code-on-your-phone-python-pydroid-android-app-tutorial/">How to Build a Web App on Your Phone – Python &amp; Pydroid Android App Tutorial</a><br><strong><strong>Traducido y adaptado por </strong></strong><a href="https://twitter.com/francisco_melov">Franciscomelov</a></p><p>Hola, ¿cómo estás? Tengo 18 años, soy desarrollador Backend y aspirante a ingeniero en aprendizaje automático, y en este artículo escribiré, como crear una aplicación web en tu celular con Python ?. Manos a la obra.</p><figure class="kg-card kg-image-card"><img src="https://lh3.googleusercontent.com/TW_PdXBpgeWY4mLcHjFisp8e7Lk7Zsn1aFarXBkmvhEMP0XR5xzTDxhKcCizsrJ25rkPeMeWp7ctlG0Wy7_WFUS0bzT-JVJfpe6X_3OqnuE_df2q5B3KIrhl3EG47w3Dik3nIZE" class="kg-image" alt="TW_PdXBpgeWY4mLcHjFisp8e7Lk7Zsn1aFarXBkmvhEMP0XR5xzTDxhKcCizsrJ25rkPeMeWp7ctlG0Wy7_WFUS0bzT-JVJfpe6X_3OqnuE_df2q5B3KIrhl3EG47w3Dik3nIZE" title="Placeholder image" width="600" height="400" loading="lazy"></figure><h2 id="requisitos"><strong>Requisitos</strong></h2><p>Lo primero que necesitamos es un celular con Android versión 6.0 en adelante.<br> ¿Me creerías si te digo que eso es todo lo que necesitaremos? Parece ser demasiado bueno para ser verdad.</p><p>Lo primero que haremos es instalar una aplicación en tu celular llamada pydroid3.<br></p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/fwM9r46B-sTofVF6IybUOhCTYoM8vSAPfumfBIiiL_wWLQpgdQgeR2B_2-N28NtNLaA7HvTtsZxlXdX03anCGvbt4QAlhQ_wyb9_AIfqG9L4ZMCjQOrKLg5OFPeZgKrJdqKEeb8" class="kg-image" alt="fwM9r46B-sTofVF6IybUOhCTYoM8vSAPfumfBIiiL_wWLQpgdQgeR2B_2-N28NtNLaA7HvTtsZxlXdX03anCGvbt4QAlhQ_wyb9_AIfqG9L4ZMCjQOrKLg5OFPeZgKrJdqKEeb8" width="600" height="400" loading="lazy"></figure><p>Como puedes ver, pydroid3 es una aplicación móvil que te permite programar con Python desde tu celular.</p><p>Lo siguiente que necesitamos, es instalar Django. Si no estás familiarizado con Django, puedes leer la <a href="https://www.djangoproject.com/">Documentación de Django aquí.</a></p><p>Para instalar Django, abre la barra lateral de navegación en pydroid3 y selecciona "Terminal":</p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/qO3djIyoXMZB8MzcIaFDmNddhB2t9XgLLgCzonR2CDkWJc0pXtap9gyGhqZfpv0uFCCvtYnynL6pAOfgactlDfpwoy03TfgqEoN2W_gAO7nOeoaLbySZEQkOSBuprhs67jc-Ens" class="kg-image" alt="qO3djIyoXMZB8MzcIaFDmNddhB2t9XgLLgCzonR2CDkWJc0pXtap9gyGhqZfpv0uFCCvtYnynL6pAOfgactlDfpwoy03TfgqEoN2W_gAO7nOeoaLbySZEQkOSBuprhs67jc-Ens" width="600" height="400" loading="lazy"></figure><p>Aparecerá una nueva ventana como esta:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/1.png" class="kg-image" alt="1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>En esta nueva ventana, solo tienes que escribir el siguiente comando:</p><pre><code class="language-python">pip install django</code></pre><p>Al terminar la instalación la pantalla se verá así.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/Screenshot_20210907-110047-1.jpg" class="kg-image" alt="Screenshot_20210907-110047-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/Screenshot_20210907-110047-1.jpg 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2021/09/Screenshot_20210907-110047-1.jpg 1000w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/Screenshot_20210907-110047-1.jpg 1080w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>La instalación terminó correctamente, podemos confirmarlo escribiendo en la terminal lo siguiente:<br> <code>django-admin</code> &nbsp;</p><p>debería aparecer algo como esto:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/2.png" class="kg-image" alt="2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/2.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Esto significa que Django está instalado en tu dispositivo.</p><h2 id="como-construir-nuestra-aplicaci-n-">Como construir nuestra aplicación.</h2><p>Es hora de construir nuestro proyecto.<br>Abre la terminal y escribe el siguiente comando:</p><p><code>django-admin startproject myapp</code></p><p>Esto crea un proyecto en Django llamado myapp en tu carpeta raíz.</p><p>Cambia de directorio escribiendo<code>cd myapp</code>. Con esto entrarás a la carpeta myapp. Ahora escribe <code>python manage.py runserver</code></p><p>Y debería aparecer lo siguiente:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/3.png" class="kg-image" alt="3" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/3.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/3.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Con esto el servidor se inicializó.</p><p> <br>Ahora, para probarlo en tu navegador ingresa a esta dirección <a href="http://127.0.0.1:8000/">127.0.0.1:8000</a> desde tu teléfono.</p><figure class="kg-card kg-image-card"><img src="https://lh3.googleusercontent.com/oqMFGPasUPLxuZoRqWHQ9mEhpitsg2XK8XPzLz_U-TvnFGzjkIaHVKUHXxwYkMDskLp_36F75BIAb-qv37bHccUESSZ9Jqa6XV7FGoWYk_IS8SfPYZfMTSNmo2ei-SMVa9cp_C8" class="kg-image" alt="oqMFGPasUPLxuZoRqWHQ9mEhpitsg2XK8XPzLz_U-TvnFGzjkIaHVKUHXxwYkMDskLp_36F75BIAb-qv37bHccUESSZ9Jqa6XV7FGoWYk_IS8SfPYZfMTSNmo2ei-SMVa9cp_C8" width="600" height="400" loading="lazy"></figure><p>¡Y listo! Si ves esta pantalla Django se configuró correctamente.</p><p>Lo siguiente que debemos hacer es crear una aplicación Django. Aun estando en myapp. </p><p>Recuerda así entramos a myapp.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/Screenshot_20210907-111931-1.jpg" class="kg-image" alt="Screenshot_20210907-111931-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/Screenshot_20210907-111931-1.jpg 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2021/09/Screenshot_20210907-111931-1.jpg 1000w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/Screenshot_20210907-111931-1.jpg 1080w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Escribe lo siguiente <code>python manage.py startapp todo</code>. Esto crea una aplicación "todo" en el proyecto myapp.</p><p>Esto es lo que ves dentro de la carpeta myapp.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/4.png" class="kg-image" alt="4" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/4.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/4.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Y dentro de la carpeta "todo" deberías ver algo como esto: </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/5.png" class="kg-image" alt="5" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/5.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/5.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Más adelante veremos los archivos y carpetas creadas, pero siéntete libre de revisar por tu cuenta, mientras no edites nada, todo seguirá funcionando perfectamente.</p><p>En Django el proyecto (<code>django-admin startproject myapp</code>) funciona como directoria raíz, mientras que la aplicación (<code>python manage.py startapp todo</code>) &nbsp;es la aplicación en sí.</p><h2 id="configurando-nuestra-aplicaci-n"><strong>Configurando nuestra aplicación</strong></h2><p>Ahora haremos que Django funcione como servidor para nuestra aplicación. <br>Primero:<br>Abre el archivo <code>settings.py</code>(dentro de la carpeta myapp/myapp) &nbsp;y añade <code>'todo'</code> a INSTALLED_APP (Aplicaciones instaladas) y guardamos.</p><p>(la imagen y tu archivo deberían ser iguales, se añadió línea 42)</p><figure class="kg-card kg-image-card"><img src="https://lh4.googleusercontent.com/mxTcaRk-ON73sPH6XL31kvZmUJjfwn1knbhMgTJALeyx6l8A1umvtXjLazS34oTjbPZeivGGTe6w6zsEQ1QzhTjaYDJ5tHsbhpeyxAfrvABzGHrNsElcv7RR9kQZi_Tttt4PjIc" class="kg-image" alt="mxTcaRk-ON73sPH6XL31kvZmUJjfwn1knbhMgTJALeyx6l8A1umvtXjLazS34oTjbPZeivGGTe6w6zsEQ1QzhTjaYDJ5tHsbhpeyxAfrvABzGHrNsElcv7RR9kQZi_Tttt4PjIc" width="600" height="400" loading="lazy"></figure><p>Después, abrimos <code>urls.py</code> dentro de <code>myapp/myapp</code> y añadimos el siguiente código:</p><pre><code class="language-python">from django.urls import path, include

path('', include('todo.urls'))</code></pre><p>Se modificó la línea 17 y se agregó la línea 21.<br>(la imagen y tu archivo deberán ser iguales)</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/6.png" class="kg-image" alt="6" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/6.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/6.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Lo que hicimos fue añadir <code>,include</code> a &nbsp;<code>from django.urls import path</code>. Y debajo de <code>path(admin)</code>, creamos una ruta vacía que incluye el archivo <code>urls.py</code> de la carpeta "todo". Espero y haya sido claro.</p><p>Ahora crearemos un nuevo archivo en la carpeta "todo" y lo llamaremos <code>urls.py</code> y añadimos el siguiente código:</p><pre><code class="language-python">from django.urls import path
from . import views

urlpatterns = [
	path('', views.index, name='home')
 ]</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/7.png" class="kg-image" alt="7" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/7.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/7.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Aquí importamos <code>path</code> de <code>Django.urls</code> e importamos <code>views</code> de nuestra carpeta raíz. Después creamos <code>urlpatterns</code>. &nbsp;La primera parte es la dirección raíz (las comillas vacías) y como puedes ver <code>views.index</code> solo significa que estamos llamando la función &nbsp;<code>index</code> del archivo <code>views.py</code></p><p>Ahora vallamos al archivo <code>views.py</code> (myapp/todo)</p><p>Importamos <code>HttpResponse</code>de esta forma:</p><p><br><code>from django.http import HttpResponse</code> (línea 2)</p><p>y después añadimos lo siguiente: (línea 6 y 7)</p><pre><code class="language-python">def index(request):
	return HttpResponse('Hello')
    </code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/8.png" class="kg-image" alt="8" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/8.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/8.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Como puedes ver, creamos la función <code>index</code> &nbsp;que llamamos en <code>urls.py</code> , pasamos el parámetro <code>request</code> y retornamos <code>HttpResponse</code>.</p><p>Para que &nbsp;<code>HttpResponse</code> pueda funcionar, tenemos que importarlo con <code>django.http import HttpResponse</code> (línea 2). </p><p>Hagamos una prueba de lo que llevamos hasta ahora: </p><p>Abre tu terminal y entra a myapp.<br><code>cd myapp</code></p><p>y escribe lo siguiente:<br><code>python manage.py runserver</code> </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/9.png" class="kg-image" alt="9" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/9.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/9.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Como puedes ver tenemos lo que retorna la función index. <br>(HttpResponse("Hello")). Ahora cargaremos nuestra plantilla HTML y sus archivos.</p><p>Para cargar los archivos HTML, crearemos dos carpetas de la siguiente forma:</p><p><code>todo/templates/todo</code></p><p>Dentro de la carpeta <code>todo</code> creamos la carpeta <code>templates</code> y dentro de esta, creamos otra carpeta <code>todo</code></p><p>Ahora creamos un archivo HTML dentro de la última carpeta todo llamado index.html y escribiremos el siguiente código:</p><p><code>&lt;h1&gt;Hello world&lt;/h1&gt;</code></p><p>Para cargar index.html modifica la función index en el archivo <code>views.py</code> de la siguiente forma:</p><pre><code class="language-python">def index(request):
	return render(request, 'todo/index.html')</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/10.png" class="kg-image" alt="10" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/10.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/10.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Ahora en lugar de retornar &nbsp;<code>HttpREsponse("Hello")</code> retorna render() que nos permite visualizar la plantilla HTML (index.html).</p><p>Para probar nuestras modificaciones, abre tu terminal y entra a my app.</p><p><code>cd myapp</code></p><p> y escribe lo siguiente:</p><p><code>python manage.py runserver</code> </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/1-1.png" class="kg-image" alt="1-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/1-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/1-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Si ves la pantalla anterior vamos por buen camino.</p><h2 id="configurando-los-archivos-est-ticos-"><strong>Configurando los archivos estáticos.</strong></h2><p>Ahora crea una carpeta en <code>todo</code> llamada <code>static</code> y dentro de esta otra carpeta <code>todo</code>.</p><p>Se verá de esta forma: <code>todo/static/todo/</code>.</p><p>En la carpeta <code>todo</code> crea un archivo <code>main.css</code> con el siguiente código:</p><pre><code class="language-css">body {
background-color: red;
}</code></pre><p>Ahora editaremos el archivo <code>index.html</code> añadiendo el siguiente código:</p><pre><code class="language-django">{% load static %}
&lt;!Doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;My page&lt;/title&gt;
&lt;link rel="stylesheet" href="{% static 'todo/main.css' %}" &gt;
&lt;/head&gt;
&lt;body&gt;
Hello
&lt;/body&gt;
&lt;/html&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/2-1.png" class="kg-image" alt="2-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/2-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/2-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Abre tu terminal y entra a myapp.</p><p><code>cd myapp</code> &nbsp;</p><p>y escribe lo siguiente:</p><p><code>python manage.py runserver</code></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/3-1.png" class="kg-image" alt="3-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/3-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/3-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Si todo está bien deberías ver la pantalla anterior.</p><h2 id="como-cargar-los-modelos-de-django-y-panel-de-administraci-n"><strong>Como cargar los modelos de &nbsp;Django y panel de administración</strong></h2><p>Para cargar el panel de administración, necesitamos crear un superuser (superusuario) de la siguiente forma. </p><p>Abre la terminal e ingresa lo siguiente</p><p><code>cd myapp</code></p><p>Después <code>python manage.py createsuperuser</code> y enter.</p><p></p><figure class="kg-card kg-image-card"><img src="https://lh3.googleusercontent.com/PBTNq4SLyU4xMFsxh8wXuP0fUCnNKqL0zPiAqclNSPc4J7j4izPVgikXXQpaPqcPeSfFhrlQgf2xwyuhWz-s4RJWn1ftc5icsi9bt2QwmjKxjp3reecfmCxQ3GdVvE04HUAc8po" class="kg-image" alt="PBTNq4SLyU4xMFsxh8wXuP0fUCnNKqL0zPiAqclNSPc4J7j4izPVgikXXQpaPqcPeSfFhrlQgf2xwyuhWz-s4RJWn1ftc5icsi9bt2QwmjKxjp3reecfmCxQ3GdVvE04HUAc8po" width="600" height="400" loading="lazy"></figure><p>Obtendremos un error, porque necesitamos ejecutar antes, lo siguiente.<br><code>python manage.py migrate</code></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/4-1.png" class="kg-image" alt="4-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/4-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/4-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Ahora sí, ejecuta.</p><p><code>python manage.py createsuperuser</code> </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/5-1.png" class="kg-image" alt="5-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/5-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/5-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Solo ingresa los datos que pide para crear un usuario y listo. Aun dentro de <code>cd myapp</code> ingresa la instrucción.</p><p><code>python manage.py runserver</code></p><p>Ahora ve a la siguiente página <code>127.0.0.1:8000/admin</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/6-1.png" class="kg-image" alt="6-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/6-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/6-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Ingresa tus datos y se mostrará un panel de administración: </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/7-1.png" class="kg-image" alt="7-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/7-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/7-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Ahora que tenemos un panel de administración, trabajaremos con un modelo de Django (una base de datos de Django). Crearemos un modelo de Django donde podremos guardar datos.</p><p>Crearemos un modelo de Django que guardara la información que ingresemos.</p><p>Abre el archivo <code>models.py</code> &nbsp;e ingresa este código.</p><pre><code class="language-python">class Post(models.Model):
	content = models.CharField(max_length=255, null=False)
    
    def __str__(self):
    	return self.content</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/8-1.png" class="kg-image" alt="8-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/8-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/8-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Creamos una clase con un parámetro <code>models.Model</code>, una variable <code>content</code> y un <code>CharField()</code> (espacio para texto). Finalmente creamos un método <code>__str__</code> que retorna el nombre del modelo de Django en lugar de un objeto en sí.</p><p>Ahora ejecutamos el comando de migración.<br>En la terminal <code>cd myapp</code> y después <code>python manage.py makemigrations</code>. Y deberás ver algo como esto:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/9-1.png" class="kg-image" alt="9-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/9-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/9-1.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Esto quiere decir que creamos una tabla Post en nuestra base de datos.<br> ahora ejecuta <code>python manage.py migrate</code> y nos mostrara lo siguiente:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/1-2.png" class="kg-image" alt="1-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/1-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/1-2.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Si tu resultado fue el de arriba todo está bien. Ahora añadiremos la tabla <code>Post</code> al administrador.</p><p>Abre &nbsp;<code>admin.py</code> y escribe este código:</p><pre><code class="language-python">from .models import *

admin.site.register(Post)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/2-2.png" class="kg-image" alt="2-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/2-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/2-2.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Aquí importamos todas las clases de <code>.models</code> y registramos la tabla "Post" en el panel de administración. Ahora, si abrimos el panel en el navegador veremos Post y podrás guardar información.</p><p><code>cd myapp</code><br><code>python manage.py runserver</code></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/3-3.png" class="kg-image" alt="3-3" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/3-3.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/3-3.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Da clic en Post.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/4-2.png" class="kg-image" alt="4-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/4-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/4-2.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Da clic en <code>Add Post+</code> y podrás crear un post.</p><p><br>En este ejemplo se creó el post "Primer Post"</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/1.jpg" class="kg-image" alt="1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/1.jpg 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/1.jpg 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><h2 id="como-mostrar-datos-de-la-base-de-datos-"><strong>Como mostrar datos de la base de datos.</strong></h2><p>Por último extraeremos nuestros datos de la base de datos. Para esto, modificaremos nuestro archivo <code>views.py</code> añadiendo el siguiente código:</p><pre><code class="language-python">from .models import *

def index(request):
	content = Post.objects.all()
    context = {'content': content}
    return render(request, 'todo/index.html', context)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/5-2.png" class="kg-image" alt="5-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/5-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/5-2.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Importamos todo el contenido de <code>models.py</code>, creamos una variable llamada <code>content</code>, y extraemos todos los datos de la tabla &nbsp;Post, después pasamos content dentro de un diccionario a render().</p><p>Ahora añadiremos el siguiente código a &nbsp;index.html para que podamos mostrar esta información.<br>(línea 9, 10, 11, 12)</p><pre><code class="language-django">{% for contents in content %}
{{contents.content}}
{% endfor %}</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/7-2.png" class="kg-image" alt="7-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/7-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/7-2.png 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Aquí creamos un bucle <code>for</code> usando "template tags" y extraemos todos los datos de content.</p><p>Ahora abre tu terminal &nbsp;ejecuta y entra nuevamente a tu página:</p><p><code>cd myapp</code><br><code>python manage.py runserver</code></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/2.jpeg" class="kg-image" alt="2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/2.jpeg 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2021/09/2.jpeg 1000w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/2.jpeg 1080w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Funciona, agreguemos otro post para confirmar.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/1.jpeg" class="kg-image" alt="1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/1.jpeg 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/1.jpeg 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/2-1.jpeg" class="kg-image" alt="2-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/2-1.jpeg 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/2-1.jpeg 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Y el resultado debería ser el siguiente.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2021/09/3.jpeg" class="kg-image" alt="3" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2021/09/3.jpeg 600w, https://www.freecodecamp.org/espanol/news/content/images/2021/09/3.jpeg 720w" sizes="(min-width: 720px) 720px" width="600" height="400" loading="lazy"></figure><p>Violà – Funciona perfectamente. Ahora puedes añadir un salto de línea &lt;br&gt; para poder visualizar con mayor claridad los post. ¡Y listo!</p><p>Gracias por leer. Si quieres ver un tutorial donde explicaré Django más a fondo puedes entrar a mi canal de YouTube <a href="https://youtube.com/channel/UCLcHGKxbEO1XGVETXqzYXLA">Devstack</a> y subscribirte.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Función Pop en Python ]]>
                </title>
                <description>
                    <![CDATA[ El método pop() elimina y retorna un elemento de una lista.  Hay un parámetro opcional, el índice a ser eliminado de la lista, si no se especifica ningún índice, a.pop() elimina y retorna el último elemento de la lista.  Si el índice especificado en el método pop() no ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/funcion-pop-en-python/</link>
                <guid isPermaLink="false">600af94ea4e0700982aa0135</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Franciscomelov ]]>
                </dc:creator>
                <pubDate>Sun, 21 Mar 2021 04:45:45 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/04/photo-1525268771113-32d9e9021a97.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>El método pop() elimina y retorna un elemento de una lista. <br>Hay un parámetro opcional, el índice a ser eliminado de la lista, si no se especifica ningún índice, a.pop() elimina y retorna el último elemento de la lista. <br>Si el índice especificado en el método pop() no está en el rango de la lista, lanzara el error- <code>IndexError: pop index out of range exception</code>. (Error de índice: índice fuera de rango)</p><h3 id="ejemplo-de-uso-"><strong>Ejemplo de uso:</strong></h3><pre><code class="language-py">ciudades = ['New York', 'Dallas', 'San Antonio', 'Houston', 'San Francisco']

print ( "Ciudad removida : ", ciudades.pop() )
print ( "La ciudad en el indice 2 es : ", ciudades.pop(2) )</code></pre><h4 id="resultado-">Resultado:</h4><pre><code class="language-text">Ciudad romovida :  San Francisco
La ciudad en el indice 2 es :  San Antonio</code></pre><h3 id="funcionalidad-b-sica-de-apilar"><strong>Funcionalidad básica de apilar</strong></h3><p>El método <code>pop()</code> a menudo es usado en conjunto con <code>append()</code> para implementar una funcionalidad básica de apilar en aplicaciones Python.</p><pre><code class="language-py"># append() inserta un elemento al final de una lista
# pila, apilar (stack) se refiere a un grupo de datos ó elementos

pila = []

for i in range(5):
    pila.append(i)

print(pila) # [0, 1, 2, 3, 4]

while len(pila):
    print(pila.pop())

print(pila) # []</code></pre><h4 id="para-m-s-informaci-n-"><strong>Para más información<strong><strong><strong>:</strong></strong></strong></strong></h4><p>La documentación oficial de <code>pop()</code> la puedes encontrar <a href="https://docs.python.org/es/3.6/tutorial/datastructures.html">aquí</a></p><p>Traducido del artículo - <a href="https://www.freecodecamp.org/news/pop-function-in-python/">Pop Function in Python</a></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
