• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rolando2424

[Python] Um simple tradutor de Albhed e Português

8 mensagens neste tópico

Este é um pequeno script de Python para poder traduzir Português para albhed e vice-versa e foi usado para uma brincadeira que eu e mais uma pessoa fizesmos num forum (andava tudo a falar pitês e depois começamos nós a falar albhed :D ).

Apesar de haver vários tradutores online, eu decidi (e estando em Python há cerca de um mês) que seria interessante fazer um simples programa :D

Bem, tive uma pequena ajuda de uma pessoa do site Qunu que me mostrou o poder do maketrans que era exactamente o que procurava,

A partir daí foi fácil (apesar de na versão 0.1 o código não prestava mesmo para nada... nem contador tinha).

Depois foi pondo umas coisas no código (que ia aprendendo e descobrindo) até chegar à versão 0.4, que enviei para a Python Mailist, onde me aconcelharam a usar o .strip() = "" pois eu tinha quatro linhas de código para fazer o mesmo efeito (tinha um lingua.isspace() = True e rinha lingua = "") e me disseram que era melhor defenir os maketrans fora do loop (eu tinha tudo defenido dentro do loop).

Ah, e peço desculpa por causa do excesso dos comentários, mas como foi o meu primeiro programa, assim se me esquecer de alguma coisa posso sempre lembrar-me do que faz cada coisa.

Agora só me falta fazer um simples GUI para ele (estou a pensar em usar Tkinter).

#!/usr/bin/python
#V 0.5
import string

contador = "s" # Cria um contador que verifica que deve ou nao executar o script

albhed_portugues = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'epstiwknuvgclrybxhmdofzqajEPSTIWKNUVGCLRYBXHMDOFZQAJ') # Cria a lista de palavra e de que maneira vao ser trocadas de albhed para portugues

portugues_albhed = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'ypltavkrezgmshubxncdijfqowYPLTAVkREZGMSHUBXNCDIJFQOW') # Cria a lista de palavra e de que maneira vao ser trocadas de portugues para albhed

while contador.lower() == "s" or contador.lower() == "sim": # Enquanto o valor for "s" ou "sim" o programa nao sai (converte a palavra em minusculas)

print "Escolhe a lingua que queres traduzir. [p]ortugues ou [a]l-bhed"

lingua = raw_input() # Escolhe a lingua

if lingua.strip() == "": # Se, depois de se remover os espaços em branco, ficarmos com um conjunto vazio

	print "Tens de escrever alguma coisa ok?"

if lingua.lower() == "a" or lingua.lower() == "al-bhed":

	print "Escreve a palavra que queres traduzir."

	palavra = raw_input() # Pede por uma palavra

	print palavra.translate(albhed_portugues) # Imprime as palavras trocadas

if lingua.lower() == "p" or lingua.lower() == "portugues":

	print "Escreve a palavra que queres traduzir."

	palavra = raw_input() # Pede por uma palavra

	print "" + palavra.translate(portugues_albhed) + "" # Imprime as palavras trocadas


print "Ainda tens mais alguma coisa para traduzir? [s/N]"

contador = raw_input() # Modifica o contador que esta inicio do script

if contador.lower() == "n" or contador.lower() == "nao": # Se contador igual a "n" ou "nao" minusculos
print "Entao adeus."

EDIT: Bem, aqui está um GUI simples feito em Tkinter.

Para o usar, escrevam o texto no primeiro campo e depois carregam num dos botões e o texto aparece traduzido no segundo campo :D.

#!/usr/bin/python

from Tkinter import *
import string

root=Tk()
entry=Entry(root)
var=StringVar()
entry2=Entry(root,textvariable=var)
entry.pack(side=TOP)
entry2.pack(side=TOP)

def albhed_portugues():
a = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'epstiwknuvgclrybxhmdofzqajEPSTIWKNUVGCLRYBXHMDOFZQAJ')
b = entry.get()
c = b.translate(a)
var.set(c)

def portugues_albhed():
a = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'ypltavkrezgmshubxncdijfqowYPLTAVkREZGMSHUBXNCDIJFQOW')
b = entry.get()
c = b.translate(a)
var.set(c)

button=Button(root,text="Traduzir Albhed-Portugues",command=albhed_portugues)
button.pack(side=RIGHT)
button2=Button(root,text="Traduzir Portugues-Albhed",command=portugues_albhed)
button2.pack(side=RIGHT)
root.mainloop()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda estou a pensar em fazer um GUI para ele e depois coloca-lo no sourceforge :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda estou a pensar em fazer um GUI para ele e depois coloca-lo no sourceforge :P

Não estou a menosprezar o teu trabalho, mas para quê meter uma coisa deste género no SF?

Se metesses no Python Cookbook ou numa coisa do género tinha mais lógica. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda estou a pensar em fazer um GUI para ele e depois coloca-lo no sourceforge :P

Não estou a menosprezar o teu trabalho, mas para quê meter uma coisa deste género no SF?

Se metesses no Python Cookbook ou numa coisa do género tinha mais lógica. :P

Tava dar um exemplo :D Talvez ponha aí no cookbook, afinal ele serve para scripts mais pequenos :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu estou a acabar uma versão do tradutor de PT para Pitês e usei o wxPython (amanha ou ainda hoje lanço-o).

Se lhe quiseres deixar uma espreitadela ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apesar de não perceber muito de wxPython, posso sempre dar uma olhadela ;)

Mas estás a usar o comando string.maketrans()?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, que isto tem destas coisas...

Está aqui uma pessoa à procura de um tutorial para receber os key input do python (para um outro projecto), dou de caras com uma página a falar sobre o Tkinter e quando dou fé, tenho feito um GUI para isto... (basicamente peguei no código que tinha no site onde estava a ver e adicionei mais um butão e os métodos de tradução.

Por isso aqui está a versão GUI feita em Tkinter (acabei de a fazer, por isso ainda não tive tempo de a comentar, mas é um script bastante simples :))

#!/usr/bin/python

from Tkinter import *
import string

root=Tk()
entry=Entry(root)
var=StringVar()
entry2=Entry(root,textvariable=var)
entry.pack(side=TOP)
entry2.pack(side=TOP)

def albhed_portugues():
a = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'epstiwknuvgclrybxhmdofzqajEPSTIWKNUVGCLRYBXHMDOFZQAJ')
b = entry.get()
c = b.translate(a)
var.set(c)

def portugues_albhed():
a = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'ypltavkrezgmshubxncdijfqowYPLTAVkREZGMSHUBXNCDIJFQOW')
b = entry.get()
c = b.translate(a)
var.set(c)

button=Button(root,text="Traduzir Albhed-Portugues",command=albhed_portugues)
button.pack(side=RIGHT)
button2=Button(root,text="Traduzir Portugues-Albhed",command=portugues_albhed)
button2.pack(side=RIGHT)
root.mainloop()

Vou editar o primeiro post para colocar também este GUI.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora