Python 摩尔斯电码暂停
Python morse code pausing
我正在想办法让我的程序暂停。 encodeMesssage
方法工作正常,并将每个字母转换为对应的摩尔斯电码字母。一旦它到达一个字母的末尾,它就会给出一个字母停顿 [lpause]
。然后在完成一个完整的单词后,它会给出一个单词停顿 [wpause]
。
我的第二种方法应该是用风声模块将这条消息变成实际的声音。哔哔声工作正常,我的问题是我似乎无法让 [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].--' –
我认为您可能应该为字母和单词的停顿使用一个字符的标识符,因为您使用每个字符的检查来确定发出什么声音。我已将暂停标识符替换为 '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
我正在想办法让我的程序暂停。 encodeMesssage
方法工作正常,并将每个字母转换为对应的摩尔斯电码字母。一旦它到达一个字母的末尾,它就会给出一个字母停顿 [lpause]
。然后在完成一个完整的单词后,它会给出一个单词停顿 [wpause]
。
我的第二种方法应该是用风声模块将这条消息变成实际的声音。哔哔声工作正常,我的问题是我似乎无法让 [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].--' –
我认为您可能应该为字母和单词的停顿使用一个字符的标识符,因为您使用每个字符的检查来确定发出什么声音。我已将暂停标识符替换为 '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