Python 英文程序函数调用

Python 英文程序函数调用,python,Python,这是一个将摩尔斯电码转换成英文文本的程序 我把摩尔斯电码转换成英语有困难。我得到的输出是星号。我有另一个函数,可以把字符串转换成莫尔斯。似乎decodeMorsetoChar(text\u input)函数没有将转换后的莫尔斯电码转换回英语 def encodestringtomose(文本输入): 长度=长度(文本输入) 字符串=“” 对于范围内的x(0,长度): char=encodeChartOMOSE(文本输入[x]) 字符串=字符串+“”+字符 返回字符串 def decodeMors

这是一个将摩尔斯电码转换成英文文本的程序

我把摩尔斯电码转换成英语有困难。我得到的输出是星号。我有另一个函数,可以把字符串转换成莫尔斯。似乎
decodeMorsetoChar(text\u input)
函数没有将转换后的莫尔斯电码转换回英语

def encodestringtomose(文本输入):
长度=长度(文本输入)
字符串=“”
对于范围内的x(0,长度):
char=encodeChartOMOSE(文本输入[x])
字符串=字符串+“”+字符
返回字符串
def decodeMorsetoChar(文本输入):
morse=encodeStringtoMorse(text\u input.upper())
如果莫尔斯==“-”:
morse=“A”
elif morse==“-…”:
morse=“B”
elif morse==“-。-”:
morse=“C”
elif morse==“-…”:
morse=“D”
elif morse==”:
莫尔斯
elif morse==“.-”:
morse=“F”
elif morse==“-”:
morse=“G”
elif morse==“…”:
morse=“H”
elif morse==“.”:
morse=“I”
埃利夫·莫尔斯==“-”:
morse=“J”
elif morse==“-.-”:
morse=“K”
elif morse==“-…”:
莫尔斯
elif morse==“--”:
morse=“M”
elif morse==“-”:
morse=“N”
埃利夫·莫尔斯==”--“:
莫尔斯=“O”
elif morse==“--.”
morse=“P”
elif morse==“--.-”:
morse=“Q”
elif morse==“-”:
莫尔斯=“R”
elif morse==“…”:
morse=“S”
elif morse==“-”:
morse=“T”
elif morse==“.-”:
morse=“U”
elif morse==“…-”:
morse=“V”
埃利夫·莫尔斯==“-”:
morse=“W”
elif morse==“-…-”:
morse=“X”
elif morse==“-.-”:
morse=“Y”
elif morse==“--…”
morse=“Z”
其他:
莫尔斯='*'
返回莫尔斯
def decodeMorsetoString(文本输入):
listt=''
morsecode=解码MORSETOCHAR(文本输入)
对于文本中的morse_input.split():
morsecode=解码MORSETOCHAR(文本输入)
listt=listt+莫尔斯电码
返回列表
试试这个:

morseAlphabet = {
'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': "--..",
'Default': "*"
}


def decodeMorsetoChar(text_input):
    list_chars = list(text_input)
    morse_string = ''
    for char in list_chars:
        try:
            morse_string += morseAlphabet[char.upper()]
        except:
            morse_string += "*"

    return morse_string


def decodeMorsetoString(morse_input):
    list_morse = list(morse_input.split('*'))
    string_from_morse = ''
    # for morse in list_morse:
        # for key in morseAlphabet:
        #     if morseAlphabet[key] == morse:
        #         string_from_morse += key
    alphabet_morse = {v: k for k, v in morseAlphabet.items()}

    for code in list_morse:
        string_from_morse += alphabet_morse[code]

    return string_from_morse


decodeMorsetoChar("Hello world")
decodeMorsetoString("-..-*--..")

以下是我对Jalen答案的重构:

morse_alphabet = {
    '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': "--..",
}
alphabet_morse = {v: k for k, v in morse_alphabet.items()}


def string_to_morse(text):
    return ''.join([morse_alphabet.get(c.upper(), '*') for c in text])


def morse_to_string(morse):
    return ''.join([alphabet_morse[m] for m in morse.split('*')])


string_to_morse("Hello world")
morse_to_string("-..-*--..")

建议:创建一个映射dict,其中每个键都是morse字符串,每个值都是大写字母,以便解码。然后,您可以使用相同的dict,但反转键和值进行编码。这将使您的代码更干净。然后,要解码,您需要执行res=mapping.get(str_value,*)我还没有了解字典,我们正在进一步了解字典,但在那之后,请执行;-)此外,python函数/方法都应该使用snake case,而不是您正在执行的传递整个文本的
morsecode=decodeMorsetoChar(text\u input)
。但是你在一个循环中这样做,它应该是
morsecode=decodeMorsetoChar(morse)
为什么你要遍历dict的每个键来找到一个匹配的morse,而不是从dict生成另一个dict,其中key=value,value=key;-)然后你可以做dict.get(morse,)这很简单:
alphabet\u morse={v:k代表k,v代表morse\u alphabet.items()}
thx,但我不应该使用字典这是一个很好的答案,可以用来重构代码,但这将使它停留在代码审查级别。我对你的答案投了更高的票,但可能会对其进行编辑,以包括你实际修改/唱的内容:)