Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python莫尔斯电码暂停_Python_Morse Code - Fatal编程技术网

Python莫尔斯电码暂停

Python莫尔斯电码暂停,python,morse-code,Python,Morse Code,我正在想办法让我的程序暂停。该方法工作正常,将每个字母转换为对应的莫尔斯电码字母。当它到达一个字母的末尾时,它会使字母暂停[lpause]。然后在完成一个完整的单词后,它将给出一个单词暂停[wpause] 我的第二种方法是通过windsound模块将此消息转换为实际声音。蜂鸣音工作正常,我的问题是我似乎无法让[lpause]和[wpause]正常工作 莫尔斯电码=,,,'D':,,,,'D':,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

我正在想办法让我的程序暂停。该方法工作正常,将每个字母转换为对应的莫尔斯电码字母。当它到达一个字母的末尾时,它会使字母暂停[lpause]。然后在完成一个完整的单词后,它将给出一个单词暂停[wpause]

我的第二种方法是通过windsound模块将此消息转换为实际声音。蜂鸣音工作正常,我的问题是我似乎无法让[lpause]和[wpause]正常工作

莫尔斯电码=,,,'D':,,,,'D':,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,…-'、'W':'.-'、'X':'-.-'、'Y':'-.-'、'Z':'-.-'、'1':'-'、'2':'、'3':'、'4':'、'5':'、'6':'-.、'7':'、'8':'--..','9':'-,'0':'-'}

下面是encodeMessage的输出示例
....[lpause].[lpause].-[wpause].[lpause]-[lpause].-[wpause].-[lpause]-‌​-[lpause]…-[wpause]。-[wpause]-…[lpause]。-[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

您应该在问题文本中添加额外的信息,而不是作为注释。我的问题是我似乎无法让[lpause]和[wpause]正常工作。是的,[lpause]应该暂停1秒,然后for循环应该继续执行。并且-哔哔声。然后它应该暂停一个字[wpause]大约3秒钟来区分2。但是,目前我让lpause和wpause同时工作1秒钟。除了它们暂停短语[lpause]中的每个字母之外。例如-[pause l pause p pause a pause u pause s pause e e pause。我希望它需要[lpause]作为一个整体,让它停下来,而不是一个字母一个字母地停下来。因此,如果它读[lpause]pause,那么它将继续谢谢你,这对我来说更有意义。我的导师包括了长短语,它们对我来说有点荒谬。谢谢你的帮助!
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