Escreva Python em Português: codec de sintaxe, módulos e funções traduzidos
Project description
Portugython
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,emsão palavras-chave reservadas em arquivos com# -*- coding: portugues -*-. Evite usá-las como nomes de variáveis (useerrem vez deepara 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,comeemsão palavras-chave reservadas no contexto de arquivos.ptpy. Evite usá-las como nomes de variáveis nesses arquivos, assim como não se usaifouforcomo variáveis em Python normal.
Contribuir
- Crie um fork deste repositório
- Crie uma branch nova a partir de main
- Envie um pull request
Licença
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48610834c2a36cc7d4d13ac0476e5912c6555f16b490ac5d2e5dd8b82c58cf8a
|
|
| MD5 |
cbf8afa8de1986f9bd17e2592664e3b9
|
|
| BLAKE2b-256 |
f91c0009b2794c00d651f0b61fa1804818fc645d1d9306ae893b0c0d530093b7
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37242dfc01b003ff5242e3563b9d6c438ff9e21d396b326688d315b28b477bd9
|
|
| MD5 |
fe4d3e38ce42de1277b803f35de26ce9
|
|
| BLAKE2b-256 |
d6ebc9051c9cd021b37f0057970b9935fb0249cb33a8fd9853512f5822e3e0fd
|