Two Way Morse Code Translator
DillFire55
python
a year ago
9.8 kB
4
Indexable
import winsound from time import sleep #Most errors should be fixed, maybe could later add commands to personalize some things, such as like /hz/ to change the hz value of the beep of /play/ using a variable named hz. english_morse = {"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":"--..","1":".----","2":"..---","3":"...--","4":"....-","5":".....","6":"-....","7":"--...","8":"---..","9":"----.","0":"-----","?":"..--..","!":"-.-.--",".":".-.-.-",",":"--..--",";":"-.-.-.",":":"---...","+":".-.-.","-":"-....-","/":"-..-.","=":"-...-", "(":"-.--.", ")":"-.--.-", "&":".-...", "_":"..--.-", "\"":".-..-.", "$":"...-..-", "@":".--.-.", "¿":"..-.-", "¡":"--...-"} morse_english = {".-":"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",".----":"1","..---":"2","...--":"3","....-":"4",".....":"5","-....":"6","--...":"7","---..":"8","----.":"9","-----":"0","..--..":"?","-.-.--":"!",".-.-.-":".","--..--":",","-.-.-.":";","---...":":",".-.-.":"+","-....-":"-","-..-.":"/","-...-":"=", "-.--.":"(", "-.--.-":")", ".-...":"&", "..--.-":"_", ".-..-.":"\"", "...-..-":"$", ".--.-.":"@", "..-.-":"¿", "--...-":"¡", "/": " ", "": " "} print("This is a Two-Way Morse Code Translator. This can translate any of the standard 26 letters and the numbers 0 to 9. It will also translate question marks, exclamation points, periods/dots, commas, semi-colons, colons, pluses, minuses/dashes, forward slashes/fraction bars/alternative division signs, equals signs, paratheses, ampersands, underscores, quotation marks, dollar signs, at symbols, ¿ and ¡ to morse code. This morse code uses dots as: . and dashes as: - and uses spaces between letters and / between words. Any unknown characters or morse code will be printed as �. Entering /eng/ followed by English words will force the translation of English to Morse Code, specifically will prevent auto detection of morse code if you only include . and/or – and/or / in your text. Entering /play/ followed by morse code will beep out the morse code. If you only enter /eng/ or /play/, then it will still just translate to morse code. Plus, you can force English translation of commands using /eng/, and if /play/ if followed by text rather than morse code, it will act similar to /eng/, but can’t force Morse Code to English. Also, /play/ is only supported on windows because it uses winsound to beep. Also, enter /end/ to end the program. Lastly, to see these instructions again, enter /help/ or /?/.") while True: constant_text = "" eng = 1 play = 0 print("") text = input("Enter Text/Morse Code Here: ") print("") if not text == "": if text[0] == "/" and text[1] == "p" and text[2] == "l" and text[3] == "a" and text[4] == "y" and text[5] == "/": if not text == "/play/": play = 1 text = text[6:] characters = [] is_morse = True if not text == "": if text[0] == "/" and text[1] == "e" and text[2] == "n" and text[3] == "g" and text[4] == "/": if not text == "/eng/": is_morse = False eng = 1 text = text[5:] if text == "/end/" and eng == 0: break if text == "/help/" and not play == 1 and eng == 0 or text == "/?/" and not play == 1 and eng == 0: print("This is a Two-Way Morse Code Translator. This can translate any of the standard 26 letters and the numbers 0 to 9. It will also translate question marks, exclamation points, periods/dots, commas, semi-colons, colons, pluses, minuses/dashes, forward slashes/fraction bars/alternative division signs, equals signs, paratheses, ampersands, underscores, quotation marks, dollar signs, at symbols, ¿ and ¡ to morse code. This morse code uses dots as: . and dashes as: - and uses spaces between letters and / between words. Any unknown characters or morse code will be printed as �. Entering /eng/ followed by English words will force the translation of English to Morse Code, specifically will prevent auto detection of morse code if you only include . and/or – and/or / in your text. Entering /play/ followed by morse code will beep out the morse code. If you only enter /eng/ or /play/, then it will still just translate to morse code. Plus, you can force English translation of commands using /eng/, and if /play/ if followed by text rather than morse code, it will act similar to /eng/, but can’t force Morse Code to English. Also, /play/ is only supported on windows because it uses winsound to beep. Also, enter /end/ to end the program. Lastly, to see these instructions again, enter /help/ or /?/.") for i in range(len(text)): if text[i] == " " or text[i] == "-" or text[i] == "." or text[i] == "/": continue else: is_morse = False eng = 0 break if is_morse == True and not text == "/help/" and not text == "/?/" or is_morse == True and eng == 0: constant_text = text eng_text = "" word = "" for i in text: if i == " ": try: eng_text += morse_english[word] except KeyError: eng_text += "�" word = "" elif i == "/": try: eng_text += morse_english[word] + " " except KeyError: eng_text += "�" word = "" else: word += i try: eng_text += morse_english[word] except KeyError: eng_text += "�" nospace_text = "" for i in range(len(eng_text)): if i == 0 or (eng_text[i] != " " or eng_text[i-1] != " "): nospace_text += eng_text[i] if not nospace_text == " ": if nospace_text[0] == " ": nospace_text = nospace_text[1:] if nospace_text[-1] == " ": nospace_text = nospace_text[:-1] else: nospace_text = "�" print(nospace_text) if play == 1: print("") print("Playing...") for i in range(len(constant_text)): if constant_text[i] == ".": winsound.Beep(666, 222) if constant_text[i] == "-": winsound.Beep(666, 777) if constant_text[i] == " ": sleep(1.8) elif not text == "/help/" and not text == "/?/" or eng == 0: for i in range(0, len(text)): characters.append(text[i].upper()) i = 0 while i < len(characters): if characters[i].isalnum(): i += 1 elif characters[i] == " ": if i == 0 or characters[i-1] != " ": i += 1 else: characters.pop(i) else: i += 1 if characters[0] == " ": characters = characters[1:] if characters[-1] == " ": characters = characters[:-1] for i in range(len(characters)): if characters[i].capitalize() == " " or characters[i].capitalize() == "A" or characters[i].capitalize() == "B" or characters[i].capitalize() == "C" or characters[i].capitalize() == "D" or characters[i].capitalize() == "E" or characters[i].capitalize() == "F" or characters[i].capitalize() == "G" or characters[i].capitalize() == "H" or characters[i].capitalize() == "I" or characters[i].capitalize() == "J" or characters[i].capitalize() == "K" or characters[i].capitalize() == "L" or characters[i].capitalize() == "M" or characters[i].capitalize() == "N" or characters[i].capitalize() == "O" or characters[i].capitalize() == "P" or characters[i].capitalize() == "Q" or characters[i].capitalize() == "R" or characters[i].capitalize() == "S" or characters[i].capitalize() == "T" or characters[i].capitalize() == "U" or characters[i].capitalize() == "V" or characters[i].capitalize() == "W" or characters[i].capitalize() == "X" or characters[i].capitalize() == "Y" or characters[i].capitalize() == "Z" or characters[i] == "1" or characters[i] == "2" or characters[i] == "3" or characters[i] == "4" or characters[i] == "5" or characters[i] == "6" or characters[i] == "7" or characters[i] == "8" or characters[i] == "9" or characters[i] == "0" or characters[i] == "?" or characters[i] == "!" or characters[i] == "." or characters[i] == "," or characters[i] == ";" or characters[i] == ":" or characters[i] == "+" or characters[i] == "-" or characters[i] == "/" or characters[i] == "=" or characters[i] == "(" or characters[i] == ")" or characters[i] == "&" or characters[i] == "_" or characters[i] == "\"" or characters[i] == "$" or characters[i] == "@" or characters[i] == "¿" or characters[i] == "¡": if characters[i] == " ": characters[i] = "/" else: characters[i] = english_morse[characters[i]] else: characters[i] = "�" for i in range(len(characters)): print(characters[i], end=" ") print("")
Editor is loading...
Leave a Comment