2014-01-25 4 views
0

저는 문자, 숫자 및 문자를 가져 와서 모스 코드로 변환하는 프로그램을 파이썬으로 작성했습니다. 이 프로그램은 제 나무 딸기 파이를 위해 작성되었으며 LED 플래시를 켜고 끕니다. 문제는 사용자가 각 문자를 입력 한 후 Enter 키를 눌러야하는 순간입니다. 사용자가 전체 단어와 문장을 입력 할 수 있도록 만들고 싶습니다. 그런 다음 모스 코드에서 문장이 튀어 나오지 만 단어를 어기는 방법을 모르겠습니다. 여기 어떻게 파이썬에서 단어를 분해합니까?

아래의 코드는, 당신이 그것을 이해하고 나를 도울 수 있기를 바랍니다 있습니다 :

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() 
+2

r 여기에 'elif'를 많이 쓰는 것보다 사전을 사용하는 것. 'd '(문자) :'(점, 대시), 'b': [대쉬, 점, 점, 점], ...} – jonrsharpe

답변

0

, 당신의 이름 변수를 가지고 루프 각 단어의 길이를을 실행을 통해 각 문자를 실행하여 if 루프?

1

문자열은 기본적으로 문자 목록이므로 각 문자를 구분하기 위해 문자열을 반복 할 수 있습니다.

>>> 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'] 

또는 지능형리스트로 :

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

마지막 단지에 의해 호출 :

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

는 또한 내가 모스 신호로 각 문자를 변환하기 위해 별도의 기능을 작성합니다

>>> for x in name: char_to_morse(x) 
관련 문제