2015-01-25 4 views
1

내 프로그램을 일시 중지하는 방법을 알아 내려고하고 있습니다. 방법 encodeMesssage은 잘 작동하고 각 문자를 해당 모스 부호로 바꿉니다. 편지 끝에 도달하면 [lpause] 편지가 일시 중지됩니다. 그런 다음 완전한 단어를 완성하면 [wpause] 단어를 일시 중지합니다.파이썬 모스 코드 일시 중지

두 번째 방법은이 메시지를 windsound 모듈을 사용하여 실제 소리로 바꾸기로되어 있습니다. 경고음이 정상적으로 작동하고 있는데, 제 문제는 [lpause][wpause]이 작동하지 않는 것입니다. .. lpause] --- [lpause - 여기

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 

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':'-----' }

encodeMessage ... [lpause] lpause] -.-- [wpause]로부터의 출력의 예는 ] - [wpause] ---- [lpause] - - [lpause] ..- [wpause] - [lpause] - .. [lpause] --- [lpause] ] - [lpause] -. [lpause] --- [lpause]. - '-

+0

당신은하지 주석으로, 문제의 텍스트에서 여분의 정보를 추가해야합니다. – manecosta

+0

_ "내 문제는 [lpause]와 [wpause]가 행동하지 못하는 것입니다."_ <- 이것은 매우 모호한 정보입니다. 원하는 행동과 실제 행동을 자세하게 설명 할 수 있습니까? – Carsten

+0

예, [lpause]는 1 초 동안 일시 중지 된 다음 for 루프가 계속 실행되어야합니다. 그리고 - 경고음. 그런 다음 두 단어 사이를 구별하기 위해 약 3 초 동안 단어 [wpause]를 일시 중지해야합니다. 그러나 지금은 1 초 동안 같은 시간에 작업을 시작하고 일시 중지했습니다. 예를 들어, ..- 일시 중지 l 일시 중지 p 일시 중지 일시 중지 일시 중지 일시 정지 일시 중지. 전체적으로 [lpause]를 가져 와서 편지 대신 편지로 멈추게하고 싶습니다. [lpause]를 읽으면 잠시 멈추고 계속됩니다. – Crunch

답변

0

나는 당신의 편지에 1 문자의 식별자를 사용해야한다고 생각한다. 단어가 멈추는 이유는 문자 단위 검사를 사용하여 어떤 소리를 내는지 파악하기 때문입니다. 나는 'L'과 'w'와 일시 정지 식별자를 교체하고 그에 따라 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