Я пытаюсь выяснить, как сделать мою программу паузой. Метод 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] .-- '-
Вы должны добавить, что дополнительные данные в тексте вопроса, а не в качестве комментария. – manecosta
_ «Моя проблема в том, что я не могу заставить [lpause] и [wpause] вести себя». _ <- Это очень неопределенная информация. Можете ли вы подробно описать желаемое и фактическое поведение? – Carsten
Да, [lpause] предполагается приостановить, возможно, на 1 секунду, а затем цикл for должен продолжить выполнение. и - звуковые сигналы. Затем он должен приостановить слово [wpause] примерно на 3 секунды, чтобы отличить между 2. Однако на данный момент у меня есть lpause и wpause, работающие в одно и то же время 1 секунда .. кроме того, что они приостанавливают для каждой отдельной буквы в фраза [lpause] .. Например ..- [пауза l пауза p приостановка паузы u пауза s пауза e пауза. Я хочу, чтобы он принимал [lpause] в целом и делал паузу вместо буквы по букве .. так что если он читает паузу [lpause], то он продолжает – Crunch