我有一个莫尔斯函数的字符串,我知道我有它,莫尔斯字符之间有一个空格,如果有多个单词,仍然会有一个空格。如何在每个单词之间做 4 个空格并在字符之间保留一个空格?我添加了 encodeChartoMorse 函数
def encodeChartoMorse(text_input):
char=text_input.upper()
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= '*'
return char
def encodeStringtoMorse(text_input):
length=len(text_input)
morse=''
for x in range(0, length):
char= encodeChartoMorse(text_input[x])
morse=morse + ' ' + char
return morse
答案 0 :(得分:2)
与许多其他编程语言不同,Python 允许您循环遍历单词中字母列表中的元素,而无需使用索引。在这种情况下,您需要遍历文本中的单词(在编码的单词之间放置 4 个空格),并且对于每个单词,遍历每个字母(在编码的字母之间放置 1 个空格)。最后,Python 字典是将键(例如字母)映射到值(例如莫尔斯电码)的有效方法,而无需求助于 if-then-else 逻辑。
编辑:根据下面的评论,当我在上面说“遍历文本中的单词”时,这是一个公平的问题,请问这是如何完成的?在我的示例中,我使用 Python 的 split()
字符串方法将文本字符串拆分为单独的单词。它尝试通过查找空格(默认情况下)来分割字符串来从字符串创建子字符串列表。结果列表为我们提供了一种方便的方法来循环文本中的单词作为编码过程的一部分。
示例:
letter_to_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": "--..",
}
def encode_text_to_morse(text):
text_list = text.upper().split()
for word in text_list:
morse_word = []
for letter in word:
morse_word.append(letter_to_morse.get(letter, "*"))
char_space = " "
word_space = " "
print(char_space.join(morse_word), end=word_space)
encode_text_to_morse("The quick brown fox jumps over the lazy dog")
输出:
- .... . --.- ..- .. -.-. -.- -... .-. --- .-- -. ..-. --- -..- .--- ..- -- .--. ... --- ...- . .-. - .... . .-.. .- --.. -.-- -.. --- --.