<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: WizSebastian</title>
    <description>The latest articles on DEV Community by WizSebastian (@wizsebastian).</description>
    <link>https://dev.to/wizsebastian</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F120476%2F3007d30b-359b-4773-9737-611ada6c6f74.png</url>
      <title>DEV Community: WizSebastian</title>
      <link>https://dev.to/wizsebastian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wizsebastian"/>
    <language>en</language>
    <item>
      <title>From WhatsApp to a Custom CRM in 15 Days: How I Fully Digitalized a Real Business</title>
      <dc:creator>WizSebastian</dc:creator>
      <pubDate>Wed, 18 Feb 2026 14:46:12 +0000</pubDate>
      <link>https://dev.to/wizsebastian/from-whatsapp-to-a-custom-crm-in-15-days-how-i-fully-digitalized-a-real-business-3pno</link>
      <guid>https://dev.to/wizsebastian/from-whatsapp-to-a-custom-crm-in-15-days-how-i-fully-digitalized-a-real-business-3pno</guid>
      <description>&lt;p&gt;Hello dev community,&lt;/p&gt;

&lt;p&gt;It’s been a long time since I last wrote. I always say I’ll do it more often, and then work absorbs me again. This time I decided to sit down and document something that completely changed the way I think about generating ideas for a client.&lt;/p&gt;

&lt;p&gt;In 15 days, I faced the full digitalization of a real business. Not a theoretical side project. Not a portfolio demo. A business that moves money, inventory, people, and hard deadlines.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Starting Point
&lt;/h2&gt;

&lt;p&gt;My wife and I run a virtual business selling personalized arrangements, flowers, and balloons. It operates mainly through Instagram, Facebook, and WhatsApp. A very common model across Latin America.&lt;/p&gt;

&lt;p&gt;The flow was simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PDF catalog sent via WhatsApp.&lt;/li&gt;
&lt;li&gt;Customer selects a product.&lt;/li&gt;
&lt;li&gt;Manual questions for personalization.&lt;/li&gt;
&lt;li&gt;Bank transfer payment.&lt;/li&gt;
&lt;li&gt;External delivery coordination.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It worked. It generated around 15 orders per week. It was extra income. But it was completely sustained by manual processes.&lt;/p&gt;

&lt;p&gt;We had spreadsheets with customers and orders, but without clear structure. There was no real traceability. We didn’t know with precision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where orders were coming from.&lt;/li&gt;
&lt;li&gt;Which products rotated the most.&lt;/li&gt;
&lt;li&gt;Which ads were working.&lt;/li&gt;
&lt;li&gt;Which areas were ordering more.&lt;/li&gt;
&lt;li&gt;Which customers were returning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We were operating on intuition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7fmbrqyz1larokadp5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7fmbrqyz1larokadp5h.png" alt="Manual processes + WhatsApp + Valentine’s Day approaching and pretending everything is under control." width="800" height="564"&gt;&lt;/a&gt;&lt;br&gt;
[[Manual processes + WhatsApp + Valentine’s Day approaching and pretending everything is under control.]]&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trigger
&lt;/h2&gt;

&lt;p&gt;On February 1st, we decided we needed a change. Valentine’s Day was approaching. The previous year we had losses from flowers that weren’t sold on time.&lt;/p&gt;

&lt;p&gt;This year had to be different.&lt;/p&gt;

&lt;p&gt;The context had also changed: today we have AI tools that drastically accelerate development. What used to require months of planning and execution can now be approached with strategic speed.&lt;/p&gt;

&lt;p&gt;I decided to finally do something I had postponed for years: build our own system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdno0sa0jhxnons5bwl1x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdno0sa0jhxnons5bwl1x.png" alt="When you realize you are the tech department and no one else is coming to build it." width="500" height="247"&gt;&lt;/a&gt;&lt;br&gt;
[[When you realize you are the tech department and no one else is coming to build it.]]&lt;/p&gt;

&lt;h2&gt;
  
  
  The Paradigm Shift
&lt;/h2&gt;

&lt;p&gt;I didn’t start by thinking about code. I started by thinking about the system, the same way I would if this were a client and not my wife’s business.&lt;/p&gt;

&lt;p&gt;I asked myself basic questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where are the orders coming from?&lt;/li&gt;
&lt;li&gt;How are customers arriving?&lt;/li&gt;
&lt;li&gt;What frictions exist in the process?&lt;/li&gt;
&lt;li&gt;Which tasks are repetitive?&lt;/li&gt;
&lt;li&gt;What data are we not capturing?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answer was clear: we needed to digitalize the entire flow and, most importantly, measure everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: A Business-Oriented Custom CRM
&lt;/h2&gt;

&lt;p&gt;Instead of adapting the business to generic software, I decided to build a system aligned with the business.&lt;/p&gt;

&lt;p&gt;I designed a CRM capable of managing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Orders&lt;/li&gt;
&lt;li&gt;Products&lt;/li&gt;
&lt;li&gt;Catalog&lt;/li&gt;
&lt;li&gt;Inventory&lt;/li&gt;
&lt;li&gt;Customers&lt;/li&gt;
&lt;li&gt;Delivery routes&lt;/li&gt;
&lt;li&gt;Campaign tracking&lt;/li&gt;
&lt;li&gt;Advisor system with commissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advisors and Structured Organic Growth
&lt;/h3&gt;

&lt;p&gt;Instagram had approximately 15,000 followers, which was the main source of organic sales.&lt;/p&gt;

&lt;p&gt;The advisor system did not come directly from that audience. We shared a registration link in different communities we belong to, inviting people interested in becoming advisors.&lt;/p&gt;

&lt;p&gt;We created a small training system focused on selling the product using HIGH TICKET methodology principles: value-based positioning, personalization, experience, and consultative closing. It wasn’t just about sharing a link; it was about structuring a better way to sell.&lt;/p&gt;

&lt;p&gt;That’s what truly made the difference.&lt;/p&gt;

&lt;p&gt;We created personalized links for advisors. Each sale is associated with the referring advisor. We offered a 10% commission. More than 20 people actively participated.&lt;/p&gt;

&lt;p&gt;The result was immediate: a significant increase in orders and a clear attribution system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advertising with Real Tracking
&lt;/h3&gt;

&lt;p&gt;We launched quick campaigns, and each ad was connected to the CRM. For the first time, we were able to precisely measure which ads were generating real conversions, without relying solely on Meta’s dashboard.&lt;/p&gt;

&lt;p&gt;We stopped guessing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Logistics: The Silent Problem
&lt;/h3&gt;

&lt;p&gt;One of the biggest pain points was delivery. We use external couriers, which is common for this type of business.&lt;/p&gt;

&lt;p&gt;The recurring issue was location accuracy. Sometimes drivers couldn’t find the exact address.&lt;/p&gt;

&lt;p&gt;We solved this by integrating maps directly into the order process. Each order generates a structured location and a clear route, including a delivery cost calculation based on logic similar to Uber’s dynamic pricing, connected to the Google Maps API to determine the best route.&lt;/p&gt;

&lt;p&gt;This was crucial because previously our agreement with couriers was to pay whatever Uber estimated. The problem was that Uber’s estimate didn’t always match the real sending time, creating inconsistencies in costs. By structuring the logic within our system, we eliminated that friction.&lt;/p&gt;

&lt;p&gt;Operational friction dropped dramatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43kbdfg3havxlsye95ab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43kbdfg3havxlsye95ab.png" alt="Replacing guesswork delivery pricing with structured logic and Google Maps API calculations." width="600" height="454"&gt;&lt;/a&gt;&lt;br&gt;
[[Replacing guesswork delivery pricing with structured logic and Google Maps API calculations.]]&lt;/p&gt;

&lt;h2&gt;
  
  
  System Modules Overview
&lt;/h2&gt;

&lt;p&gt;To give a clearer picture of the scope, here’s a breakdown of the core modules currently running inside the system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Main Dashboard&lt;/strong&gt; – Operational overview with real-time metrics: daily orders, revenue, pending deliveries, and performance indicators.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics&lt;/strong&gt; – Data visualization layer to analyze product performance, campaign attribution, advisor activity, and geographic demand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orders&lt;/strong&gt; – Centralized order management including status tracking, personalization details, payment confirmation, and fulfillment state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supplies (Insumos)&lt;/strong&gt; – Raw material control to track flowers, balloons, packaging, and other inputs to prevent inventory loss.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Final Products&lt;/strong&gt; – Structured product definitions with pricing logic, cost structure, and margin visibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public Catalog&lt;/strong&gt; – Customer-facing catalog dynamically connected to the backend instead of static PDFs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Members&lt;/strong&gt; – Internal team management and role-based access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advisors&lt;/strong&gt; – Referral tracking system with unique links, commission calculation, and performance monitoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routes&lt;/strong&gt; – Delivery route planning with map integration and optimized logistics visualization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drivers&lt;/strong&gt; – Courier registry with delivery assignment tracking and cost control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interested Countdown&lt;/strong&gt; – Lead capture system for high-demand campaigns (like Valentine’s Day), allowing pre-registration and demand forecasting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Margins&lt;/strong&gt; – Profitability tracking per product and per campaign.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GMD Users&lt;/strong&gt; – Administrative user management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;View Management&lt;/strong&gt; – Interface customization and operational visibility controls.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This wasn’t just a website. It became operational infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;In 15 days, we built a fully functional MVP.&lt;/p&gt;

&lt;p&gt;The previous year we had generated around 20 Valentine’s Day orders.&lt;/p&gt;

&lt;p&gt;This year, we generated more than 180 orders for a single day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5fbtqzueajzqvxsjyyg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5fbtqzueajzqvxsjyyg.png" alt="From 20 Valentine’s Day orders last year to 180 in a single day." width="480" height="270"&gt;&lt;/a&gt;&lt;br&gt;
[[From 20 Valentine’s Day orders last year to 180 in a single day.]]&lt;/p&gt;

&lt;p&gt;Sales didn’t just increase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inventory loss was avoided.&lt;/li&gt;
&lt;li&gt;Advisors generated income.&lt;/li&gt;
&lt;li&gt;Routes were efficiently organized.&lt;/li&gt;
&lt;li&gt;We obtained real data for future decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Learning
&lt;/h2&gt;

&lt;p&gt;First: the world changed.&lt;/p&gt;

&lt;p&gt;Technology that used to be accessible only to medium and large companies is now available to small businesses.&lt;/p&gt;

&lt;p&gt;Second: AI does not replace developers. It amplifies them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgiieuohw1j4qi8sb6zkt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgiieuohw1j4qi8sb6zkt.png" alt="AI didn’t take my job. It gave me leverage and execution speed." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
[[AI didn’t take my job. It gave me leverage and execution speed.]]&lt;/p&gt;

&lt;p&gt;It allows execution in days what previously required months.&lt;/p&gt;

&lt;p&gt;Third: the real advantage isn’t the code. It’s the ability to structure data and eliminate operational friction.&lt;/p&gt;

&lt;p&gt;Digitalizing is not about "having a website." It’s about designing a system that captures information, enables measurement, and supports optimization.&lt;/p&gt;

&lt;p&gt;We moved from operating on intuition to operating on evidence.&lt;/p&gt;

&lt;p&gt;And it all started with one decision: stop treating the business as informal and start treating it as a system.&lt;/p&gt;

&lt;p&gt;That is the real paradigm shift.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;Now I’ll be working more deeply on this project to optimize it and bring it to a 100% operational level. This business will grow this year. The difference is clear: today we have tools that allow us to build with speed and precision. Thank you, AI.&lt;/p&gt;

&lt;p&gt;If you’d like to see the result, you can visit:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://goodmorning.members.gmdcrew.com" rel="noopener noreferrer"&gt;https://goodmorning.members.gmdcrew.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your business needs a similar solution, or your company is looking for someone who thinks in terms of product, data, and technology as a unified system, feel free to reach out at:&lt;/p&gt;

&lt;p&gt;&lt;a href="mailto:wizsebastian@gmail.com"&gt;wizsebastian@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wizsebastian.com/" rel="noopener noreferrer"&gt;https://wizsebastian.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/wizsebastian" rel="noopener noreferrer"&gt;https://huggingface.co/wizsebastian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/wizsebastian" rel="noopener noreferrer"&gt;https://github.com/wizsebastian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll be glad to connect.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>findjob</category>
    </item>
    <item>
      <title>Ai Didn’t Kill Frontend. It Turned It Into A Perspective.</title>
      <dc:creator>WizSebastian</dc:creator>
      <pubDate>Tue, 16 Dec 2025 17:24:04 +0000</pubDate>
      <link>https://dev.to/wizsebastian/ai-didnt-kill-frontend-it-turned-it-into-a-perspective-e23</link>
      <guid>https://dev.to/wizsebastian/ai-didnt-kill-frontend-it-turned-it-into-a-perspective-e23</guid>
      <description>&lt;p&gt;I’ve been working with React since it came out. Back then, frontend meant components, props, and making things look right. We were happy. We were innocent.&lt;/p&gt;

&lt;p&gt;Then one day someone said, casually, over a beer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Frontend became a wildcard.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My brain did the Windows XP shutdown sound.&lt;/p&gt;

&lt;p&gt;When I started programming, he was Avatar Aang. I was Zuko — writing questionable JavaScript, shipping bugs like it was my job. Classic junior dev energy. Almost ten years later, he drops that line like it’s obvious.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jqepo11m7kr2tojq084.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jqepo11m7kr2tojq084.png" alt="Illustration of Zuko from Avatar symbolizing a junior developer phase, writing buggy JavaScript with chaotic energy" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontend Was Never &lt;em&gt;Just&lt;/em&gt; UI
&lt;/h2&gt;

&lt;p&gt;At some point, frontend stopped being about pixels and started being about decisions.&lt;/p&gt;

&lt;p&gt;What data do we show? When do we fetch it? What happens when it fails? How fast does this &lt;em&gt;feel&lt;/em&gt; to a real human?&lt;/p&gt;

&lt;p&gt;Those aren’t backend questions, and they’re not design questions either. They’re product questions, answered in code.&lt;/p&gt;

&lt;p&gt;Backend still does the heavy lifting: data, rules, guarantees. Frontend is where all of that shows up for the user. This blog has always been about how those pieces fit together, not about picking sides.&lt;/p&gt;

&lt;p&gt;Frontend lives where users, systems, and business goals collide. That forces you to think in flows, not screens. In outcomes, not components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter AI (The Tony Stark Moment)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhoy0yk9z3v2kgo9sj51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhoy0yk9z3v2kgo9sj51.png" alt="Conceptual illustration representing AI as an intelligent assistant enhancing a developer’s workflow, inspired by Tony Stark interfaces" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI didn’t replace my frontend skills. It mostly removed friction.&lt;/p&gt;

&lt;p&gt;I could prototype faster, refactor with more confidence, catch edge cases earlier, and think about architecture before writing code — including realizing earlier when something probably belongs in the backend.&lt;/p&gt;

&lt;p&gt;It felt less like autocomplete and more like having someone to think out loud with. That’s when frontend stopped being reactive and became more intentional.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Components to Flows
&lt;/h2&gt;

&lt;p&gt;At some point, I stopped thinking in pages and started thinking in flows.&lt;/p&gt;

&lt;p&gt;Authentication flows, loading states, error recovery, user trust.&lt;/p&gt;

&lt;p&gt;Knowing some backend made me better at frontend. Thinking carefully about frontend made my backend decisions cleaner. AI didn’t erase the line between them, but it did make you notice it more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontend Is a Perspective Now
&lt;/h2&gt;

&lt;p&gt;Frontend today isn’t about knowing a framework. It’s about understanding how decisions ripple through a system — database, API, network, UI — and how they feel to the person using it.&lt;/p&gt;

&lt;p&gt;AI didn’t kill frontend. It just changed how you think about it. And once that clicks, it’s hard to unsee.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Next Level: Going Deeper Into Machine Learning
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6s69s02hdgnjkvp6sre5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6s69s02hdgnjkvp6sre5.png" alt="Illustration symbolizing the transition from frontend development into machine learning exploration" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eventually, curiosity kicks in.&lt;/p&gt;

&lt;p&gt;If frontend is a perspective and AI is an amplifier, the next step isn’t just using models. It’s understanding them enough to know what they’re actually doing.&lt;/p&gt;

&lt;p&gt;That’s where machine learning comes in. Not in a PhD sense, but in a very practical, “what problem am I trying to solve?” way.&lt;/p&gt;

&lt;p&gt;I trained and deployed a small sentiment analysis model using DistilBERT to analyze Google Maps reviews and see how people express opinions in the wild.&lt;/p&gt;

&lt;p&gt;Here’s the experiment:&lt;br&gt;&lt;br&gt;
&lt;a href="https://huggingface.co/spaces/wizsebastian/distilbert-sentiment-luis?logs=container" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/wizsebastian/distilbert-sentiment-luis?logs=container&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is it perfect? No. Is it useful? Maybe. Is it interesting? Definitely.&lt;/p&gt;

&lt;p&gt;That’s usually a good place to be.&lt;/p&gt;

</description>
      <category>react</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How I Automated the Transcription of 91 Instagram (screenshots) Poems Using Python + LLM Vision (Real Case Study)</title>
      <dc:creator>WizSebastian</dc:creator>
      <pubDate>Wed, 19 Nov 2025 02:24:52 +0000</pubDate>
      <link>https://dev.to/wizsebastian/how-i-automated-the-transcription-of-91-instagram-screenshots-poems-using-python-llm-vision-2oh2</link>
      <guid>https://dev.to/wizsebastian/how-i-automated-the-transcription-of-91-instagram-screenshots-poems-using-python-llm-vision-2oh2</guid>
      <description>&lt;h2&gt;
  
  
  ✨ The Story Begins
&lt;/h2&gt;

&lt;p&gt;There is always that one message from a friend that starts like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hey… I do not think I can make it today because something came up.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My friend Mariana, a community manager for a local Instagram poet, had a problem.&lt;/p&gt;

&lt;p&gt;Her client publishes several poems every night as images. These images have handwritten text, stylized filters, shadows, messy backgrounds and artistic layouts. After a few months of doing this, all the poems were saved inside a Highlight titled “Poetry Vault.”&lt;/p&gt;

&lt;p&gt;It looks cute on Instagram.&lt;br&gt;
It is a nightmare if you have to transcribe everything manually.&lt;/p&gt;

&lt;p&gt;Mariana had 91 images waiting for her.&lt;br&gt;
Ninety-one.&lt;/p&gt;

&lt;p&gt;Her brain in that moment looked like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0wzvaidqbdh1uwh4yj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0wzvaidqbdh1uwh4yj6.png" alt="Cartoon of an overwhelmed brain surrounded by chaotic icons, representing mental overload" width="498" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;She told me she could not help me with something we had planned. She had to spend the entire day typing.&lt;/p&gt;

&lt;p&gt;So I said the sentence every developer eventually says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“We can automate this.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;🚀 Why Automate This?&lt;/p&gt;

&lt;p&gt;This situation is the perfect reminder of something developers often forget.&lt;br&gt;
    • We have tools that can save humans hours or even days.&lt;br&gt;
    • LLMs can extract text from images with surprisingly high accuracy.&lt;br&gt;
    • A simple script can eliminate repetitive manual work.&lt;br&gt;
    • Some of the most meaningful automations start with helping a friend.&lt;/p&gt;

&lt;p&gt;She thought she would lose an entire day.&lt;br&gt;
Instead, she finished everything in minutes and still joined me later.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;🧠 System Overview&lt;/p&gt;

&lt;p&gt;Diagram using Mermaid&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F04yczoiw3ru1x0apzqik.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F04yczoiw3ru1x0apzqik.png" alt="" width="440" height="792"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;🛠️ The Python Script&lt;/p&gt;

&lt;p&gt;This is the simplified version of the script I used.&lt;br&gt;
The API key is removed for safety.&lt;br&gt;
It scans a folder, sends each image to OpenAI Vision, gets the extracted text, and stores it in a Markdown file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import os
import base64
import json
import time
import shutil
import requests
from tqdm import tqdm

OPENAI_API_KEY = "YOUR_API_KEY_HERE"

BASE_FOLDER = "/path/to/folder"
IMAGES_FOLDER = os.path.join(BASE_FOLDER, "images")
MD_FOLDER = os.path.join(BASE_FOLDER, "md_results")

os.makedirs(MD_FOLDER, exist_ok=True)

def encode_image(path):
    with open(path, "rb") as img:
        return base64.b64encode(img.read()).decode("utf-8")

def extract_text(path):
    b64 = encode_image(path)
    payload = {
        "model": "gpt-4o",
        "messages": [
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": "Extract the visible text from this image. Only return the text."},
                    {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}}
                ],
            }
        ],
        "max_tokens": 1000,
    }

    response = requests.post(
        "https://api.openai.com/v1/chat/completions",
        headers={"Authorization": f"Bearer {OPENAI_API_KEY}"},
        json=payload
    )

    return response.json()["choices"][0]["message"]["content"]

def save_md(filename, text):
    md_name = filename.replace(".jpg", ".md")
    with open(os.path.join(MD_FOLDER, md_name), "w", encoding="utf-8") as f:
        f.write(f"# Extracted Text from {filename}\n\n{text}")

def run():
    images = [f for f in os.listdir(IMAGES_FOLDER) if f.lower().endswith((".jpg", ".png"))]

    for img in tqdm(images, desc="Processing images"):
        text = extract_text(os.path.join(IMAGES_FOLDER, img))
        save_md(img, text)

if __name__ == "__main__":
    run()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  CODE COMPLETE HERE
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/wizsebastian/gpt4o_batch_image_text_extractor" rel="noopener noreferrer"&gt;https://github.com/wizsebastian/gpt4o_batch_image_text_extractor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;📈 Results&lt;/p&gt;

&lt;p&gt;What would take hours by hand was completed in minutes.&lt;/p&gt;

&lt;p&gt;Mariana delivered all 91 transcriptions.&lt;br&gt;
Her client was happy.&lt;br&gt;
She saved her entire day.&lt;br&gt;
We still went to our event.&lt;/p&gt;

&lt;p&gt;She now thinks I am some kind of wizard.&lt;/p&gt;

&lt;p&gt;this is how the outputs look and yes all the poems are in spanish.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqljzml6ntdso6y1vutxr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqljzml6ntdso6y1vutxr.png" alt="" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fea3u9lsev3je10q38bgt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fea3u9lsev3je10q38bgt.png" alt="Illustration of a wizard using a laptop, symbolizing a developer automating work with code" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;🎯 What You Can Build From This&lt;/p&gt;

&lt;p&gt;Once you understand this workflow, you can automate many tasks.&lt;br&gt;
    • Invoice OCR&lt;br&gt;
    • Extracting text from screenshots&lt;br&gt;
    • Digitizing handwritten notebooks&lt;br&gt;
    • Archiving social media text&lt;br&gt;
    • Creating searchable databases&lt;br&gt;
    • Processing large folders from clients&lt;/p&gt;

&lt;p&gt;Automation does not have to be huge or complex.&lt;br&gt;
Helping one person is already a meaningful win.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;📚 Want a Part 2?&lt;/p&gt;

&lt;p&gt;I can prepare a follow-up covering:&lt;br&gt;
    • Rate limit handling&lt;br&gt;
    • Retry logic&lt;br&gt;
    • Better extraction for low quality images&lt;br&gt;
    • Async batch processing for higher speed&lt;br&gt;
    • Exporting to PDF, CSV, JSON, TXT&lt;br&gt;
    • Building a small web interface&lt;br&gt;
    • Combining Vision LLM with Tesseract OCR&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;❤️ Final Thought&lt;/p&gt;

&lt;p&gt;AI does not replace people. AI frees people.&lt;/p&gt;

&lt;p&gt;Sometimes the best use of your skills is saving a friend from manually typing 91 poems.&lt;/p&gt;

&lt;p&gt;Yes, in the end we were able to go out and have fun all together, thanks AI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F15f4apc3sz8feqpiyj8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F15f4apc3sz8feqpiyj8s.png" alt="Illustration of friends having fun together, representing the free time gained thanks to automation" width="644" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>python</category>
      <category>automation</category>
      <category>ai</category>
    </item>
    <item>
      <title>Guía Básica de Python: Domina la Sintaxis y Principios Fundamentales</title>
      <dc:creator>WizSebastian</dc:creator>
      <pubDate>Thu, 08 Aug 2024 17:02:21 +0000</pubDate>
      <link>https://dev.to/wizsebastian/guia-basica-de-python-domina-la-sintaxis-y-principios-fundamentales-4lo4</link>
      <guid>https://dev.to/wizsebastian/guia-basica-de-python-domina-la-sintaxis-y-principios-fundamentales-4lo4</guid>
      <description>&lt;h2&gt;
  
  
  Tabla de Contenido
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Introducción a Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;¿Qué es Python?&lt;/li&gt;
&lt;li&gt;¿Por qué aprender Python?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instalación de Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Instalación en Windows&lt;/li&gt;
&lt;li&gt;Instalación en Mac&lt;/li&gt;
&lt;li&gt;Instalación en Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Variables y Tipos de Datos&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Declaración de variables&lt;/li&gt;
&lt;li&gt;Tipos de datos básicos: enteros, flotantes, cadenas, booleanos&lt;/li&gt;
&lt;li&gt;Operaciones básicas con números y cadenas&lt;/li&gt;
&lt;li&gt;Conversión de tipos de datos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estructuras de Datos&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Listas

&lt;ul&gt;
&lt;li&gt;Creación y acceso a elementos&lt;/li&gt;
&lt;li&gt;Métodos comunes: &lt;code&gt;append&lt;/code&gt;, &lt;code&gt;remove&lt;/code&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Diccionarios

&lt;ul&gt;
&lt;li&gt;Creación y acceso a elementos&lt;/li&gt;
&lt;li&gt;Métodos comunes: &lt;code&gt;keys&lt;/code&gt;, &lt;code&gt;values&lt;/code&gt;, &lt;code&gt;items&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tuplas

&lt;ul&gt;
&lt;li&gt;Creación y acceso a elementos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conjuntos

&lt;ul&gt;
&lt;li&gt;Creación y operaciones básicas&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Condicionales&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Uso de &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;elif&lt;/code&gt; y &lt;code&gt;else&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Operadores de comparación&lt;/li&gt;
&lt;li&gt;Operadores lógicos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bucles&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Bucle &lt;code&gt;for&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;Iteración sobre listas, cadenas y diccionarios&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bucle &lt;code&gt;while&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Uso de &lt;code&gt;break&lt;/code&gt; y &lt;code&gt;continue&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Funciones&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Definición y llamada de funciones&lt;/li&gt;
&lt;li&gt;Parámetros y argumentos&lt;/li&gt;
&lt;li&gt;Valor de retorno&lt;/li&gt;
&lt;li&gt;Funciones anónimas (&lt;code&gt;lambda&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manejo de Archivos&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Lectura y escritura de archivos&lt;/li&gt;
&lt;li&gt;Modos de apertura (&lt;code&gt;r&lt;/code&gt;, &lt;code&gt;w&lt;/code&gt;, &lt;code&gt;a&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Uso de &lt;code&gt;with&lt;/code&gt; para manejo seguro de archivos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Módulos y Paquetes&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Importación de módulos estándar&lt;/li&gt;
&lt;li&gt;Instalación y uso de paquetes externos (ejemplo: PIL para el proyecto de generador de memes)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proyectos Prácticos&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Calculadora Básica&lt;/li&gt;
&lt;li&gt;Adivina el Número&lt;/li&gt;
&lt;li&gt;Lista de Tareas&lt;/li&gt;
&lt;li&gt;Convertidor de Unidades&lt;/li&gt;
&lt;li&gt;Generador de Memes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Introducción a Python
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Qué es Python?
&lt;/h3&gt;

&lt;p&gt;Python es un lenguaje de programación muy poderoso y fácil de aprender. En esta guía, aprenderás los conceptos básicos de la sintaxis de Python, cómo instalarlo en diferentes sistemas operativos y te propondré algunos proyectos prácticos para poner en práctica lo aprendido.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Por qué aprender Python?
&lt;/h3&gt;

&lt;p&gt;Python es utilizado en diversas áreas, como desarrollo web, análisis de datos, inteligencia artificial, y más. Es conocido por su sintaxis sencilla y su gran comunidad de usuarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Instalación de Python
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Instalación en Windows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Ve al sitio oficial de &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;Python&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Descarga el instalador para Windows.&lt;/li&gt;
&lt;li&gt;Ejecuta el instalador y asegúrate de marcar la opción "Add Python to PATH".&lt;/li&gt;
&lt;li&gt;Sigue las instrucciones del instalador.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Instalación en Mac
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Abre la Terminal.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instala Homebrew si no lo tienes:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instala Python usando Homebrew:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;python
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Instalación en Linux
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Abre la Terminal.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Usa el siguiente comando para instalar Python:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;python3
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Variables y Tipos de Datos
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Declaración de variables
&lt;/h3&gt;

&lt;p&gt;Una variable es un identificador simbólico que hace referencia a una ubicación en la memoria donde se almacena un valor. Este valor puede ser modificado durante la ejecución del programa.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;edad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;
&lt;span class="n"&gt;nombre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Luis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tipos de datos básicos
&lt;/h3&gt;

&lt;p&gt;Python soporta varios tipos de datos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;int&lt;/strong&gt; - Enteros&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;float&lt;/strong&gt; - Números decimales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;str&lt;/strong&gt; - Cadenas de texto&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;bool&lt;/strong&gt; - Booleanos (True o False)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ejemplos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;numero_entero&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;       &lt;span class="c1"&gt;# tipo de dato int
&lt;/span&gt;&lt;span class="n"&gt;numero_decimal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.14&lt;/span&gt;    &lt;span class="c1"&gt;# tipo de dato float
&lt;/span&gt;&lt;span class="n"&gt;cadena&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hola, mundo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;   &lt;span class="c1"&gt;# tipo de dato str
&lt;/span&gt;&lt;span class="n"&gt;booleano&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;          &lt;span class="c1"&gt;# tipo de dato bool
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Operaciones básicas con números y cadenas
&lt;/h3&gt;

&lt;p&gt;Python permite realizar operaciones aritméticas con números y concatenación con cadenas.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;suma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="n"&gt;producto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="n"&gt;cadena_concatenada&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hola&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mundo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conversión de tipos de datos
&lt;/h3&gt;

&lt;p&gt;Se puede convertir entre diferentes tipos de datos usando funciones integradas como &lt;code&gt;int()&lt;/code&gt;, &lt;code&gt;float()&lt;/code&gt;, &lt;code&gt;str()&lt;/code&gt;, etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;entero_a_flotante&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 10.0
&lt;/span&gt;&lt;span class="n"&gt;flotante_a_entero&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;3.14&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 3
&lt;/span&gt;&lt;span class="n"&gt;numero_a_cadena&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="c1"&gt;# "15"
&lt;/span&gt;&lt;span class="n"&gt;cadena_a_numero&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;20&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;# 20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Estructuras de Datos
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Listas
&lt;/h3&gt;

&lt;p&gt;Una lista es una colección ordenada de elementos que puede contener elementos de diferentes tipos.&lt;/p&gt;

&lt;h4&gt;
  
  
  Creación y acceso a elementos
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;mi_lista&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuatro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mi_lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# 1
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mi_lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# "cuatro"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Métodos comunes: &lt;code&gt;append&lt;/code&gt;, &lt;code&gt;remove&lt;/code&gt;, etc.
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;mi_lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;mi_lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuatro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mi_lista&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# [1, 2, 3, 5.0, 6]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Diccionarios
&lt;/h3&gt;

&lt;p&gt;Un diccionario es una colección desordenada de pares clave-valor.&lt;/p&gt;

&lt;h4&gt;
  
  
  Creación y acceso a elementos
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;mi_diccionario&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nombre&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Luis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edad&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mi_diccionario&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nombre&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# "Luis"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Métodos comunes: &lt;code&gt;keys&lt;/code&gt;, &lt;code&gt;values&lt;/code&gt;, &lt;code&gt;items&lt;/code&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;claves&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mi_diccionario&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;valores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mi_diccionario&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;elementos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mi_diccionario&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;claves&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;# dict_keys(['nombre', 'edad'])
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;valores&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# dict_values(['Luis', 25])
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;elementos&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# dict_items([('nombre', 'Luis'), ('edad', 25)])
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tuplas
&lt;/h3&gt;

&lt;p&gt;Una tupla es una colección ordenada e inmutable de elementos.&lt;/p&gt;

&lt;h4&gt;
  
  
  Creación y acceso a elementos
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;mi_tupla&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mi_tupla&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# 2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conjuntos
&lt;/h3&gt;

&lt;p&gt;Un conjunto es una colección desordenada de elementos únicos.&lt;/p&gt;

&lt;h4&gt;
  
  
  Creación y operaciones básicas
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;mi_conjunto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mi_conjunto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# {1, 2, 3, 4, 5}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Condicionales
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Uso de &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;elif&lt;/code&gt; y &lt;code&gt;else&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;edad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;edad&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Menor de edad&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;edad&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;edad&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Adulto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Adulto mayor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Operadores de comparación
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;==&lt;/code&gt; igual a&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;!=&lt;/code&gt; diferente de&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;gt;&lt;/code&gt; mayor que&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;&lt;/code&gt; menor que&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;gt;=&lt;/code&gt; mayor o igual que&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;=&lt;/code&gt; menor o igual que&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Operadores lógicos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;and&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;or&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;not&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Bucles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bucle &lt;code&gt;for&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Iteración sobre listas, cadenas y diccionarios
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;elemento&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;elemento&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;letra&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;letra&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;clave&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;valor&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nombre&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Luis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edad&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;}.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clave&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;valor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Bucle &lt;code&gt;while&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;contador&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;contador&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contador&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;contador&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Uso de &lt;code&gt;break&lt;/code&gt; y &lt;code&gt;continue&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Funciones
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Definición y llamada de funciones
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;saludar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hola, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;nombre&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;saludar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Luis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Parámetros y argumentos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;suma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;suma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Valor de retorno
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;multiplicar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;

&lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;multiplicar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resultado&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Funciones anónimas (&lt;code&gt;lambda&lt;/code&gt;)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;suma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;suma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  8. Manejo de
&lt;/h2&gt;

&lt;p&gt;Archivos&lt;/p&gt;

&lt;h3&gt;
  
  
  Lectura y escritura de archivos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Escribir en un archivo
&lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;archivo.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;w&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;archivo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;archivo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hola, mundo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Leer de un archivo
&lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;archivo.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;archivo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;contenido&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;archivo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contenido&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Modos de apertura (&lt;code&gt;r&lt;/code&gt;, &lt;code&gt;w&lt;/code&gt;, &lt;code&gt;a&lt;/code&gt;, etc.)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;r&lt;/code&gt; - lectura&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;w&lt;/code&gt; - escritura (sobrescribe el archivo)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;a&lt;/code&gt; - agregar al final del archivo&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Uso de &lt;code&gt;with&lt;/code&gt; para manejo seguro de archivos
&lt;/h3&gt;

&lt;p&gt;El uso de &lt;code&gt;with&lt;/code&gt; asegura que el archivo se cierre correctamente después de su uso, incluso si ocurre un error.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Módulos y Paquetes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Importación de módulos estándar
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 4.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Instalación y uso de paquetes externos (ejemplo: PIL para el proyecto de generador de memes)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;pillow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;
&lt;span class="n"&gt;imagen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ruta/a/tu/imagen.jpg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;imagen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  10. Proyectos Prácticos
&lt;/h2&gt;

&lt;p&gt;Con esta guía practicarás todo lo que leíste anteriormente, te recomiendo seguir estos pasos que a mí como programador me han funcionado siempre pero ahora un poco mejorada gracia a la AI.&lt;/p&gt;

&lt;p&gt;Vas a utilizar este PROMPT, en chatGPT o cualquier MLL que tengas acceso chat.&lt;br&gt;
&lt;a href="https://dev.to/wizsebastian/guia-basica-de-prompt-engineering-parte-1-tecnicas-esenciales-para-escribir-prompts-efectivos-35j8"&gt;PROMPT&lt;/a&gt;, este prompt lo que hara que te cada vez que compartas codigo te explicara de una manera facil y efectiva.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Espera pronto los blogs y actualizaciones sobre 'Prompt engineering&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Luego vamos a nuestro editor de código, yo te recomiendo usar Visual Studio Code, haras lo siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**TODO**:
Para que tu aprendizaje sea exitoso debes practicarlo, pues aqui te dejo 4 pequenos proyectos cada uno con un nivel de dificultad mas elevado que el anterior. Te recomiendo seguir estos pasos para lograr el exito:

1 - Copia y pega el codigo, ejecutalo en la terminal, verificando como funciona.
2 - Borra todo el codigo y mirandolo ve escribiendo linea por linea, haz todas
las preguntas que tengas e investiga para que se usa algo que desconoces.
3 - Prueba que funcione, no funcionara a la primera (quizas). Pero prueba y arregla hasta que funcione.
4 - Trata de escribir el codigo con lo que entendiste, hasta que logres sentirte 
fluido y tranquilo escribiendo el codigo de ese ejercicio.
5 - No olvides enviarnos tu codigo a [Discord](https://discord.gg/nRzpm3UH)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Proyectos
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Calculadora Básica
&lt;/h3&gt;

&lt;p&gt;Crea una calculadora básica que pueda realizar operaciones de suma, resta, multiplicación y división.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/wizsebastian/miniprojects/tree/main/PythonMiniProjects/calculadora" rel="noopener noreferrer"&gt;Mira un ejemplo de código&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Este codigo fue generado por ai con un one-shot prompt no esperes mucho, o mejor dicho trata de mejorar ese codigo con sus retos, mira el archivo README de cada carpeta.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adivina el Número
&lt;/h3&gt;

&lt;p&gt;Desarrolla un juego en el que el usuario deba adivinar un número generado aleatoriamente por el programa.&lt;br&gt;
&lt;a href="https://github.com/wizsebastian/miniprojects/tree/main/PythonMiniProjects/AdivinaElNumero" rel="noopener noreferrer"&gt;Código&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lista de Tareas
&lt;/h3&gt;

&lt;p&gt;Crea una aplicación para gestionar una lista de tareas pendientes.&lt;br&gt;
&lt;a href="https://github.com/wizsebastian/miniprojects/tree/main/PythonMiniProjects/ListaDeTareas" rel="noopener noreferrer"&gt;Código&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Convertidor de Unidades
&lt;/h3&gt;

&lt;p&gt;Desarrolla un programa que convierta unidades de medida (ejemplo: metros a kilómetros, grados Celsius a Fahrenheit).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/wizsebastian/miniprojects/tree/main/PythonMiniProjects/ConvertidorUnidades" rel="noopener noreferrer"&gt;Código&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Generador de Memes
&lt;/h3&gt;

&lt;p&gt;Crea una aplicación que permita añadir texto a imágenes para generar memes.&lt;br&gt;
&lt;a href="https://github.com/wizsebastian/miniprojects/tree/main/PythonMiniProjects/GeneradorMemes" rel="noopener noreferrer"&gt;Código&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  No olvides
&lt;/h3&gt;

&lt;p&gt;Esta guía cubre los conceptos básicos de Python y proporciona una base sólida para comenzar a programar. Recuerda que la práctica constante es clave para mejorar tus habilidades. ¡Buena suerte en tu viaje de aprendizaje de Python!&lt;/p&gt;




&lt;p&gt;¡Estoy empezando a crear una comunidad donde aprendemos todos juntos! Se llama &lt;strong&gt;Code Friend&lt;/strong&gt; y me encantaría que te unieras a nosotros.&lt;/p&gt;

&lt;p&gt;En nuestro &lt;strong&gt;Discord&lt;/strong&gt;, encontrarás un espacio para discutir proyectos, compartir conocimientos y recibir apoyo en tiempo real de otros miembros de la comunidad. Únete aquí: &lt;a href="https://discord.gg/nRzpm3UH" rel="noopener noreferrer"&gt;Discord de nuestra comunidad&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Visita mi &lt;strong&gt;GitHub&lt;/strong&gt; para explorar nuestros repositorios, contribuir a proyectos de código abierto y mejorar tus habilidades colaborando con otros desarrolladores: &lt;a href="https://github.com/wizsebastian" rel="noopener noreferrer"&gt;Mi GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Conéctate conmigo en &lt;strong&gt;LinkedIn&lt;/strong&gt; para estar al tanto de artículos interesantes, oportunidades de crecimiento profesional y conectar con otros profesionales del sector: &lt;a href="https://www.linkedin.com/in/luissebastianvasquez/" rel="noopener noreferrer"&gt;Mi LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;No importa si eres principiante o experto, ¡todos son bienvenidos! Únete a Code Friend y aprende junto a una comunidad apasionada por la tecnología. 🌐&lt;/p&gt;




</description>
    </item>
    <item>
      <title>Guía Básica de Prompt Engineering: Parte 1 - Técnicas Esenciales para Escribir Prompts Efectivos</title>
      <dc:creator>WizSebastian</dc:creator>
      <pubDate>Wed, 07 Aug 2024 20:16:30 +0000</pubDate>
      <link>https://dev.to/wizsebastian/guia-basica-de-prompt-engineering-parte-1-tecnicas-esenciales-para-escribir-prompts-efectivos-35j8</link>
      <guid>https://dev.to/wizsebastian/guia-basica-de-prompt-engineering-parte-1-tecnicas-esenciales-para-escribir-prompts-efectivos-35j8</guid>
      <description>&lt;h3&gt;
  
  
  Introducción
&lt;/h3&gt;

&lt;p&gt;Escribir buenos prompts (indicaciones) es esencial para obtener resultados precisos y útiles al interactuar con modelos de inteligencia artificial (IA). Un buen prompt puede marcar la diferencia entre una respuesta relevante y una confusa. En esta guía, exploraremos dos técnicas esenciales para escribir prompts efectivos: la definición de roles (Roles Definition) y la cadena de pensamiento (Chain of Thought). ¡Recuerda, cuanto más usamos los dedos, más aprendemos! 🖐️&lt;/p&gt;

&lt;h3&gt;
  
  
  Definición de Roles (Roles Definition)
&lt;/h3&gt;

&lt;p&gt;La definición de roles (Roles Definition) es una técnica fundamental en prompt engineering. Consiste en especificar claramente el papel o la función que la IA debe asumir en una interacción específica. Esto ayuda a la IA a comprender mejor el contexto y a responder de manera más adecuada.&lt;/p&gt;

&lt;h4&gt;
  
  
  Ejemplo de Definición de Roles (Roles Definition):
&lt;/h4&gt;

&lt;p&gt;Imagina que estás trabajando en la optimización del rendimiento de tu código. Puedes definir el rol de la siguiente manera:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Actúa como un experto en optimización de código y revisa el siguiente bloque de código para identificar posibles mejoras en rendimiento.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Al definir este rol (Role), le estamos diciendo a la IA que asuma la función de un experto en optimización de código, lo cual guía sus respuestas en consecuencia.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cadena de Pensamiento (Chain of Thought)
&lt;/h3&gt;

&lt;p&gt;La cadena de pensamiento (Chain of Thought) es una técnica que guía a la IA a través de una serie de pasos lógicos para llegar a una respuesta. Esto es especialmente útil para tareas complejas que requieren razonamiento detallado.&lt;/p&gt;

&lt;h4&gt;
  
  
  Importancia de la Cadena de Pensamiento (Chain of Thought)
&lt;/h4&gt;

&lt;p&gt;Guiar a la IA a través de una serie de pasos lógicos ayuda a desglosar problemas complejos en partes más manejables. Esto no solo mejora la precisión de la respuesta, sino que también hace que el proceso sea más transparente y fácil de seguir para el usuario.&lt;/p&gt;

&lt;h4&gt;
  
  
  Ejemplo Práctico:
&lt;/h4&gt;

&lt;p&gt;Supongamos que quieres que la IA te explique cómo calcular el área de un triángulo. Puedes estructurar el prompt de la siguiente manera:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;¿Cómo calculo el área de un triángulo?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La IA podría responder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Para calcular el área de un triángulo, sigue estos pasos:
1. Mide la base del triángulo.
2. Mide la altura del triángulo.
3. Usa la fórmula: área = 0.5 * base * altura.
Por ejemplo, si la base es 5 unidades y la altura es 10 unidades, el área sería 0.5 * 5 * 10 = 25 unidades cuadradas.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Ejemplo Práctico
&lt;/h3&gt;

&lt;p&gt;Ahora, pongamos en práctica lo aprendido con un ejemplo en Javascript. Queremos que la IA nos explique cada línea de código detalladamente.&lt;/p&gt;

&lt;h4&gt;
  
  
  Código:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;const&lt;/span&gt; &lt;span class="n"&gt;endTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Prompt para Explicar el Código:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Usuario: "¿Puedes explicarme este código línea por línea en detalle?"
Asistente: "Por supuesto. Aquí está la explicación:
1. const endTime = Date.now();
   - `const`: Esta palabra clave se utiliza para declarar una constante en JavaScript.
   - `endTime`: Este es el nombre de la variable que estamos declarando.
   - `=`: Este es el operador de asignación, que asigna el valor a la variable `endTime`.
   - `Date.now()`: Esto devuelve el número de milisegundos transcurridos desde el 1 de enero de 1970 hasta la fecha actual. Es una manera de obtener la fecha y hora actuales en formato de milisegundos."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este enfoque permite a los principiantes comprender cada parte del código paso a paso, promoviendo un aprendizaje más profundo. 🧠&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusión
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1gv5psc0nzdndgn77m0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1gv5psc0nzdndgn77m0.png" alt="meme" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En esta primera parte, hemos cubierto dos técnicas esenciales para escribir prompts efectivos: la definición de roles (Roles Definition) y la cadena de pensamiento (Chain of Thought). Practicar estas técnicas es clave para mejorar tus habilidades en prompt engineering. Recuerda, cuanto más usamos los dedos, más aprendemos. ¡No te pierdas la Parte 2 donde exploraremos más técnicas avanzadas! 🚀&lt;/p&gt;




&lt;p&gt;¡Estoy empezando a crear una comunidad donde aprendemos todos juntos! Se llama &lt;strong&gt;Code Friend&lt;/strong&gt; y me encantaría que te unieras a nosotros.&lt;/p&gt;

&lt;p&gt;En nuestro &lt;strong&gt;Discord&lt;/strong&gt;, encontrarás un espacio para discutir proyectos, compartir conocimientos y recibir apoyo en tiempo real de otros miembros de la comunidad. Únete aquí: &lt;a href="https://discord.gg/nRzpm3UH" rel="noopener noreferrer"&gt;Discord de nuestra comunidad&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Visita mi &lt;strong&gt;GitHub&lt;/strong&gt; para explorar nuestros repositorios, contribuir a proyectos de código abierto y mejorar tus habilidades colaborando con otros desarrolladores: &lt;a href="https://github.com/wizsebastian" rel="noopener noreferrer"&gt;Mi GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Conéctate conmigo en &lt;strong&gt;LinkedIn&lt;/strong&gt; para estar al tanto de artículos interesantes, oportunidades de crecimiento profesional y conectar con otros profesionales del sector: &lt;a href="https://www.linkedin.com/in/luissebastianvasquez/" rel="noopener noreferrer"&gt;Mi LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;No importa si eres principiante o experto, ¡todos son bienvenidos! Únete a Code Friend y aprende junto a una comunidad apasionada por la tecnología. 🌐&lt;/p&gt;




</description>
    </item>
  </channel>
</rss>
