I've been trying to make a python morse code translator and am over complicating it, I would like to continue on the path that I am going on for the morse code translator but I ran into a problem.
Traceback (most recent call last):
File "python", line 114, in <module>
NameError: name 'firstletter' is not defined
I couldn't figure out why this variable was not being defined. Here's the code
wordinput = input("What do you want to convert")
word = str(wordinput.upper)
if word[0] == 'A':
firstletter = ".-"
elif word[0] == "B":
firstletter = "-..."
elif word[0] == 'C':
firstletter = '-.-.'
elif word[0] == 'D':
firstletter = '-..'
elif word[0] == 'E':
firstletter = '.'
elif word[0] == 'F':
firstletter = '..-.'
elif word[0] == 'G':
firstletter = '--.'
elif word[0] == "H":
firstletter = '....'
elif word[0] == "I":
firstletter = '..'
elif word[0] == 'J':
firstletter = ".."
elif word[0] == 'K':
firstletter = '-.-'
elif word[0] == 'L':
firstletter = '.-..'
elif word[0] == 'M':
firstletter = '--'
elif word[0] == 'N':
firstletter = '-.'
elif word[0] == 'O':
firstletter = '---'
elif word[0] == 'P':
firstletter = '.--.'
elif word[0] == 'Q':
firstletter = '--.-'
elif word[0] == 'R':
firstletter = '.-.'
elif word[0] == 'S':
firstletter = '...'
elif word[0] == 'T':
firstletter = '-'
elif word[0] == 'U':
firstletter = '..-'
elif word[0] == 'V':
firstletter = '...-'
elif word[0] == 'W':
firstletter = '.--'
elif word[0] == 'X':
firstletter = '-..-'
elif word[0] == 'Y':
firstletter = '-.--'
elif word[0] == 'Z':
firstletter = '--..'
if word[1] == 'A':
secondletter = ".-"
elif word[1] == "B":
secondletter = "-..."
elif word[1] == 'C':
secondletter = '-.-.'
elif word[1] == 'D':
secondletter = '-..'
elif word[1] == 'E':
secondletter = '.'
elif word[1] == 'F':
secondletter = '..-.'
elif word[1] == 'G':
secondletter = '--.'
elif word[1] == "H":
secondletter = '....'
elif word[1] == "I":
secondletter = '..'
elif word[1] == 'J':
secondletter = ".."
elif word[1] == 'K':
secondletter = '-.-'
elif word[1] == 'L':
secondletter = '.-..'
elif word[1] == 'M':
secondletter = '--'
elif word[1] == 'N':
secondletter = '-.'
elif word[1] == 'O':
secondletter = '---'
elif word[1] == 'P':
secondletter = '.--.'
elif word[1] == 'Q':
secondletter = '--.-'
elif word[1] == 'R':
secondletter = '.-.'
elif word[1] == 'S':
secondletter = '...'
elif word[1] == 'T':
secondletter = '-'
elif word[1] == 'U':
secondletter = '..-'
elif word[1] == 'V':
secondletter = '...-'
elif word[1] == 'W':
secondletter = '.--'
elif word[1] == 'X':
secondletter = '-..-'
elif word[1] == 'Y':
secondletter = '-.--'
elif word[1] == 'Z':
secondletter = '--..'
print(firstletter + secondletter)
import os
os.system("pause")
Your problem is with the assignment:
You failed to call the function upper; instead, you assigned the function descriptor to word. When you convert that descriptor to a string, the value for word is
Thus, regardless of the input, you're trying to convert '<' and 'b'; the first one has no coverage in your list, so your program crashes.
Change the line to call the routine:
FURTHER WORK
IMPROVEMENTS
Use a reference dictionary:
The add a loop to go through the string and convert the individual letters:
Does that save your finger muscles?