Skip to content

Commit 8cf5970

Browse files
author
Harshit Kr Vishwakarma
committed
Added new python script, Morse code converter.
1 parent 6a4c64e commit 8cf5970

File tree

5 files changed

+189
-0
lines changed

5 files changed

+189
-0
lines changed

Morse-Code-Converter/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Morse code converter
2+
### What is Morse Code?
3+
Morse Code is a character encoding scheme that allows operators to send messages using a series of electrical pulses represented as short or long pulses, dots, and dashes in other words.
4+
5+
# Running this code
6+
One can run this code in terminal as well as in tkinter window.
7+
### Running in terminal.
8+
```bash
9+
python3 main.py
10+
```
11+
### Running through tkinter app window.
12+
```bash
13+
python3 converter_app.py
14+
```

Morse-Code-Converter/converter_app.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from tkinter import *
2+
from morse import MorseCode
3+
4+
# translate object
5+
translate = MorseCode()
6+
7+
# --------------------------------BUTTON FUNCTIONS------------------------------
8+
# Button function morse
9+
def code():
10+
text = e.get().strip()
11+
print(text)
12+
e.delete(0, END)
13+
text = translate.to_morse(text)
14+
e.insert(0, text)
15+
16+
# Button function english
17+
def decode():
18+
text = e.get().strip()
19+
print(text)
20+
e.delete(0, END)
21+
e.insert(0, translate.to_english(text))
22+
23+
# Button function clear
24+
def on_clear():
25+
e.delete(0, END)
26+
27+
# -----------------------------------UI SETUP-----------------------------------
28+
root = Tk()
29+
root.title("Morse Code Converter")
30+
31+
# Entry field
32+
e = Entry(root, width=35, borderwidth=5)
33+
e.grid(row=0, column=0, columnspan=3, pady=10, padx=10)
34+
e.focus()
35+
36+
code = Button(root, text="Code", command=code).grid(row=1, column=0)
37+
clear = Button(root, text="Clear", command=on_clear).grid(row=1, column=1)
38+
decode = Button(root, text="Decode", command=decode).grid(row=1, column=2)
39+
exit = Button(root, text="EXIT", command=root.quit).grid(row=2, column=0, columnspan=3)
40+
41+
root.mainloop()

Morse-Code-Converter/data.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
morse_code = {
2+
"a":".-",
3+
"b":"-...",
4+
"c":"-.-.",
5+
"d":"-..",
6+
"e":".",
7+
"f":"..-.",
8+
"g":"--.",
9+
"h":"....",
10+
"i":"..",
11+
"j":".---",
12+
"k":"-.-",
13+
"l":".-..",
14+
"m":"--",
15+
"n":"-.",
16+
"o":"---",
17+
"p":".--.",
18+
"q":"--.-",
19+
"r":".-.",
20+
"s":"...",
21+
"t":"-",
22+
"u":"..-",
23+
"v":"...-",
24+
"w":".--",
25+
"x":"-..-",
26+
"y":"-.--",
27+
"z":"--..",
28+
"1":".----",
29+
"2":"..---",
30+
"3":"...--",
31+
"4":"....-",
32+
"5":".....",
33+
"6":"-....",
34+
"7":"--...",
35+
"8":"---..",
36+
"9":"----.",
37+
"0":"-----",
38+
".":".-.-.-",
39+
",":"--..--",
40+
"?":"..--..",
41+
"'":".----.",
42+
"!":"-.-.--",
43+
"/":"-..-.",
44+
"(":"-.--.",
45+
"&":".-...",
46+
":":"---...",
47+
";":"-.-.-.",
48+
"=":"-...-",
49+
"+":".-.-.",
50+
"-":"-....-",
51+
"_":"..--.-",
52+
"\"":".-..-.",
53+
"$":"...-..-",
54+
"@":".--.-.",
55+
"¿":"..-.-",
56+
"¡":"--...-"
57+
}

Morse-Code-Converter/main.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from morse import MorseCode
2+
3+
# Creating a traslate object using MorseCode class
4+
translate = MorseCode()
5+
6+
# Converting English to morse (encode)
7+
text = input("enter a message to convert to morse code: ")
8+
morse_code = translate.to_morse(text)
9+
print(morse_code)
10+
11+
#Converting Morse to english (decode)
12+
text = input("enter morse code to convert to actual message: ")
13+
english_text = translate.to_english(text)
14+
print(english_text)

Morse-Code-Converter/morse.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
from data import morse_code
2+
3+
class MorseCode:
4+
def __init__(self):
5+
self.in_morse = ""
6+
self.in_english = ""
7+
8+
def to_morse(self, sentence):
9+
'''
10+
Takes one required parameter sentence of type string and
11+
converts it into the equivalent morse code.
12+
'''
13+
self.in_morse = ""
14+
sentence = sentence.split(" ")
15+
# print(sentence)
16+
17+
morse_translation = []
18+
for word in sentence:
19+
# Converting each word to a list of characters
20+
word_ = list(word)
21+
22+
# Matching every character with morse code in data.py
23+
for letter in word_:
24+
morse_translation.append(morse_code[letter.lower()])
25+
26+
# Adding a forwars slash at end of each word except the last word
27+
if sentence.index(word) != len(sentence)-1:
28+
morse_translation.append("/")
29+
30+
# Joining the final list to make a string of morse code characters
31+
self.in_morse = " ".join(morse_translation)
32+
33+
return self.in_morse
34+
35+
def to_english(self, code_in_morse):
36+
'''
37+
Converts morse code to english takes one required parameter
38+
code_in_morse as a string
39+
'''
40+
self.in_english = ""
41+
# Checking if the entered code has "/" as seperator or not?
42+
if "/" in code_in_morse:
43+
code_list = code_in_morse.split(" / ")
44+
else:
45+
code_list = code_in_morse.split(" ")
46+
47+
# Creating a list for morse code to convert it later to english
48+
morse_list = []
49+
for code in code_list:
50+
code = code.split(" ")
51+
morse_list.append(code)
52+
53+
# Looping through the dictionary of morse code and replacing morse to letter
54+
for word in morse_list:
55+
for letter in word:
56+
for key, value in morse_code.items():
57+
if letter == value:
58+
self.in_english += key
59+
60+
# After each word concatinating the white space
61+
self.in_english += " "
62+
63+
return self.in_english

0 commit comments

Comments
 (0)