Skip to main content

A Portuguese translation of Python: functions, modules and syntax

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.

Instalação

pip install portugython

Uso básico

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 de palavras-chave

Portugython inclui um transpilador completo que traduz a sintaxe do Python (palavras-chave) para português. Isso permite escrever programas Python inteiramente em português.

CLI: ptpy

ptpy meu_programa.ptpy               # executa um arquivo .ptpy
ptpy -c 'para i em intervalo(3): escreva(i)'   # executa inline
ptpy --mostrar meu_programa.ptpy     # imprime o Python equivalente

API Python

from portugython import traduzir, executar_texto, executar_arquivo

# Traduzir uma string
codigo_pt = """
defina fatorial(n):
    se n <= 1:
        retorne 1
    senao:
        retorne n * fatorial(n - 1)
"""
print(traduzir(codigo_pt))
# def fatorial(n):
#     if n <= 1:
#         return 1
#     else:
#         return n * fatorial(n - 1)

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

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

Programa completo em português (.ptpy)

# fatorial.ptpy
importe portugython

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, 8):
    escreva(f"{n}! = {fatorial(n)}")

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

Tabela de palavras-chave

Português Python Português Python
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.4.1.tar.gz (50.5 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.4.1-py3-none-any.whl (53.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for portugython-0.4.1.tar.gz
Algorithm Hash digest
SHA256 ca481a5401705ff9923855c89181df0935d670464de203f05b24879942e3564e
MD5 6d4b44506995e55a28efb6c5af96530b
BLAKE2b-256 9b42af34906b1c1069dcddd9f86deda7f2d8444df84adac8661eed4ecaa8cf31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: portugython-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 53.4 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.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b058add47d20d56245c75cae3ef5a59ab560ef1f82c5037c69c754ed25547b7a
MD5 79909ac31835a44f675a8ff92a416b11
BLAKE2b-256 5cc46c6dd051d422f6405f48e3ea9265e1e7fb6382f791737787e4ef3e49cafa

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