#! /usr/bin/python
# -*- coding: iso-8859-1 -*-
#
__author__="atareao"
__date__ ="$29-ene-2011$"
#
# <from numbers to letters.>
#
# Copyright (C) 2011 Lorenzo Carbonell
# lorenzo.carbonell.cerezo@gmail.com
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#
#
import gtk
unidades = []
decenas = []
centenas = []
unidades.append('cero')
unidades.append('uno')
unidades.append('dos')
unidades.append('tres')
unidades.append('cuatro')
unidades.append('cinco')
unidades.append('seis')
unidades.append('siete')
unidades.append('ocho')
unidades.append('nueve')
unidades.append('diez')
unidades.append('once')
unidades.append('doce')
unidades.append('trece')
unidades.append('catorce')
unidades.append('quince')
unidades.append('dieciseis')
unidades.append('diecisiete')
unidades.append('dieciocho')
unidades.append('diecinueve')
unidades.append('veinte')
unidades.append('veintiuno')
unidades.append('veintidos')
unidades.append('veintitres')
unidades.append('veinticuatro')
unidades.append('veinticinco')
unidades.append('veintiseis')
unidades.append('veintisiete')
unidades.append('veintiocho')
unidades.append('veintinueve')
unidades.append('treinta')
decenas.append('')
decenas.append('')
decenas.append('')
decenas.append('')
decenas.append('cuarenta')
decenas.append('cincuenta')
decenas.append('sesenta')
decenas.append('setenta')
decenas.append('ochenta')
decenas.append('noventa')
centenas.append('')
centenas.append('ciento')
centenas.append('doscientos')
centenas.append('trescientos')
centenas.append('cuatrocientos')
centenas.append('quinientos')
centenas.append('seiscientos')
centenas.append('setecientos')
centenas.append('ochocientos')
centenas.append('novecientos')
def is_integer(number):
try:
dummy = int(number)
return True
except:
return False
return False
def lee_numero(number):
if not is_integer(number):
return ''
intue = int(number)
number = str(number)
longit = len(number)
trios = longit / 3
if longit < 3:
if intue < 31:
numero_leido = unidades[intue]
elif intue >=31 and intue<=39:
numero_leido = unidades[30] + ' y ' + unidades[intue - 30]
elif intue == 40:
numero_leido = decenas[4]
elif intue >=41 and intue<=49:
numero_leido = decenas[4] + ' y ' + unidades[intue - 40]
elif intue == 50:
numero_leido = decenas[5]
elif intue >=51 and intue<=59:
numero_leido = decenas[5] + ' y ' + unidades[intue - 50]
elif intue == 60:
numero_leido = decenas[6]
elif intue >=61 and intue<=69:
numero_leido = decenas[6] + ' y ' + unidades[intue - 60]
elif intue == 70:
numero_leido = decenas[7]
elif intue >=71 and intue<=79:
numero_leido = decenas[7] + ' y ' + unidades[intue - 70]
elif intue == 80:
numero_leido = decenas[8]
elif intue >=81 and intue<=89:
numero_leido = decenas[8] + ' y ' + unidades[intue - 80]
elif intue == 90:
numero_leido = decenas[9]
elif intue >=91 and intue<=99:
numero_leido = decenas[9] + ' y ' + unidades[intue - 90]
elif longit < 4:
parte_izquierda = number[:1]#number, 1)
parte_derecha = number[-2:]#Right(number, 2)
if parte_derecha == '00' and parte_izquierda == '1':
numero_leido = 'cien'
else:
numero_leido = centenas[int(parte_izquierda)] + ' ' + lee_numero(parte_derecha)
elif longit < 7:
parte_izquierda = number[:longit-3]#Left(number, longit - 3)
parte_derecha = number[-3:]#Right(number, 3)
if int(parte_izquierda) == 0:
numero_leido = lee_numero(parte_derecha)
elif int(parte_izquierda) == 1:
numero_leido = 'mil ' + lee_numero(parte_derecha)
elif int(parte_izquierda) > 1:
numero_leido = lee_numero(parte_izquierda) + ' mil ' + lee_numero(parte_derecha)
elif longit < 13:
parte_izquierda = number[:longit-6]#Left(number, longit - 6)
parte_derecha = number[-6:]#Right(number, 6)
if int(parte_izquierda) == 0:
numero_leido = lee_numero(parte_derecha)
elif int(parte_izquierda) == 1:
numero_leido = 'un millón ' + lee_numero(parte_derecha)
elif int(parte_izquierda) > 1:
parte_izquierda = parte_izquierda
if parte_izquierda[-1:] == '1':#If Right(parte_izquierda, 1) = '1' Then
numero_leido = lee_numero(parte_izquierda)[:len(lee_numero(parte_izquierda))- 1] + ' millón ' + lee_numero(parte_derecha)#numero_leido = Left(lee_numero(parte_izquierda), Len(lee_numero(parte_izquierda)) - 1) + ' millón ' + lee_numero(parte_derecha)
else:
numero_leido = lee_numero(parte_izquierda) + ' millones ' + lee_numero(parte_derecha)
elif longit < 25:
parte_izquierda = number[:longit-12]#Left(number, longit - 12)
parte_derecha = number[-12:]#Right(number, 12)
if int(parte_izquierda) == 0:
numero_leido = lee_numero(parte_derecha)
elif int(parte_izquierda) == 1:
numero_leido = 'un billón ' + lee_numero(parte_derecha)
elif int(parte_izquierda) > 1:
numero_leido = lee_numero(parte_izquierda) + ' billones ' + lee_numero(parte_derecha)
elif longit < 49:
parte_izquierda = number[:longit-24]#Left(number, longit - 24)
parte_derecha = number[-24:]#Right(number, 24)
if int(parte_izquierda) == 0:
numero_leido = lee_numero(parte_derecha)
elif int(parte_izquierda) == 1:
numero_leido = 'un trillón ' + lee_numero(parte_derecha)
elif int(parte_izquierda) > 1:
numero_leido = lee_numero(parte_izquierda) + ' trillones ' + lee_numero(parte_derecha)
elif longit < 97:
parte_izquierda = number[:longit-48]#Left(number, longit - 48)
parte_derecha = number[-48:]#Right(number, 48)
if int(parte_izquierda) == 0:
numero_leido = lee_numero(parte_derecha)
elif int(parte_izquierda) == 1:
numero_leido = 'un cuatrillón ' + lee_numero(parte_derecha)
elif int(parte_izquierda) > 1:
numero_leido = lee_numero(parte_izquierda) + ' cuatrillones ' + lee_numero(parte_derecha)
elif longit < 193:
parte_izquierda = number[:longit-96]#Left(number, longit - 96)
parte_derecha = number[-96:]#Right(number, 96)
if int(parte_izquierda) == 0:
numero_leido = lee_numero(parte_derecha)
elif int(parte_izquierda) == 1:
numero_leido = 'un quintillón ' + lee_numero(parte_derecha)
elif int(parte_izquierda) > 1:
numero_leido = lee_numero(parte_izquierda) + ' quintillones ' + lee_numero(parte_derecha)
return numero_leido.upper()[:1]+numero_leido.lower()[1:]
class CM(gtk.Dialog): # needs GTK, Python, Webkit-GTK
def __init__(self,busqueda_inicial = None):
#
gtk.Dialog.__init__(self)
self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
self.set_title('number-me')
self.set_default_size(300, 225)
self.connect('destroy', self.close_application)
#
self.vbox1 = gtk.VBox(spacing = 5)
self.vbox1.set_border_width(5)
self.get_content_area().add(self.vbox1)
#
self.hbox0 = gtk.HBox(spacing = 5)
self.hbox0.set_border_width(5)
self.vbox1.add(self.hbox0)
#
self.button0 = gtk.Button('?')
self.button0.connect('clicked',self.menu_about_response)
self.hbox0.pack_end(self.button0,False,True)
#
self.hbox1 = gtk.HBox(spacing = 5)
self.hbox1.set_border_width(5)
self.vbox1.add(self.hbox1)
#
self.label = gtk.Label('Número:')
self.hbox1.pack_start(self.label,False,False)
#
self.entry = gtk.Entry()
self.entry.connect("activate",self.numera)
self.hbox1.pack_start(self.entry,True,True)
#
'''
self.button = gtk.Button('Numérame')
self.button.connect('clicked',self.numera)
self.vbox1.pack_start(self.button,False,False)
'''
#
self.frame0 = gtk.Frame()
self.vbox1.pack_start(self.frame0,True,True)
#
self.scrolledwindow = gtk.ScrolledWindow()
self.scrolledwindow.set_size_request(200,180)
self.scrolledwindow.set_border_width(2)
self.frame0.add(self.scrolledwindow)
self.textview =gtk.TextView()
self.scrolledwindow.add(self.textview)#.pack_start(self.textview,True,True)
#
self.show_all()
self.set_focus(self.entry)
#
#
#
def close_application(self, widget, event, data=None):
exit(0)
def menu_about_response(self,widget):
ad=gtk.AboutDialog()
ad.set_name('number-me')
ad.set_version('0.2.0')
ad.set_copyright('Copyrignt (c) 2011\nLorenzo Carbonell')
ad.set_comments('Una aplicación para pasar de números a letras')
ad.set_license(''+
'This program is free software: you can redistribute it and/or modify it\n'+
'under the terms of the GNU General Public License as published by the\n'+
'Free Software Foundation, either version 3 of the License, or (at your option)\n'+
'any later version.\n\n'+
'This program is distributed in the hope that it will be useful, but\n'+
'WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n'+
'or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n'+
'more details.\n\n'+
'You should have received a copy of the GNU General Public License along with\n'+
'this program. If not, see <http://www.gnu.org/licenses/>.')
ad.set_website('http://www.atareao.es')
ad.set_website_label('http://www.atareao.es')
ad.set_authors(['Lorenzo Carbonell <lorenzo.carbonell.cerezo@gmail.com>'])
ad.set_documenters(['Lorenzo Carbonell <lorenzo.carbonell.cerezo@gmail.com>'])
#ad.set_logo(logo)
#ad.set_logo_icon_name(icon_name)
ad.set_program_name('number-me')
ad.run()
ad.hide()
def numera(self,widget):
number = ''
base = self.entry.get_text()
base = base.replace('.',',')
if base.find(',')!=-1:
entero = base.split(',')
if len(entero[1])>0:
number = lee_numero(entero[0]) + ' con ' +lee_numero(entero[1]).lower()
else:
number = lee_numero(entero[0])
else:
number = lee_numero(self.entry.get_text())
clipboard = gtk.clipboard_get()
clipboard.set_text(number)
ttbuffer=gtk.TextBuffer()
ttbuffer.set_text(number)
self.textview.set_buffer(ttbuffer)
self.textview.set_editable(False)
self.textview.set_wrap_mode(gtk.WRAP_WORD)
if number == '':
self.entry.set_text('')
def on_exit_activate(self,widget):
exit(0)
if __name__ == "__main__":
'''
print lee_numero(0)
print lee_numero(1)
print lee_numero(12)
print lee_numero(123)
print lee_numero(1234)
print lee_numero(12345)
print lee_numero(1234567)
print lee_numero(12345678)
print lee_numero(123456789)
print lee_numero(1234567890)
print lee_numero(12345678901)
print lee_numero(123456789012)
'''
cm = CM()
cm.run()
exit(0)
martes, 8 de febrero de 2011
De números a letras.
Fuente: El atareao
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario