将列表中的句子翻译成字典中的莫尔斯码

时间:2016-11-11 11:25:51

标签: python list python-3.x dictionary

如何通过词典将我已经放入列表中的句子翻译为莫尔斯代码?代码:

    print("Write your sentence:")
    running = True
while running == True:
    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" : "--..",
    "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" : "--..", 
    "0" : "-----", 
    "1" : ".----", 
    "2" : "..---", 
    "3" : "...--", 
    "4" : "....-", 
    "5" : ".....", 
    "6" : "-....", 
    "7" : "--...", 
    "8" : "---..", 
    "9" : "----.", 
    "." : ".-.-.-", 
    "," : "--..--",
    "" : "No valid input.",
    " " : " " 
    }
    eingabe = input()

    liste = list(eingabe)
    print(liste)

    for str in liste:
        print(morsecode[liste])

3 个答案:

答案 0 :(得分:1)

要做到这一点,你不需要做一个清单。将最后一行更改为:

eingabe = input()
for char in eingabe:
    print(morsecode[char])

答案 1 :(得分:1)

这将循环一遍又一遍地将句子转换为莫尔斯代码

while True:
    string = input("Input a sentence: ")

    for char in string.upper():
        if char in morse:
            print(morse[char])
        else:
            print(char)

并且没有必要在morsecode字典中同时包含大写和小写字母。即:

morse = {
    "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" : "--..",
    "0" : "-----", 
    "1" : ".----", 
    "2" : "..---", 
    "3" : "...--", 
    "4" : "....-", 
    "5" : ".....", 
    "6" : "-....", 
    "7" : "--...", 
    "8" : "---..", 
    "9" : "----.", 
    "." : ".-.-.-", 
    "," : "--..--",
}

答案 2 :(得分:0)

您绝对不需要while循环,如果您这样做(多次执行),则无需重新定义每次迭代的映射。

除此之外,当您传递其元素时,您应该将整个列表传递给字典(您应该将i命名为str {{1} }})。由于列表不能用作字典键(由于它们不可清除),因此这是一个错误。

简而言之:

print("Write your sentence:")
morsecode = # as defined 
liste = list(input())
for i in liste:
    print(morsecode[i])

此处不需要列表,因为字符串是您可以迭代的序列,但是,这不是一个太大的问题。

就足够了。如果你需要不断获得输入,那么需要while循环,但你还需要一个循环为break的条件;不要让它继续执行。