<?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: pyrtugues</title>
    <description>The latest articles on DEV Community by pyrtugues (@pyrtugues).</description>
    <link>https://dev.to/pyrtugues</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4145986%2Fba53cc4b-81ab-40c2-be1c-1a3765b2e077.png</url>
      <title>DEV Community: pyrtugues</title>
      <link>https://dev.to/pyrtugues</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pyrtugues"/>
    <language>en</language>
    <item>
      <title>Criando um dragão em Pyrtugues</title>
      <dc:creator>pyrtugues</dc:creator>
      <pubDate>Sun, 11 Oct 2026 19:42:42 +0000</pubDate>
      <link>https://dev.to/pyrtugues/criando-um-dragao-em-pyrtugues-2po1</link>
      <guid>https://dev.to/pyrtugues/criando-um-dragao-em-pyrtugues-2po1</guid>
      <description>&lt;h1&gt;
  
  
  Criando um dragão que segue o mouse com Pyrtugues e Pygame 🐉
&lt;/h1&gt;

&lt;p&gt;Já imaginou criar um jogo usando comandos de programação em português?&lt;/p&gt;

&lt;p&gt;Neste tutorial, vamos criar um pequeno projeto gráfico com &lt;strong&gt;Pyrtugues e Pygame&lt;/strong&gt;: um dragão esmeralda que segue o mouse, com corpo sinuoso, asas roxas, chifres dourados e olhos brilhantes. ✨&lt;/p&gt;

&lt;p&gt;A ideia é aprender programação fazendo algo visual, sem depender de imagens prontas. O dragão será desenhado usando formas geométricas, cores e coordenadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  🐍 O que é o Pyrtugues?
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://github.com/pyrtugues/Pyrtugues" rel="noopener noreferrer"&gt;Pyrtugues&lt;/a&gt; é um projeto educacional de programação baseado na lógica do Python. Ele permite escrever código com comandos em português e traduzi-lo para Python.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá, mundo!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;É traduzido para:&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="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;Olá, mundo!&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;p&gt;Isso permite aprender conceitos de programação em português enquanto você acompanha como eles aparecem no Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎮 O que vamos criar?
&lt;/h2&gt;

&lt;p&gt;Nosso projeto terá:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Um dragão verde com detalhes brilhantes.&lt;/li&gt;
&lt;li&gt;Um corpo que acompanha o caminho percorrido pelo mouse.&lt;/li&gt;
&lt;li&gt;Asas roxas e espinhos ao longo do corpo.&lt;/li&gt;
&lt;li&gt;Olhos dourados e chifres.&lt;/li&gt;
&lt;li&gt;Um céu escuro com estrelas.&lt;/li&gt;
&lt;li&gt;Um controle simples para fechar a janela.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tudo será desenhado pelo Pygame, então não precisamos baixar sprites ou imagens externas.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Antes de começar
&lt;/h2&gt;

&lt;p&gt;Este exemplo é voltado à &lt;strong&gt;versão Desktop do Pyrtugues&lt;/strong&gt;, utilizando a integração com Pygame.&lt;/p&gt;

&lt;p&gt;Você pode encontrar o código-fonte e as instruções de instalação no &lt;a href="https://github.com/pyrtugues/Pyrtugues" rel="noopener noreferrer"&gt;repositório oficial do Pyrtugues&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A disponibilidade dos recursos pode variar conforme a versão do tradutor e o ambiente. O exemplo utiliza os aliases de Pygame documentados no código do projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 Código completo
&lt;/h2&gt;

&lt;p&gt;Crie um arquivo de código no Pyrtugues Desktop e experimente o seguinte exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;importar jogo

jogo.iniciar()

janela = jogo.display.criar_janela((1000, 700))
jogo.display.definir_título("Dragão Esmeralda — Pyrtugues")

relogio = jogo.tempo.relógio()

x, y = jogo.mouse.posição()

# Criamos os pontos iniciais do corpo.
rastro = []

para i em intervalo(130):
    rastro.adicionar((x - i * 3, y))

# Estrelas fixas no fundo.
estrelas = [
    (38, 45), (120, 90), (210, 55), (310, 120),
    (430, 65), (540, 100), (650, 45), (750, 115),
    (870, 70), (960, 140), (80, 220), (190, 300),
    (340, 250), (500, 190), (680, 280), (820, 220),
    (930, 350), (100, 460), (260, 520), (430, 610),
    (600, 520), (770, 600), (900, 500), (970, 610)
]

executando = verdadeiro

enquanto executando:

    # Verificamos os eventos da janela.
    para evento em jogo.eventos.obter():

        se evento.type == jogo.sair_evento:
            executando = falso

        se evento.type == jogo.tecla_pressionada_evento e evento.key == jogo.esc:
            executando = falso

    # Posição atual do mouse.
    x, y = jogo.mouse.posição()

    # Adicionamos posições ao rastro quando o mouse se move.
    antigo_x, antigo_y = rastro[0]

    dx = x - antigo_x
    dy = y - antigo_y

    se dx * dx + dy * dy &amp;gt;= 9:
        rastro.inserir(0, (x, y))
        rastro = rastro[:130]

    # Fundo noturno.
    janela.preencher((8, 12, 29))

    # Estrelas do cenário.
    para estrela em estrelas:
        jogo.desenho.círculo(
            janela,
            (100, 160, 210),
            estrela,
            2
        )

    # Desenhamos as asas atrás do corpo.
    asa_x, asa_y = rastro[18]

    # Asa superior: contorno e membrana.
    jogo.desenho.polígono(
        janela,
        (7, 22, 45),
        [
            (asa_x, asa_y),
            (asa_x - 14, asa_y - 19),
            (asa_x - 38, asa_y - 49),
            (asa_x - 36, asa_y - 17),
            (asa_x - 55, asa_y - 29),
            (asa_x - 38, asa_y + 2),
            (asa_x - 10, asa_y + 8)
        ]
    )

    jogo.desenho.polígono(
        janela,
        (116, 64, 184),
        [
            (asa_x - 5, asa_y - 3),
            (asa_x - 14, asa_y - 19),
            (asa_x - 34, asa_y - 39),
            (asa_x - 31, asa_y - 14),
            (asa_x - 46, asa_y - 21),
            (asa_x - 32, asa_y + 1)
        ]
    )

    # Asa inferior.
    jogo.desenho.polígono(
        janela,
        (7, 22, 45),
        [
            (asa_x, asa_y),
            (asa_x - 14, asa_y + 19),
            (asa_x - 38, asa_y + 49),
            (asa_x - 36, asa_y + 17),
            (asa_x - 55, asa_y + 29),
            (asa_x - 38, asa_y - 2),
            (asa_x - 10, asa_y - 8)
        ]
    )

    jogo.desenho.polígono(
        janela,
        (91, 49, 157),
        [
            (asa_x - 5, asa_y + 3),
            (asa_x - 14, asa_y + 19),
            (asa_x - 34, asa_y + 39),
            (asa_x - 31, asa_y + 14),
            (asa_x - 46, asa_y + 21),
            (asa_x - 32, asa_y - 1)
        ]
    )

    # Corpo sinuoso: desenhamos da cauda até a cabeça.
    # A largura aumenta conforme nos aproximamos da cabeça.
    para i em intervalo(120, 0, -1):

        corpo_x, corpo_y = rastro[i]
        proximo_x, proximo_y = rastro[i - 1]

        largura = 8 + (120 - i) // 5

        # Contorno escuro.
        jogo.desenho.linha(
            janela,
            (5, 31, 43),
            (corpo_x, corpo_y),
            (proximo_x, proximo_y),
            largura + 8
        )

        # Corpo esmeralda.
        jogo.desenho.linha(
            janela,
            (25, 170, 112),
            (corpo_x, corpo_y),
            (proximo_x, proximo_y),
            largura
        )

        # Reflexo verde-claro.
        jogo.desenho.linha(
            janela,
            (108, 255, 192),
            (corpo_x, corpo_y),
            (proximo_x, proximo_y),
            2
        )

    # Escamas brilhantes.
    para i em intervalo(10, 112, 10):

        escama_x, escama_y = rastro[i]

        jogo.desenho.círculo(
            janela,
            (153, 255, 192),
            (escama_x, escama_y - 6),
            3
        )

        jogo.desenho.círculo(
            janela,
            (231, 244, 153),
            (escama_x, escama_y - 6),
            1
        )

    # Espinhos ao longo das costas.
    para i em intervalo(20, 110, 18):

        espinho_x, espinho_y = rastro[i]

        jogo.desenho.polígono(
            janela,
            (5, 52, 54),
            [
                (espinho_x, espinho_y - 20),
                (espinho_x - 9, espinho_y - 2),
                (espinho_x + 9, espinho_y - 2)
            ]
        )

        jogo.desenho.polígono(
            janela,
            (93, 255, 165),
            [
                (espinho_x, espinho_y - 15),
                (espinho_x - 5, espinho_y - 4),
                (espinho_x + 5, espinho_y - 4)
            ]
        )

    # Pequenas partículas mágicas pelo caminho.
    para i em intervalo(8, 100, 23):

        brilho_x, brilho_y = rastro[i]

        jogo.desenho.círculo(
            janela,
            (100, 255, 230),
            (brilho_x, brilho_y + 13),
            2
        )

    # Cabeça: base escura.
    jogo.desenho.círculo(
        janela,
        (5, 28, 37),
        (x - 2, y - 1),
        24
    )

    # Formato externo da cabeça.
    jogo.desenho.polígono(
        janela,
        (5, 36, 43),
        [
            (x - 22, y - 14),
            (x - 8, y - 23),
            (x + 13, y - 18),
            (x + 24, y - 8),
            (x + 37, y - 5),
            (x + 30, y + 7),
            (x + 12, y + 10),
            (x - 10, y + 7),
            (x - 22, y + 3)
        ]
    )

    # Cor principal da cabeça.
    jogo.desenho.polígono(
        janela,
        (38, 205, 125),
        [
            (x - 17, y - 12),
            (x - 7, y - 18),
            (x + 11, y - 14),
            (x + 20, y - 7),
            (x + 31, y - 5),
            (x + 25, y + 2),
            (x + 10, y + 5),
            (x - 8, y + 4),
            (x - 17, y)
        ]
    )

    # Chifres dourados.
    jogo.desenho.polígono(
        janela,
        (239, 191, 81),
        [
            (x - 15, y - 15),
            (x - 23, y - 34),
            (x - 5, y - 20)
        ]
    )

    jogo.desenho.polígono(
        janela,
        (255, 224, 130),
        [
            (x - 13, y - 19),
            (x - 20, y - 30),
            (x - 9, y - 21)
        ]
    )

    jogo.desenho.polígono(
        janela,
        (239, 191, 81),
        [
            (x - 4, y - 17),
            (x + 2, y - 35),
            (x + 8, y - 15)
        ]
    )

    # Olho dourado e pupila.
    jogo.desenho.círculo(
        janela,
        (255, 221, 110),
        (x + 10, y - 10),
        6
    )

    jogo.desenho.círculo(
        janela,
        (12, 25, 32),
        (x + 12, y - 10),
        3
    )

    jogo.desenho.círculo(
        janela,
        (255, 255, 255),
        (x + 11, y - 12),
        1
    )

    # Narinas e boca.
    jogo.desenho.círculo(
        janela,
        (5, 52, 48),
        (x + 25, y - 5),
        2
    )

    jogo.desenho.círculo(
        janela,
        (5, 52, 48),
        (x + 30, y - 3),
        2
    )

    jogo.desenho.linha(
        janela,
        (5, 52, 48),
        (x + 12, y + 5),
        (x + 27, y + 4),
        3
    )

    # Mantém a animação fluida.
    relogio.marcar_fps(60)

    jogo.display.atualizar_tela()

jogo.sair()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🧠 Como o dragão segue o mouse?
&lt;/h2&gt;

&lt;p&gt;A parte mais importante é o &lt;code&gt;rastro&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se dx * dx + dy * dy &amp;gt;= 9:
    rastro.inserir(0, (x, y))
    rastro = rastro[:130]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cada vez que o mouse se desloca o suficiente, guardamos a nova posição no começo da lista. As posições antigas continuam atrás dela.&lt;/p&gt;

&lt;p&gt;Depois, o código desenha linhas entre esses pontos. Como o corpo é desenhado da cauda para a cabeça, podemos aumentar sua largura conforme nos aproximamos do cursor.&lt;/p&gt;

&lt;p&gt;É isso que cria a sensação de um dragão serpentino acompanhando o movimento, em vez de uma figura estática que apenas muda de posição.&lt;/p&gt;

&lt;h2&gt;
  
  
  🐍 O que o Pyrtugues traduz?
&lt;/h2&gt;

&lt;p&gt;O código usa aliases documentados no projeto para operações do Pygame. Por exemplo:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pyrtugues&lt;/th&gt;
&lt;th&gt;Pygame&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jogo.iniciar()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pygame.init()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jogo.display.criar_janela()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pygame.display.set_mode()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jogo.mouse.posição()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pygame.mouse.get_pos()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jogo.desenho.círculo()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pygame.draw.circle()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jogo.desenho.linha()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pygame.draw.line()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jogo.display.atualizar_tela()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pygame.display.flip()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;O objetivo é manter a lógica de programação próxima do Python, permitindo escrever comandos em português e observar suas correspondências.&lt;/p&gt;

&lt;p&gt;Você pode consultar os aliases e a implementação na &lt;a href="https://github.com/pyrtugues/Pyrtugues" rel="noopener noreferrer"&gt;documentação e no código do Pyrtugues&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Ideias para continuar
&lt;/h2&gt;

&lt;p&gt;Agora que temos o dragão seguindo o mouse, existem várias formas de evoluir o projeto:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fazer as asas baterem durante o movimento.&lt;/li&gt;
&lt;li&gt;Adicionar partículas de fogo pela boca.&lt;/li&gt;
&lt;li&gt;Criar obstáculos e colisões.&lt;/li&gt;
&lt;li&gt;Fazer o dragão perseguir um objeto.&lt;/li&gt;
&lt;li&gt;Adicionar sons e música.&lt;/li&gt;
&lt;li&gt;Criar pontos e uma pontuação.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cada melhoria pode ensinar um novo conceito, como animação, eventos, condições, colisões ou controle de tempo.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Conheça o Pyrtugues
&lt;/h2&gt;

&lt;p&gt;🐙 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/pyrtugues/Pyrtugues" rel="noopener noreferrer"&gt;https://github.com/pyrtugues/Pyrtugues&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;Site de apresentação:&lt;/strong&gt; &lt;a href="https://pyrtugues-apre.pages.dev/" rel="noopener noreferrer"&gt;https://pyrtugues-apre.pages.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📚 &lt;strong&gt;Curso:&lt;/strong&gt; &lt;a href="https://pyrtugues.pages.dev/" rel="noopener noreferrer"&gt;https://pyrtugues.pages.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;Editor Web:&lt;/strong&gt; &lt;a href="https://pyrtugues-editor.pages.dev/" rel="noopener noreferrer"&gt;https://pyrtugues-editor.pages.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧩 &lt;strong&gt;Extensão para VS Code:&lt;/strong&gt; &lt;a href="https://open-vsx.org/extension/pyrtugues/pyrtugues" rel="noopener noreferrer"&gt;https://open-vsx.org/extension/pyrtugues/pyrtugues&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Pyrtugues é um projeto educacional em evolução. Consulte a documentação e a licença oficial antes de utilizar o projeto.&lt;/p&gt;




&lt;p&gt;Programar não precisa começar com uma barreira de idioma. Você pode começar com uma ideia, transformá-la em código e aprender cada vez mais enquanto constrói.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qual criatura você criaria com Pyrtugues? 🐉💚&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  python #pygame #beginners #programming
&lt;/h1&gt;

</description>
      <category>beginners</category>
      <category>gamedev</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Pyrtugues vs Portugol: qual é a melhor opção em português para aprender Python?</title>
      <dc:creator>pyrtugues</dc:creator>
      <pubDate>Sun, 04 Oct 2026 21:17:26 +0000</pubDate>
      <link>https://dev.to/pyrtugues/pyrtugues-vs-portugol-qual-e-a-melhor-opcao-em-portugues-para-aprender-python-5g2m</link>
      <guid>https://dev.to/pyrtugues/pyrtugues-vs-portugol-qual-e-a-melhor-opcao-em-portugues-para-aprender-python-5g2m</guid>
      <description>&lt;h1&gt;
  
  
  Pyrtugues vs Portugol: qual é a melhor opção em português para aprender Python?
&lt;/h1&gt;

&lt;p&gt;Existem várias iniciativas de programação em português no Brasil. Cada uma tenta resolver um problema importante: &lt;strong&gt;reduzir a barreira do inglês no primeiro contato com programação&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Mas elas fazem isso de formas &lt;strong&gt;bem diferentes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Algumas focam em lógica e pseudocódigo. Outras criam linguagens próprias. E algumas tentam manter uma relação mais próxima de linguagens já utilizadas no mercado.&lt;/p&gt;

&lt;p&gt;Neste post, vou comparar &lt;strong&gt;Portugol / Visualg, Delégua, Pituguês e Pyrtugues&lt;/strong&gt; e mostrar por que o Pyrtugues tem uma proposta diferente para quem quer &lt;strong&gt;aprender programação em português e chegar ao Python&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 O problema comum
&lt;/h2&gt;

&lt;p&gt;Quando alguém começa a programar, normalmente precisa lidar com vários desafios ao mesmo tempo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lógica de programação&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sintaxe e estrutura&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conceitos abstratos&lt;/strong&gt;, como variáveis e funções&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vocabulário técnico em inglês&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;O quarto item pode ser uma barreira desnecessária para quem ainda está aprendendo os conceitos básicos.&lt;/p&gt;

&lt;p&gt;Por exemplo:&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="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;idade&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="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;Maior de idade&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;p&gt;Para alguém que nunca programou, existem duas coisas diferentes para entender:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;o que o programa está fazendo;&lt;/li&gt;
&lt;li&gt;o que &lt;code&gt;if&lt;/code&gt; e &lt;code&gt;print&lt;/code&gt; significam.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É justamente nesse ponto que entram as linguagens de programação em português.&lt;/p&gt;

&lt;p&gt;Mas cada projeto escolhe uma estratégia diferente.&lt;/p&gt;




&lt;h1&gt;
  
  
  📚 As principais opções
&lt;/h1&gt;

&lt;h2&gt;
  
  
  🇧🇷 Portugol / Visualg
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;O que é:&lt;/strong&gt; uma abordagem baseada em pseudocódigo estruturado, muito utilizada no ensino de lógica de programação no Brasil.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exemplo:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;algoritmo "soma"
var
   a, b, resultado: inteiro
inicio
   escreva("Digite o primeiro número: ")
   leia(a)

   escreva("Digite o segundo número: ")
   leia(b)

   resultado &amp;lt;- a + b

   escreva("A soma é: ", resultado)
fim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pontos fortes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Excelente para aprender lógica&lt;/li&gt;
&lt;li&gt;✅ Muito utilizado no ensino&lt;/li&gt;
&lt;li&gt;✅ Sintaxe em português&lt;/li&gt;
&lt;li&gt;✅ Boa introdução a algoritmos&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  E a relação com Python?
&lt;/h3&gt;

&lt;p&gt;O principal ponto é que o Portugol possui uma sintaxe própria.&lt;/p&gt;

&lt;p&gt;Ao migrar para Python, o estudante precisa aprender uma nova estrutura.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se idade &amp;gt;= 18 entao
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em Python:&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="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;idade&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="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso não significa que Portugol seja ruim.&lt;/p&gt;

&lt;p&gt;Significa apenas que &lt;strong&gt;a proposta é diferente&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🇧🇷 Delégua
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;O que é:&lt;/strong&gt; uma linguagem de programação criada para oferecer uma experiência de programação em português, com foco educacional e um ecossistema próprio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pontos fortes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Sintaxe em português&lt;/li&gt;
&lt;li&gt;✅ Linguagem própria&lt;/li&gt;
&lt;li&gt;✅ Projeto aberto&lt;/li&gt;
&lt;li&gt;✅ Voltada para educação e aprendizado&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Diferença para Python
&lt;/h3&gt;

&lt;p&gt;A Delégua não tem como objetivo simplesmente traduzir Python.&lt;/p&gt;

&lt;p&gt;Ela possui sua própria linguagem e seu próprio ecossistema.&lt;/p&gt;

&lt;p&gt;Por isso, quem quiser migrar posteriormente para Python ainda terá uma etapa de adaptação.&lt;/p&gt;




&lt;h2&gt;
  
  
  🐍 Pituguês
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;O que é:&lt;/strong&gt; uma proposta de programação em português inspirada na sintaxe do Python e relacionada ao ecossistema da Delégua.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pontos fortes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Sintaxe próxima do Python&lt;/li&gt;
&lt;li&gt;✅ Programação em português&lt;/li&gt;
&lt;li&gt;✅ Aproxima conceitos de programação de uma linguagem popular&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Diferença para Python
&lt;/h3&gt;

&lt;p&gt;Apesar da inspiração, Pituguês e Python não são a mesma linguagem.&lt;/p&gt;

&lt;p&gt;O Pituguês possui sua própria implementação e seu próprio contexto.&lt;/p&gt;

&lt;p&gt;Para quem procura uma experiência próxima de Python em português, essa é justamente uma das características mais interessantes da proposta.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔴 Outras iniciativas
&lt;/h2&gt;

&lt;p&gt;Existem também outras linguagens e projetos voltados à programação em português, como &lt;strong&gt;G-Portugol&lt;/strong&gt; e &lt;strong&gt;Potigol&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cada um possui sua própria proposta, público e nível de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Isso mostra que a ideia de tornar programação mais acessível em português não é nova.&lt;/p&gt;




&lt;h1&gt;
  
  
  🟢 Pyrtugues
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;O que é:&lt;/strong&gt; uma linguagem/sintaxe em português que traduz o código para &lt;strong&gt;Python executável&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A proposta principal é utilizar português para reduzir a barreira inicial sem se afastar da estrutura do Python.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exemplo:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;idade = 12

se idade maior que 10:
    mostrar("Olá! Você pode programar!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O código é traduzido para:&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;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&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;Olá! Você pode programar!&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;p&gt;A lógica continua sendo a mesma.&lt;/p&gt;

&lt;p&gt;A diferença está principalmente na sintaxe utilizada pelo estudante.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 O que torna o Pyrtugues diferente?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. É uma ponte, não necessariamente um destino
&lt;/h2&gt;

&lt;p&gt;O objetivo do Pyrtugues não é impedir o estudante de aprender Python.&lt;/p&gt;

&lt;p&gt;É justamente o contrário.&lt;/p&gt;

&lt;p&gt;A proposta é:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Português
   ↓
Pyrtugues
   ↓
Python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O estudante pode começar usando palavras em português e, posteriormente, reconhecer os equivalentes em Python.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. A estrutura continua próxima do Python
&lt;/h2&gt;

&lt;p&gt;O Pyrtugues mantém vários elementos familiares para quem pretende aprender Python:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;indentação;&lt;/li&gt;
&lt;li&gt;dois-pontos (&lt;code&gt;:&lt;/code&gt;);&lt;/li&gt;
&lt;li&gt;estruturas condicionais;&lt;/li&gt;
&lt;li&gt;laços de repetição;&lt;/li&gt;
&lt;li&gt;funções;&lt;/li&gt;
&lt;li&gt;operadores;&lt;/li&gt;
&lt;li&gt;variáveis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se idade maior ou igual a 18:
    mostrar("Maior de idade")
senão:
    mostrar("Menor de idade")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A estrutura é muito próxima de:&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="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;idade&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="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;Maior de idade&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;Menor de idade&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;h2&gt;
  
  
  3. A migração pode ser muito direta
&lt;/h2&gt;

&lt;p&gt;Em exemplos simples, várias palavras podem ser relacionadas diretamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se       → if
senão    → else
senão se → elif
mostrar  → print
pergunte → input
inteiro  → int
decimal  → float
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim, o estudante consegue começar a perceber que existe uma correspondência entre a sintaxe em português e a sintaxe do Python.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. O projeto vai além de exemplos básicos
&lt;/h2&gt;

&lt;p&gt;O Pyrtugues não foi pensado apenas para:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Olá, mundo!"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A proposta também inclui utilização com bibliotecas do ecossistema Python.&lt;/p&gt;

&lt;p&gt;Entre os recursos disponíveis estão:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎮 Pygame&lt;/li&gt;
&lt;li&gt;🖥️ CustomTkinter&lt;/li&gt;
&lt;li&gt;📊 bibliotecas de dados&lt;/li&gt;
&lt;li&gt;📈 bibliotecas de gráficos&lt;/li&gt;
&lt;li&gt;🌐 bibliotecas web&lt;/li&gt;
&lt;li&gt;🧮 bibliotecas científicas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A ideia é permitir que o estudante possa avançar dos primeiros exercícios para projetos maiores.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Diferentes formas de usar
&lt;/h2&gt;

&lt;p&gt;O projeto possui diferentes formas de utilização, incluindo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 editor web;&lt;/li&gt;
&lt;li&gt;💻 aplicativo desktop;&lt;/li&gt;
&lt;li&gt;🧩 extensão para VS Code;&lt;/li&gt;
&lt;li&gt;🐍 execução através do Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso permite que o estudante escolha um ambiente de acordo com o que está aprendendo.&lt;/p&gt;




&lt;h1&gt;
  
  
  📊 Comparação
&lt;/h1&gt;

&lt;p&gt;Em vez de perguntar simplesmente &lt;strong&gt;“qual é a melhor?”&lt;/strong&gt;, talvez seja melhor perguntar:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Qual ferramenta é mais adequada para determinado objetivo?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspecto&lt;/th&gt;
&lt;th&gt;Portugol / Visualg&lt;/th&gt;
&lt;th&gt;Delégua&lt;/th&gt;
&lt;th&gt;Pituguês&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Pyrtugues&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Programação em português&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foco educacional&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sintaxe inspirada em Python&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traduz para Python&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executa Python gerado&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ecossistema Python&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VS Code&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pygame&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CustomTkinter&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Objetivo de facilitar a transição para Python&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✅&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Observação:&lt;/strong&gt; as ferramentas possuem objetivos diferentes. A ausência de determinado recurso não significa que o projeto seja ruim.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  💻 Exemplo: calculadora de média
&lt;/h1&gt;

&lt;p&gt;Vamos fazer o mesmo programa utilizando Portugol, Pyrtugues e Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  🟡 Portugol
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;algoritmo "media"
var
   n1, n2, media: real
inicio
   escreva("Nota 1: ")
   leia(n1)

   escreva("Nota 2: ")
   leia(n2)

   media &amp;lt;- (n1 + n2) / 2

   se media &amp;gt;= 7 entao
      escreva("Aprovado")
   senao
      escreva("Reprovado")
fim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🟢 Pyrtugues
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;n1 = decimal(pergunte("Nota 1: "))
n2 = decimal(pergunte("Nota 2: "))

media = (n1 + n2) / 2

se media maior ou igual a 7:
    mostrar("Aprovado")
senão:
    mostrar("Reprovado")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🐍 Python gerado
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;n1&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="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Nota 1: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;n2&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="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Nota 2: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;media&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&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;Aprovado&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;Reprovado&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;
  
  
  O que podemos observar?
&lt;/h3&gt;

&lt;p&gt;No Portugol, a sintaxe é própria da ferramenta.&lt;/p&gt;

&lt;p&gt;No Pyrtugues, a estrutura continua próxima do Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se       → if
senão    → else
mostrar  → print
pergunte → input
decimal  → float
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O objetivo não é dizer que uma abordagem é universalmente melhor.&lt;/p&gt;

&lt;p&gt;A diferença está no &lt;strong&gt;caminho que cada ferramenta oferece ao estudante&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎯 Por que o Python é importante nessa discussão?
&lt;/h1&gt;

&lt;p&gt;Python é utilizado em várias áreas da computação e possui um ecossistema muito grande.&lt;/p&gt;

&lt;p&gt;Existem bibliotecas para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;desenvolvimento web;&lt;/li&gt;
&lt;li&gt;automação;&lt;/li&gt;
&lt;li&gt;ciência de dados;&lt;/li&gt;
&lt;li&gt;inteligência artificial;&lt;/li&gt;
&lt;li&gt;jogos;&lt;/li&gt;
&lt;li&gt;interfaces gráficas;&lt;/li&gt;
&lt;li&gt;computação científica;&lt;/li&gt;
&lt;li&gt;análise de dados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por isso, uma ferramenta que utiliza Python como destino pode funcionar como uma forma de introdução ao ecossistema real da linguagem.&lt;/p&gt;




&lt;h1&gt;
  
  
  🏁 Então, qual é a melhor?
&lt;/h1&gt;

&lt;p&gt;A resposta depende do objetivo.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Objetivo&lt;/th&gt;
&lt;th&gt;Opção&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Aprender lógica e algoritmos&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Portugol / Visualg&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programar em português com uma linguagem própria&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Delégua&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Utilizar uma linguagem em português inspirada em Python&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Pituguês&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aprender programação em português mantendo Python como destino&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Pyrtugues&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Não existe uma ferramenta perfeita para todas as situações.&lt;/p&gt;

&lt;p&gt;O ponto principal do Pyrtugues é outro:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;reduzir a barreira do inglês sem afastar o estudante do Python.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  🚀 Conheça o Pyrtugues
&lt;/h1&gt;

&lt;p&gt;🌐 &lt;strong&gt;Site oficial:&lt;/strong&gt; &lt;a href="https://pyrtugues.pages.dev" rel="noopener noreferrer"&gt;pyrtugues.pages.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧪 &lt;strong&gt;Editor Web:&lt;/strong&gt; &lt;a href="https://pyrtugues-editor.pages.dev" rel="noopener noreferrer"&gt;pyrtugues-editor.pages.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;Extensão VS Code:&lt;/strong&gt; &lt;a href="https://open-vsx.org/extension/pyrtugues/pyrtugues" rel="noopener noreferrer"&gt;Open VSX&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🐙 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/pyrtugues" rel="noopener noreferrer"&gt;github.com/pyrtugues&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;É gratuito.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Na versão Web, não é necessário instalar o programa para experimentar.&lt;/p&gt;




&lt;h1&gt;
  
  
  💭 Conclusão
&lt;/h1&gt;

&lt;p&gt;Programação em português não é uma ideia nova.&lt;/p&gt;

&lt;p&gt;Existem projetos diferentes, com objetivos diferentes, e todos podem ter seu espaço no ensino de programação.&lt;/p&gt;

&lt;p&gt;O Pyrtugues escolheu um caminho específico:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Português
   ↓
Aprender programação
   ↓
Pyrtugues
   ↓
Python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia é que o português seja uma &lt;strong&gt;porta de entrada&lt;/strong&gt;, e não uma barreira entre o estudante e o ecossistema Python.&lt;/p&gt;

&lt;p&gt;Por isso, em vez de perguntar:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Qual linguagem em português é a melhor?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Talvez a pergunta mais interessante seja:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Qual delas é mais adequada para o que eu quero aprender?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E, para quem quer começar em português tendo o &lt;strong&gt;Python como destino&lt;/strong&gt;, essa é justamente a proposta do Pyrtugues.&lt;/p&gt;




&lt;h2&gt;
  
  
  🐍 Pyrtugues
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Programação em português.&lt;br&gt;&lt;br&gt;
Lógica de Python.&lt;br&gt;&lt;br&gt;
Uma ponte para aprender.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Criado por Vinicius Caracciolo.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;❤️ &lt;strong&gt;Qual abordagem você prefere para aprender programação: Portugol, Delégua, Pituguês, Pyrtugues ou Python direto?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>programming</category>
      <category>python</category>
    </item>
    <item>
      <title>Como funciona o tradutor do Pyrtugues</title>
      <dc:creator>pyrtugues</dc:creator>
      <pubDate>Tue, 29 Sep 2026 22:51:55 +0000</pubDate>
      <link>https://dev.to/pyrtugues/construindo-um-tradutor-de-portugues-para-python-os-desafios-tecnicos-1iek</link>
      <guid>https://dev.to/pyrtugues/construindo-um-tradutor-de-portugues-para-python-os-desafios-tecnicos-1iek</guid>
      <description>&lt;h1&gt;
  
  
  Como funciona o tradutor do Pyrtugues por dentro
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Tempo de leitura: ~6 minutos&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No meu &lt;a href="https://dev.to/pyrtugues/pytugues-programacao-em-portugues-afe"&gt;primeiro post&lt;/a&gt; eu apresentei o Pyrtugues: uma linguagem de programação em português que traduz código para Python real. Muita gente perguntou &lt;strong&gt;como isso funciona por dentro&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Esse post responde. Vou mostrar os desafios técnicos de traduzir código entre linguagens e como resolvi cada um.&lt;/p&gt;

&lt;p&gt;Se você nunca escreveu um tradutor, esse post é pra você. Se já escreveu, talvez encontre algo interessante.&lt;/p&gt;




&lt;h2&gt;
  
  
  O problema básico
&lt;/h2&gt;

&lt;p&gt;Traduzir &lt;code&gt;mostrar("Olá")&lt;/code&gt; para &lt;code&gt;print("Olá")&lt;/code&gt; parece simples. E é — se você só tem uma linha.&lt;/p&gt;

&lt;p&gt;O problema começa quando o código tem &lt;strong&gt;strings&lt;/strong&gt;, &lt;strong&gt;comentários&lt;/strong&gt; e &lt;strong&gt;f-strings&lt;/strong&gt;. Veja esse exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nome = "Maria e João"
mostrar(f"Olá, {nome}!")
# Isso é um comentário com se, senão, mostrar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você fizer uma tradução ingênua (substituir toda palavra-chave), o resultado vira uma bagunça:&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;nome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Maria and João&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;     &lt;span class="c1"&gt;# ❌ ERRADO - "e" virou "and"
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&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;Olá, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;nome&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="p"&gt;)&lt;/span&gt;       &lt;span class="c1"&gt;# ✅ Ok
# Isso é um comentário com if, else, print   # ❌ ERRADO
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Três problemas apareceram:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;O "e" dentro da string virou "and"&lt;/li&gt;
&lt;li&gt;O comentário foi traduzido&lt;/li&gt;
&lt;li&gt;O Python não entende isso&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  A solução: proteger strings antes de traduzir
&lt;/h2&gt;

&lt;p&gt;A primeira coisa que o tradutor faz é &lt;strong&gt;esconder&lt;/strong&gt; todas as strings e comentários antes de mexer no código. Uso um scanner que percorre caractere por caractere:&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;proteger_strings_e_comentarios&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;codigo&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;blocos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&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;0&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;codigo&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# Comentário: protege tudo depois de #
&lt;/span&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;codigo&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="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="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;inicio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;
            &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;codigo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;codigo&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="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&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;1&lt;/span&gt;
            &lt;span class="n"&gt;resultado&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="nf"&gt;guardar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;codigo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;inicio&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;continue&lt;/span&gt;

        &lt;span class="c1"&gt;# String: protege tudo entre aspas
&lt;/span&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;codigo&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="ow"&gt;in&lt;/span&gt; &lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# ... lógica de detecção ...
&lt;/span&gt;            &lt;span class="n"&gt;resultado&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="nf"&gt;guardar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;codigo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;inicio&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;continue&lt;/span&gt;

        &lt;span class="n"&gt;resultado&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="n"&gt;codigo&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="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&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="n"&gt;blocos&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cada string/comentário vira um &lt;strong&gt;placeholder único&lt;/strong&gt; tipo &lt;code&gt;__PYRT_STR_0__&lt;/code&gt;. Depois o tradutor roda em paz, e no final os placeholders são restaurados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resultado:&lt;/strong&gt; as strings ficam intocadas. ✅&lt;/p&gt;




&lt;h2&gt;
  
  
  O caso mais difícil: f-strings
&lt;/h2&gt;

&lt;p&gt;F-strings são strings especiais que contêm &lt;strong&gt;expressões Python dentro de chaves&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(f"Olá, {nome}! Você tem {idade mais 1} anos.")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O tradutor precisa:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Não traduzir&lt;/strong&gt; o texto normal da f-string (&lt;code&gt;"Olá, ..."&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traduzir&lt;/strong&gt; as expressões dentro das chaves (&lt;code&gt;{idade mais 1}&lt;/code&gt; → &lt;code&gt;{idade + 1}&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A solução é &lt;strong&gt;processar cada f-string separadamente&lt;/strong&gt;, identificando onde começa e termina cada &lt;code&gt;{...}&lt;/code&gt;:&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_traduzir_fstring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;texto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&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;# ... encontrar prefixo e aspas ...
&lt;/span&gt;    &lt;span class="n"&gt;corpo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;texto&lt;/span&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;

    &lt;span class="n"&gt;partes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&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;0&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;corpo&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;corpo&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="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="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# Encontrar o } correspondente
&lt;/span&gt;            &lt;span class="n"&gt;profundidade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&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;1&lt;/span&gt;
            &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;corpo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;profundidade&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;corpo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&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="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;profundidade&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;corpo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&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="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;profundidade&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

            &lt;span class="c1"&gt;# Traduzir a expressão interna
&lt;/span&gt;            &lt;span class="n"&gt;expr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;corpo&lt;/span&gt;&lt;span class="p"&gt;[&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;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="n"&gt;partes&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="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="nf"&gt;traduzir_expressao&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expr&lt;/span&gt;&lt;span class="p"&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="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;partes&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="n"&gt;corpo&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="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;prefixo&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso funciona mesmo com &lt;strong&gt;f-strings aninhadas&lt;/strong&gt; ou expressões complexas como &lt;code&gt;{minha_lista[0] mais 10}&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  O truque das palavras contextuais
&lt;/h2&gt;

&lt;p&gt;Palavras como &lt;code&gt;se&lt;/code&gt;, &lt;code&gt;em&lt;/code&gt;, &lt;code&gt;e&lt;/code&gt;, &lt;code&gt;ou&lt;/code&gt; são &lt;strong&gt;ambíguas&lt;/strong&gt;. Podem ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Palavra-chave (&lt;code&gt;se idade &amp;gt; 10:&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Nome de variável (&lt;code&gt;se = 10&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Parte de outra palavra (&lt;code&gt;sete&lt;/code&gt;, &lt;code&gt;sempre&lt;/code&gt;, &lt;code&gt;tema&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Uso &lt;strong&gt;regex com contexto específico&lt;/strong&gt; pra cada caso:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;se&lt;/code&gt; só traduz no início de linha
&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;# Só vira "if" se for início de uma condição
&lt;/span&gt;&lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;^(\s*)se(?=\s+.+:)&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# início + indentação + se + expressão + :
&lt;/span&gt;    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;\1if&lt;/span&gt;&lt;span class="sh"&gt;'&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="n"&gt;flags&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MULTILINE&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso garante que &lt;code&gt;se idade &amp;gt; 10:&lt;/code&gt; vira &lt;code&gt;if idade &amp;gt; 10:&lt;/code&gt;, mas &lt;code&gt;se = 10&lt;/code&gt; continua sendo variável.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;em&lt;/code&gt; só traduz em loops
&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;# Só vira "in" em "for x em y"
&lt;/span&gt;&lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;\bfor\s+(\w+)\s+em\b&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;for \1 in&lt;/span&gt;&lt;span class="sh"&gt;'&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;e&lt;/code&gt; / &lt;code&gt;ou&lt;/code&gt; só entre expressões
&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;# Só vira "and" / "or" entre duas expressões
&lt;/span&gt;&lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;([a-zA-Z0-9_\)\]]+)\s+e\s+([a-zA-Z0-9_\(\[\{])&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;\1 and \2&lt;/span&gt;&lt;span class="sh"&gt;'&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso evita que &lt;code&gt;"bom dia e boa tarde"&lt;/code&gt; vire &lt;code&gt;"bom dia and boa tarde"&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Métodos: só depois do ponto
&lt;/h2&gt;

&lt;p&gt;Em Python, métodos são chamados &lt;strong&gt;depois de um ponto&lt;/strong&gt;:&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;texto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;item&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;p&gt;Em Pyrtugues, usamos palavras em português nos mesmos lugares:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;texto.maiúsculas()
lista.adicionar("item")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A tradução usa &lt;strong&gt;lookbehind&lt;/strong&gt; pra garantir que só traduz depois do ponto:&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="c1"&gt;# (?&amp;lt;=\.) significa "precedido por ."
&lt;/span&gt;&lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sa"&gt;rf&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;(?&amp;lt;=\.)\s*&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;palavra&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;(?=\s*\()&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;traducao&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso evita que uma variável chamada &lt;code&gt;maiúsculas&lt;/code&gt; seja traduzida por engano.&lt;/p&gt;




&lt;h2&gt;
  
  
  O resultado final
&lt;/h2&gt;

&lt;p&gt;O tradutor completo faz isso em sequência:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Proteger strings e comentários →  __PYRT_STR_0__, __PYRT_STR_1__...
2. Traduzir expressões dentro de f-strings
3. Traduzir palavras-chave com contexto (se, em, e, ou)
4. Traduzir métodos (só depois do ponto)
5. Traduzir operadores (mais, menos, vezes)
6. Restaurar strings e comentários
7. Retornar código Python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linha 1 do Pyrtugues:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se idade maior que 10:
    mostrar("Olá!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linha 1 do Python gerado:&lt;/strong&gt;&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="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&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;Olá!&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;p&gt;&lt;strong&gt;E funciona com código complexo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;função calcular_media(notas):
    soma = 0
    para nota em notas:
        soma = soma mais nota
    retornar soma dividido por tamanho(notas)

nomes = ["Ana e Maria", "João e Pedro"]
para nome em nomes:
    mostrar(f"Processando: {nome}")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vira:&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;calcular_media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;notas&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;soma&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;for&lt;/span&gt; &lt;span class="n"&gt;nota&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;notas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;soma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soma&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;nota&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;soma&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;notas&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;nomes&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;Ana e Maria&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;João e Pedro&lt;/span&gt;&lt;span class="sh"&gt;"&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;nome&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;nomes&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Processando: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="si"&gt;}&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;p&gt;Os "e" dentro das strings ficam preservados. ✅&lt;/p&gt;




&lt;h2&gt;
  
  
  O que aprendi nesse projeto
&lt;/h2&gt;

&lt;p&gt;Fazer um tradutor &lt;strong&gt;parece simples&lt;/strong&gt; até você tentar. Aprendi três lições:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Contexto é tudo.&lt;/strong&gt; Substituir palavra por palavra não funciona. Precisa entender onde cada uma está.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strings são sagradas.&lt;/strong&gt; Proteja antes de qualquer coisa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teste com código real.&lt;/strong&gt; Bug só aparece quando você tenta casos extremos.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;O código completo tá no &lt;a href="https://github.com/pyrtugues/Pyrtugues" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Se você quiser contribuir com melhorias no tradutor, abre uma issue ou manda PR.&lt;/p&gt;




&lt;h2&gt;
  
  
  Vem testar
&lt;/h2&gt;

&lt;p&gt;O Pyrtugues tá disponível em:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Site oficial:&lt;/strong&gt; &lt;a href="https://pyrtugues.pages.dev" rel="noopener noreferrer"&gt;pyrtugues.pages.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Editor Web:&lt;/strong&gt; &lt;a href="https://pyrtugues-editor.pages.dev" rel="noopener noreferrer"&gt;pyrtugues-editor.pages.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/pyrtugues" rel="noopener noreferrer"&gt;github.com/pyrtugues&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ficou alguma dúvida sobre o tradutor? Quer saber mais sobre alguma parte específica? Comenta aqui embaixo que eu respondo!&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Posts anteriores
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/pyrtugues/pyrtugues-programacao-em-portugues-afe"&gt;Pyrtugues: programação em português que gera Python de verdade&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Pyrtugues&lt;/strong&gt; — Programação em português. Lógica de Python. Uma ponte para aprender.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Criado por Vinicius Caracciolo (12 anos)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Pyrtugues: programação em português que gera Python de verdade</title>
      <dc:creator>pyrtugues</dc:creator>
      <pubDate>Sun, 27 Sep 2026 20:29:00 +0000</pubDate>
      <link>https://dev.to/pyrtugues/pytugues-programacao-em-portugues-afe</link>
      <guid>https://dev.to/pyrtugues/pytugues-programacao-em-portugues-afe</guid>
      <description>&lt;h1&gt;
  
  
  Pyrtugues: A Ponte em Português para o Python que Crianças e Iniciantes Precisavam
&lt;/h1&gt;

&lt;p&gt;Se você já tentou ensinar programação para uma criança ou para alguém que não fala inglês, sabe qual é o maior obstáculo: a barreira do idioma. Enquanto a lógica de programação é universal, os comandos como &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;else&lt;/code&gt;, &lt;code&gt;print&lt;/code&gt; e &lt;code&gt;def&lt;/code&gt; são em inglês. &lt;/p&gt;

&lt;p&gt;Ferramentas como o Portugol tentam resolver isso, mas trazem uma sintaxe complicada e engessada, que não se conecta com o que o mercado usa. O &lt;strong&gt;Pyrtugues&lt;/strong&gt; nasceu para mudar esse cenário.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é o Pyrtugues?
&lt;/h2&gt;

&lt;p&gt;O Pyrtugues é um projeto educacional de código aberto que funciona como uma &lt;strong&gt;ponte para o Python&lt;/strong&gt;. Ele permite que você escreva código usando palavras em português, mas com a lógica idêntica à do Python. &lt;/p&gt;

&lt;p&gt;Mais do que isso: o Pyrtugues &lt;strong&gt;traduz automaticamente&lt;/strong&gt; o seu código em português para Python real, que pode ser executado e até mesmo usar a biblioteca Pygame para criar jogos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como Funciona?
&lt;/h2&gt;

&lt;p&gt;A arquitetura do Pyrtugues é simples e poderosa:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Você escreve&lt;/strong&gt; em Pyrtugues: &lt;code&gt;se idade &amp;gt; 10: mostrar("Olá!")&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;O motor de tradução&lt;/strong&gt; converte para Python: &lt;code&gt;if idade &amp;gt; 10: print("Olá!")&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;O código Python é executado&lt;/strong&gt;, permitindo que você veja o resultado real.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Um Exemplo Prático
&lt;/h2&gt;

&lt;p&gt;Veja como é simples a transição:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Em Pyrtugues:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;função saudacao(nome):
    retornar f"Olá, {nome}!"

mostrar(saudacao("Pyrtugues"))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em Python (gerado automaticamente):&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;saudacao&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nome&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;Olá, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;nome&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;saudacao&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Pyrtugues&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;p&gt;A lógica é a mesma. A única diferença é a sintaxe, que se torna muito mais amigável para quem está começando.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que o Pyrtugues é Diferente?
&lt;/h2&gt;

&lt;p&gt;Sem Blocos: É programação textual de verdade, com código digitado, como no mundo real.&lt;/p&gt;

&lt;p&gt;Ponte para o Python: Não te prende em uma linguagem "de brinquedo". Você aprende a lógica e, naturalmente, migra para o Python.&lt;/p&gt;

&lt;p&gt;Suporte a Pygame: Crie jogos e aplicações gráficas enquanto aprende.&lt;/p&gt;

&lt;p&gt;Versão Web e Desktop: Use no navegador ou baixe para Windows e Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O Pyrtugues não veio para substituir o Python, mas para ser a porta de entrada ideal para ele. Se você é professor, pai ou está começando a programar e esbarra na barreira do inglês, o Pyrtugues é a ferramenta que faltava.&lt;/p&gt;

&lt;p&gt;🌐 Site oficial: &lt;a href="https://pyrtugues-apre.pages.dev" rel="noopener noreferrer"&gt;https://pyrtugues-apre.pages.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧪 Editor Web: &lt;a href="https://pyrtugues-editor.pages.dev" rel="noopener noreferrer"&gt;https://pyrtugues-editor.pages.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔰 Curso: &lt;a href="https://pyrtugues.pages.dev" rel="noopener noreferrer"&gt;https://pyrtugues.pages.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 GitHub: &lt;a href="https://github.com/pyrtugues/Pyrtugues" rel="noopener noreferrer"&gt;https://github.com/pyrtugues/Pyrtugues&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você já conhecia o Pyrtugues? Deixa um comentário com a sua opinião!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>education</category>
      <category>python</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
