问题描述
这个程序将英语打印为莫尔斯电码,然后我试图在下面的主程序中反转莫尔斯电码。我提供了一个示例输入,其中包含我得到和期望的输出。基本上,我不希望每个 .
/-
被反转,我只需要最后一个莫尔斯字符是第一个,第四个是第二个,等等。
normal morse output: .... . .-.. .-.. ---
reverse output I get: --- ..-. ..-. . ....
expected output reverse: --- .-.. .-.. . ....
def encodeChartoMorse(text_input):
all_caps=text_input.upper()
length=len(all_caps)
string=''
for letter in range(0,length):
char = all_caps[letter]
if (char == "A"):
char= ".-"
elif (char == "B"):
char= "-..."
elif (char== "C"):
char= "-.-."
elif (char == "D"):
char= "-.."
elif (char == "E"):
char= "."
elif (char == "F"):
char= "..-."
elif (char == "G"):
char= "--."
elif (char == "H"):
char= "...."
elif (char == "I"):
char= ".."
elif (char == "J"):
char= ".---"
elif (char == "K"):
char= "-.-"
elif (char == "L"):
char= ".-.."
elif (char == "M"):
char= "--"
elif (char == "N"):
char= "-."
elif (char == "O"):
char= "---"
elif (char == "P"):
char= ".--."
elif (char == "Q"):
char= " --.-"
elif (char == "R"):
char= ".-."
elif (char == "S"):
char= "..."
elif (char == "T"):
char= "-"
elif (char == "U"):
char= "..-"
elif (char == "V"):
char= "...-"
elif (char == "W"):
char= ".--"
elif (char == "X"):
char= "-..-"
elif (char == "Y"):
char= "-.--"
elif (char == "Z"):
char= "--.."
else:
char= '*'
string=string + ' ' + char
return string
def main():
##Put your main program here
text_input=str(input("Enter some text to convert to Morse code: "))
print (text_input.upper())
morse_code=encodeChartoMorse(text_input)
print(morse_code)
rev_morse=morse_code[::-1]
print(rev_morse)
main()
解决方法
要反转输出的每个块(即字符),您可以在空格上 str.split
以获得莫尔斯字符,然后反转该列表,然后再次使用空格 str.join
。
def reverse_morse(text):
return ' '.join(text.split()[::-1])
>>> reverse_morse('.... . .-.. .-.. ---')
'--- .-.. .-.. . ....'