Skip to main content

Escreva Python em Português: codec de sintaxe, módulos e funções traduzidos

Project description

Portugython

PyPI version Python versions License: MIT

Escreva Python em Português. Portugython traduz funções, tipos e módulos da biblioteca padrão do Python para nomes em português, e inclui um codec de sintaxe que permite escrever palavras-chave (se, para, defina, etc.) nativamente em qualquer arquivo .py.

Instalação

pip install portugython

O codec é registrado automaticamente ao instalar. Basta adicionar # -*- coding: portugues -*- ao topo do arquivo.

Uso: Python em Português nativo

# -*- coding: portugues -*-
de chaves importe *

defina fatorial(n):
    se n <= 1:
        retorne 1
    senao:
        retorne n * fatorial(n - 1)

defina verificar_primo(n):
    se n < 2:
        retorne Falso
    para i em intervalo(2, n):
        se n % i == 0:
            retorne Falso
    retorne Verdadeiro

primos = [x para x em intervalo(2, 20) se verificar_primo(x)]
escreva("Primos:", primos)

para n em intervalo(1, 6):
    escreva(f"{n}! = {fatorial(n)}")

tente:
    resultado = 10 / 0
exceto ZeroDivisionError como err:
    escreva("Erro capturado:", err)
finalmente:
    escreva("Pronto!")

Salve como programa.py e execute com python programa.py. Nenhuma ferramenta extra necessária.

Nota sobre palavras ambíguas: e, ou, de, com, em são palavras-chave reservadas em arquivos com # -*- coding: portugues -*-. Evite usá-las como nomes de variáveis (use err em vez de e para exceções, por exemplo).

Como funciona

O codec portugues é registrado automaticamente via portugython-codec.pth ao instalar o pacote. Quando Python encontra # -*- coding: portugues -*-, chama o codec para decodificar o arquivo antes de parsear, traduzindo palavras-chave em português para Python padrão de forma transparente.

O módulo chaves exporta todos os aliases de funções em português (escreva, leia, intervalo, tamanho, Lista, Dicionario, etc.) para uso direto via from chaves import *.

Uso básico sem codec

from portugython import *

escreva("Olá, Mundo!")
nome = leia("Qual é seu nome? ")
escreva("Olá,", nome)

numeros = Lista([1, 2, 3, 4, 5])
numeros.adicione(6)
numeros.classifique(reverso=Verdadeiro)
escreva(numeros)

pares = filtro(lambda x: x % 2 == 0, numeros)
escreva("Pares:", pares)

resultado = se(tamanho(pares) > 0, "tem pares", "sem pares")
escreva(resultado)

Módulos da biblioteca padrão

Cada módulo da stdlib tem uma versão em português que pode ser importada separadamente.

aleatorio (random)

from portugython import aleatorio

aleatorio.semente(42)
n = aleatorio.inteiro_aleatorio(1, 100)
item = aleatorio.escolha(["pedra", "papel", "tesoura"])
lista = [1, 2, 3, 4, 5]
aleatorio.embaralhe(lista)
amostra = aleatorio.amostra(range(50), k=5)

matematica (math)

from portugython import matematica

print(matematica.PI)
print(matematica.raiz_quadrada(16))
print(matematica.fatorial(10))
print(matematica.seno(matematica.PI / 2))
print(matematica.mdc(48, 18))
print(matematica.combinacoes(10, 3))

sistema (os + sys)

from portugython import sistema

pasta = sistema.diretorio_atual()
arquivos = sistema.listar_diretorio(".")
sistema.criar_diretorios("nova/pasta", existe_ok=Verdadeiro)
sistema.renomear("antigo.txt", "novo.txt")

print(sistema.versao)
print(sistema.plataforma)
db = sistema.variavel_ambiente("DATABASE_URL", "sqlite:///app.db")

tempo (time + datetime)

from portugython import tempo

agora = tempo.agora()
print(agora.formatar("%d/%m/%Y %H:%M"))

hoje = tempo.hoje()
print(hoje.ano, hoje.mes, hoje.dia)

dur = tempo.Duracao.de(dias=7, horas=2)
print(dur.total_segundos)

tempo.dormir(0.1)

colecoes (collections)

from portugython import colecoes

# Contagem
votos = colecoes.Contador(["sim", "nao", "sim", "sim", "nao"])
print(votos.mais_comuns(1))

# Fila dupla
d = colecoes.Deque([1, 2, 3])
d.adicione_esquerda(0)
d.adicione_direita(4)

# Pilha
pilha = colecoes.Pilha()
pilha.empurre("a")
pilha.empurre("b")
print(pilha.retire())

# Fila
fila = colecoes.Fila()
fila.enfileire("primeiro")
fila.enfileire("segundo")
print(fila.desenfileire())

# Tupla com campos nomeados
Ponto = colecoes.tupla_com_nome("Ponto", ["x", "y"])
p = Ponto(3, 4)
print(p.x, p.y)

iteradores (itertools)

from portugython import iteradores

# Combinatória
for combo in iteradores.combine([1, 2, 3, 4], 2):
    print(combo)

# Produto cartesiano
for par in iteradores.produto("AB", "12"):
    print(par)

# Acumulação
totais = list(iteradores.acumule([1, 2, 3, 4, 5]))

# Encadeamento
unido = list(iteradores.encadeie([1, 2], [3, 4], [5]))

funcional (functools)

from portugython import funcional

# Redução
total = funcional.reduzido(lambda a, b: a + b, range(1, 11))

# Função parcial
multiplicar_por_3 = funcional.parcial(lambda a, b: a * b, 3)
print(multiplicar_por_3(7))

# Memoização
@funcional.cache
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

# Composição
dobrar = lambda x: x * 2
somar_um = lambda x: x + 1
dobrar_e_somar = funcional.compor(somar_um, dobrar)
print(dobrar_e_somar(5))

expressao (re)

from portugython import expressao

# Busca simples
m = expressao.buscar(r"\d+", "pagina 42")
if m:
    print(m.group())

# Todos os resultados
numeros = expressao.encontrar_todos(r"\d+", "1 mais 2 igual 3")

# Substituição
limpo = expressao.substituir(r"\s+", " ", "texto  com   espacos")

# Padrão reutilizável
email = expressao.Padrao(r"[\w.+-]+@[\w-]+\.[a-z]{2,}")
if email.encontrar("contato@example.com"):
    print("E-mail válido")

Referência de builtins

Entrada / Saída

Português Python
escreva print
leia input
abra open

Tipos

Português Python
inteiro int
texto str
decimal float
logico bool
lista list
dicionario dict
conjunto set
tupla tuple
intervalo range

Constantes

Português Python
Verdadeiro True
Falso False
Nenhum None

Funções de sequência

Português Python
tamanho len
soma sum
maximo max
minimo min
absoluto abs
classificado sorted
reverso reversed
enumerado enumerate
comprimido zip
mapeado map
filtrado filter

Operadores lógicos

Português Python
nao(x) not x
e(a, b) a and b
ou(a, b) a or b

Funções utilitárias

Português Python
se(c, a, b) a if c else b
para_cada(f, it) list(map(f, it))
filtro(f, it) list(filter(f, it))
reduzido(f, it) functools.reduce(f, it)

Transpilador (API programática)

Além do codec, portugython.transpilador expõe funções para tradução programática:

from portugython import traduzir, executar_texto, executar_arquivo

# Ver o Python equivalente
print(traduzir("se x > 0:\n    retorne x"))
# if x > 0:
#     return x

# Executar diretamente
executar_texto("para i em intervalo(3):\n    escreva(i)")

# Executar um arquivo .ptpy
executar_arquivo("programa.ptpy")

Tabela de palavras-chave

|-----------|--------|-|-----------|--------| | se | if | | senao | else | | senaose | elif | | para | for | | enquanto | while | | parar | break | | continuar | continue | | passar | pass | | defina | def | | classe | class | | retorne | return | | produzca | yield | | anonima | lambda | | importe | import | | de | from | | como | as | | tente | try | | exceto | except | | finalmente | finally | | levante | raise | | com | with | | nao | not | | e | and | | ou | or | | em | in | | eh | is | | excluir | del | | afirmar | assert | | global | global | | naolocal | nonlocal | | assincronico | async | | aguardar | await | | Verdadeiro | True | | Falso | False | | Nenhum | None | | | |

Nota: Palavras como e, ou, de, com e em são palavras-chave reservadas no contexto de arquivos .ptpy. Evite usá-las como nomes de variáveis nesses arquivos, assim como não se usa if ou for como variáveis em Python normal.

Contribuir

  1. Crie um fork deste repositório
  2. Crie uma branch nova a partir de main
  3. Envie um pull request

Licença

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

portugython-0.5.0.tar.gz (53.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

portugython-0.5.0-py3-none-any.whl (55.7 kB view details)

Uploaded Python 3

File details

Details for the file portugython-0.5.0.tar.gz.

File metadata

  • Download URL: portugython-0.5.0.tar.gz
  • Upload date:
  • Size: 53.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for portugython-0.5.0.tar.gz
Algorithm Hash digest
SHA256 48610834c2a36cc7d4d13ac0476e5912c6555f16b490ac5d2e5dd8b82c58cf8a
MD5 cbf8afa8de1986f9bd17e2592664e3b9
BLAKE2b-256 f91c0009b2794c00d651f0b61fa1804818fc645d1d9306ae893b0c0d530093b7

See more details on using hashes here.

File details

Details for the file portugython-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: portugython-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 55.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for portugython-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 37242dfc01b003ff5242e3563b9d6c438ff9e21d396b326688d315b28b477bd9
MD5 fe4d3e38ce42de1277b803f35de26ce9
BLAKE2b-256 d6ebc9051c9cd021b37f0057970b9935fb0249cb33a8fd9853512f5822e3e0fd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page