2015-01-25 4 views
1

Я пытаюсь выяснить, как сделать мою программу паузой. Метод encodeMesssage работает нормально и превращает каждую букву в соответствующую кодовую букву Морзе. Как только он достигнет конца буквы, он поворачивается, дает паузу в письме [lpause]. Затем, после завершения полного слова, он даст слово паузу [wpause].Python morse code pausing

Мой второй способ должен превратить это сообщение в фактические звуки с помощью модуля windsound. Звуковые сигналы работают нормально, моя проблема в том, что я не могу заставить [lpause] и [wpause] вести себя.

morseCode = {'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':'-----' }

def encodeMessage(m): 
    message = m.upper().strip() 
    encodedMessage ='' 
    isInWord = False 

    for ch in message: 
     if isInWord: 
      if ch in morseCode: 
       encodedMessage += '[lpause]'+ morseCode[ch] 
      else: 
       encodedMessage += '[wpause]' 
       isInWord = False 
     else: # not in word 
      if ch in morseCode: 
       encodedMessage += morseCode[ch] 
       isInWord = True 
      else: 
       pass # nothing to do 
    return encodedMessage 

def sendMoreCodedMessage(message): 
    for ch in message: 
     if ch == '.': 
      winsound.Beep(200, 100) 
     elif ch == '-': 
      winsound.Beep(370, 100) 
     else: 
      time.sleep(1) 
return None 

вот пример выхода из encodeMessage .... [lpause] [lpause] -.-- [wpause] -.. [Lpause] --- [lpause ] .-- [wpause] -.-- [lpause] - - [lpause] ..- [wpause] .- [wpause] - .. [lpause] .. [lpause] --- [lpause ] .-- [lpause] -. [wpau se] -.-. [lpause] --- [lpause] .-- '-

+0

Вы должны добавить, что дополнительные данные в тексте вопроса, а не в качестве комментария. – manecosta

+0

_ «Моя проблема в том, что я не могу заставить [lpause] и [wpause] вести себя». _ <- Это очень неопределенная информация. Можете ли вы подробно описать желаемое и фактическое поведение? – Carsten

+0

Да, [lpause] предполагается приостановить, возможно, на 1 секунду, а затем цикл for должен продолжить выполнение. и - звуковые сигналы. Затем он должен приостановить слово [wpause] примерно на 3 секунды, чтобы отличить между 2. Однако на данный момент у меня есть lpause и wpause, работающие в одно и то же время 1 секунда .. кроме того, что они приостанавливают для каждой отдельной буквы в фраза [lpause] .. Например ..- [пауза l пауза p приостановка паузы u пауза s пауза e пауза. Я хочу, чтобы он принимал [lpause] в целом и делал паузу вместо буквы по букве .. так что если он читает паузу [lpause], то он продолжает – Crunch

ответ

0

Я думаю, вы, вероятно, должны использовать односимвольные идентификаторы для своего письма и слово паузы, так как вы используете per-character проверки, чтобы выяснить, какой звук сделать. Я заменил идентификаторы паузы с «л» и «ш», и отрегулировать вашу функцию SendMoreCodedMessage соответственно:

def encodeMessage(m): 
    message = m.upper().strip() 
    encodedMessage ='' 
    isInWord = False 

    for ch in message: 
     if isInWord: 
      if ch in morseCode: 
       encodedMessage += 'l'+ morseCode[ch] 
      else: 
       encodedMessage += 'w' 
       isInWord = False 
     else: # not in word 
      if ch in morseCode: 
       encodedMessage += morseCode[ch] 
       isInWord = True 
      else: 
       pass # nothing to do 
    return encodedMessage 

def sendMoreCodedMessage(message): 
    for ch in message: 
     if ch == '.': 
      winsound.Beep(200, 100) 
     elif ch == '-': 
      winsound.Beep(370, 100) 
     elif ch == 'w': 
      time.sleep(3) 
     elif ch == 'l': 
      time.sleep(1) 

    return None 
+0

Спасибо, это имеет больше смысла для меня. Мой инструктор включил длинные фразы, и они были для меня совершенно бессмысленными. Спасибо за помощь! – Crunch