Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Glas.jfcc en 5 Junio 2012, 20:02 PM

Título: programa convierte caracteres alfanumericos a morse (python)
Publicado por: Glas.jfcc en 5 Junio 2012, 20:02 PM
hola amigos aqui les dejo un codigo que convierte caracteres alfanumericos en su respectivo codigo Morse, me parece que debo compartirlo a alguien le puede servir de algo, saludos

Código (python) [Seleccionar]
# -*- coding: cp1252 -*-
#convierte texto ingresado en pantalla a codico morse
#by Glas (glas.jfcc@gmail.com)
#----------------------------------------------------

#------------------------------------------
def morse(caracter):
    if caracter == 'a' or caracter == 'A':
        codigo = '.-'
    if caracter == 'b' or caracter == 'B':
        codigo = '-...'
    if caracter == 'c' or caracter == 'C':
        codigo = '-.-.'
    if caracter == 'd' or caracter == 'D':
        codigo = '-..'
    if caracter == 'e' or caracter == 'E':
        codigo = '.'
    if caracter == 'f' or caracter == 'F':
        codigo = '..-.'
    if caracter == 'g' or caracter == 'G':
        codigo = '--.'
    if caracter == 'h' or caracter == 'H':
        codigo = '....'
    if caracter == 'i' or caracter == 'I':
        codigo = '..'
    if caracter == 'j' or caracter == 'J':
        codigo = '.---'
    if caracter == 'k' or caracter == 'K':
        codigo = '-.-'
    if caracter == 'l' or caracter == 'L':
        codigo = '.-..'
    if caracter == 'm' or caracter == 'M':
        codigo = '--'
    if caracter == 'n' or caracter == 'N':
        codigo = '-.'
    if caracter == 'ñ' or caracter == 'Ñ':
        codigo = '--.--'
    if caracter == 'o' or caracter == 'O':
        codigo = '---'
    if caracter == 'p' or caracter == 'P':
        codigo = '.--.'
    if caracter == 'q' or caracter == 'Q':
        codigo = '--.-'
    if caracter == 'r' or caracter == 'R':
        codigo = '.-.'
    if caracter == 's' or caracter == 'S':
        codigo = '...'
    if caracter == 't' or caracter == 'T':
        codigo = '_'
    if caracter == 'u' or caracter == 'U':
        codigo = '..-'
    if caracter == 'v' or caracter == 'V':
        codigo = '...-'
    if caracter == 'w' or caracter == 'W':
        codigo = '.--'
    if caracter == 'x' or caracter == 'X':
        codigo = '-..-'
    if caracter == 'y' or caracter == 'Y':
        codigo = '-.--'
    if caracter == 'z' or caracter == 'Z':
        codigo = '--..'
    if caracter == '0':
        codigo = '-----'
    if caracter == '1':
        codigo = '.----'
    if caracter == '2':
        codigo = '..---'
    if caracter == '3':
        codigo = '...--'
    if caracter == '4':
        codigo = '....-'
    if caracter == '5':
        codigo = '.....'
    if caracter == '6':
        codigo = '-....'
    if caracter == '7':
        codigo = '--...'
    if caracter == '8':
        codigo = '---..'
    if caracter == '9':
        codigo = '----.'
    if caracter == '.':
        codigo = '.-.-.-'
    if caracter == ',':
        codigo = '--..--'
    if caracter == '?':
        codigo = '..--..'
    if caracter == '!':
        codigo = '-.-.--'
    if caracter == ' ':
        codigo = ' '
    return codigo
#------------------------------------------

print 'COVERSOR TEXTO->MORSE'
print '---------------------\n'
texto = raw_input('> ')

for letra in texto:
    print morse(letra)

raw_input()
Título: Re: programa convierte caracteres alfanumericos a morse (python)
Publicado por: overxfl0w13 en 5 Junio 2012, 20:53 PM
Puedes hacerlo mucho más sencillo con un diccionario, así te ahorras tanto condicional que ralentizan el programa. Si quieres practicar prueba a hacerlo así :)

Bueno es :)

Te dejo mi versión por si te decides a hacerlo, la tomes como ejemplo:

Código (python) [Seleccionar]

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class morse:
def __init__(self,texto):
self.texto = texto
self.diccionario = {"a":".-","b":"-...","c":"-.-.","d":"-..","e":".","f":"..-.","g":"--.","h":"....","i":"..","j":".---",
"k":"-.-","l":".-..","m":"--","n":"-.","ñ":"--.--","o":"---","p":".--.","q":"--.-","r":".-.","s":"...","t":"_","u":"..-",
"v":"...-","w":".--","x":"-..-","y":"-.--","z":"--..","0":"-----","1":".----","2":"..---","3":"...--","4":"....-",
"5":".....","6":"-....","7":"--...","8":"---..","9":"----.","!":"-.-.--","?":"..--..",".":".-.-.-"," ":" ","'":"--..--"}
self.parseador()
def parseador(self):
self.acumulador = ""
for self.elemento in self.texto.lower():
self.acumulador = self.acumulador + self.diccionario[self.elemento]
print self.acumulador
if __name__ == '__main__':
texto = raw_input("Inserta el texto a morsear>")
instancia = morse(texto)



Y se podría simplificar mucho más, sin usar POO:

Código (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
texto,acumulador,diccionario= (raw_input("Inserta el texto a morsear>"),"",{"a":".-","b":"-...","c":"-.-.","d":"-..","e":".","f":"..-.","g":"--.","h":"....","i":"..","j":".---",
"k":"-.-","l":".-..","m":"--","n":"-.","ñ":"--.--","o":"---","p":".--.","q":"--.-","r":".-.","s":"...","t":"_","u":"..-",
"v":"...-","w":".--","x":"-..-","y":"-.--","z":"--..","0":"-----","1":".----","2":"..---","3":"...--","4":"....-",
"5":".....","6":"-....","7":"--...","8":"---..","9":"----.","!":"-.-.--","?":"..--..",".":".-.-.-"," ":" ","'":"--..--"})
for letra in texto.lower():
acumulador = acumulador + diccionario[letra]
print acumulador



Título: Re: programa convierte caracteres alfanumericos a morse (python)
Publicado por: Glas.jfcc en 9 Junio 2012, 05:07 AM
hooo :o muy bien gracias por las respuestas, sabia que se podia hacer de forma mas simple sin los IF, gracias saludos.
Título: Re: programa convierte caracteres alfanumericos a morse (python)
Publicado por: Jirp96 en 9 Junio 2012, 05:14 AM
Hola!
Además de lo que comentó overxfl0w13, puedes ahorrarte todos los "or", si, en vez de esto:
Código (python) [Seleccionar]

def morse(caracter):
    if caracter == 'a' or caracter == 'A':
        codigo = '.-'
    if caracter == 'b' or caracter == 'B':
        codigo = '-...'
    if caracter == 'c' or caracter == 'C':
        codigo = '-.-.'
(...)
    if caracter == 'x' or caracter == 'X':
        codigo = '-..-'
    if caracter == 'y' or caracter == 'Y':
        codigo = '-.--'
    if caracter == 'z' or caracter == 'Z':
(...)


Usas esto:
Código (python) [Seleccionar]

def morse(caracter):
    if caracter.lower() == 'a':
        codigo = '.-'
    if caracter.lower() == 'b':
        codigo = '-...'
    if caracter.lower() == 'c':
        codigo = '-.-.'
(...)
    if caracter.lower() == 'x':
        codigo = '-..-'
    if caracter.lower() == 'y':
        codigo = '-.--'
    if caracter.lower() == 'z':
(...)


Esto es, pasando el caracter que estas comparando a minuscula y solo tomar en cuenta estas últimas ^^
Saludos!