user3235097
user3235097

Reputation: 1

How do I break down words in python?

I have written a program in python that takes in letters, numbers and characters then converts them to Morse code. The program was written for my raspberry pi and makes an LED flash on and off. The trouble is at the moment the user has to press enter after typing each character. I would like to make it so that the user can type in whole words and sentences then have flashed out in Morse code but I;m not sure how to break the words down.

Here is the code below, I hope that you can make sense of it and help me:

print'Welcome to the Morse translator'
print'Enter the characters one by one pressing enter each time' 
print'Enter the GPIO pin number that you would like to use'  
pin = int (input())
while True:
   name = raw_input("Enter a letter, number or character to see it in morse:      ")
   print name

   import RPi.GPIO as gpio
   import time

   gpio.setmode(gpio.BCM)
   gpio.setup(pin, gpio.OUT)

   def dot():
      gpio.output(pin, gpio.HIGH)
      time.sleep(0.25)
      gpio.output(pin, gpio.LOW)
      time.sleep(0.25)

   def dash():
      gpio.output(pin, gpio.HIGH)
      time.sleep(0.75)
      gpio.output(pin, gpio.LOW)
      time.sleep(0.25)

   def e():
      time.sleep(0.75)



   if (name=='a'):
      dot()
      dash()
      e()
   elif (name=='b'):
      dash()
      dot()
      dot()
      dot()
      e()
   elif (name=='c'):
      dash()
      dot()
      dash()
      dot()
      e()
   elif (name=='d'):
      dash()
      dot()
      dot()
      e()
   elif (name=='e'):
      dot()
      e()
   elif (name=='f'):
      dot()
      dot()
      dash()
      dot()
      e()
   elif (name=='g'):
      dash()
      dash()
      dot()
      e()
   elif (name=='h'):
      dot()
      dot()
      dot()
      dot()
      e()
   elif (name=='i'):
      dot()
      dot()
      e()
   elif (name=='j'):
      dot()
      dash()
      dash()
      dash()
      e()
   elif (name=='k'):
      dash()
      dot()
      dash()
      e()
   elif (name=='l'):
      dot()
      dash()
      dot()
      dot()
      e()
   elif (name=='m'):
      dash()
      dash()
      e()
   elif (name=='n'):
      dash()
      dot()
      e()
   elif (name=='o'):
      dash()
      dash()
      dash()
      e()
   elif (name=='p'):
      dot()
      dash()
      dash()
      dot()
      e()
   elif (name=='q'):
      dash()
      dash()
      dot()
      dash()
      e()
   elif (name=='r'):
      dot()
      dash()
      dot()
      e()
   elif (name=='s'):
      dot()
      dot()
      dot()
      e()
   elif (name=='t'):
      dash()
      e()
   elif (name=='u'):
      dot()
      dot()
      dash()
      e()
   elif (name=='v'):
      dot()
      dot()
      dash()
      e()
   elif (name=='w'):
      dot()
      dash()
      dash()
      e()
   elif (name=='x'):
      dash()
      dot()
      dot()
      dash()
      e()
   elif (name=='y'):
      dash()
      dot()
      dash()
      dash()
      e()
   elif (name=='z'):
      dash()
      dash()
      dot()
      dot()
      e()
   elif (name=='1'):
      dot()
      dash()
      dash()
      dash()
      dash()
      e()
   elif (name=='2'):
      dot()
      dot()
      dash()
      dash()
      dash()
      e()
   elif (name=='3'):
      dot()
      dot()
      dot()
      dash()
      dash()
      e()
   elif (name=='4'):
      dot()
      dot()
      dot()
      dot()
      dash()
      e()
   elif (name=='5'):
      dot()
      dot()
      dot()
      dot()
      dot()
      e()
   elif (name=='6'):
      dash()
      dot()
      dot()
      dot()
      dot()
      e()
   elif (name=='7'):
      dash()
      dash()
      dot()
      dot()
      dot()
      e()
   elif (name=='8'):
      dash()
      dash()
      dash()
      dot()
      dot()
      e()
   elif (name=='9'):
      dash()
      dash()
      dash()
      dash()
      dot()
      e()
   elif (name=='0'):
      dash()
      dash()
      dash()
      dash()
      dash()
      e()   
   elif (name=='.'):
      dot()
      dash()
      dot()
      dash()
      dot()
      dash()
      e()
   elif (name==','):
      dash()
      dash()
      dot()
      dot()
      dash()
      dash()
      e()
   elif (name==':'):
      dash()
      dash()
      dash()
      dot()
      dot()
      dot()
      e()
   elif (name=='?'):
      dot()
      dot()
      dash()
      dash()
      dot()
      dot()
      e()
   elif (name=='-'):
      dash()
      dot()
      dot()
      dot()
      dot()
      dash()
      e()
   elif (name=='/'):
      dash()
      dot()
      dot()
      dash()
      dot()
      e()
   elif (name=='(' or ')'):
      dash()
      dot()
      dash()
      dash()
      dot()
      dash()
      e()
   elif (name=='@'):
      dot()
      dash()
      dash()
      dot()
      dash()
      dot()
      e()
   elif (name=='='):
      dash()
      dot()
      dot()
      dot()
      dash()
      e()
   elif (name==' '):
      e()
      e()
      e()
      e()
      e()
      e()
      e()
   else:
      print'This character is not supported'

   gpio.cleanup()

Upvotes: 0

Views: 462

Answers (2)

greole
greole

Reputation: 4771

Strings are basically lists of characters, thus you can iterate over them to separate each character.

>>> name = 'This is a test'
>>> c = list()
>>> for x in name:
       c.append(x)
>>> print c
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't']

Or as list comprehension:

>>> c = [x for x in name ]
>>> print c
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't']

furthermore i would write a separate function to convert each character to a morse signal:

>>> def char_to_morse(char):
        signals = {'a':[dash, dot] ...}
        for f in signals: f()

and finally just call it by:

>>> for x in name: char_to_morse(x)

Upvotes: 1

monebarrow
monebarrow

Reputation: 21

Take your name variable, run a for loop the length of each word, run each character through your if loops?

Upvotes: 0

Related Questions