Jump to content

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


rolando2424
 Share

Recommended Posts

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 😄 ).

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 😄

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 😄 .

#!/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()

Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄

Link to comment
Share on other sites

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

Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄

Link to comment
Share on other 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

<3 life

Link to comment
Share on other 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 😄 Talvez ponha aí no cookbook, afinal ele serve para scripts mais pequenos :P

Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄

Link to comment
Share on other sites

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

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

Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄

Link to comment
Share on other 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.

Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.