首页 > 解决方案 > 在字符之间添加单个空格,在单词之间添加多个空格

问题描述

我有一个字符串到莫尔斯函数,知道我有它,莫尔斯字符之间有一个空格,如果有多个单词仍然会有一个空格。如何在每个单词之间留 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

标签: python

解决方案


与许多其他编程语言不同,Python 允许您循环遍历单词中字母列表中的元素,而无需使用索引。在这种情况下,您需要遍历文本中的单词(在编码单词之间放置 4 个空格),并且对于每个单词,遍历每个字母(在编码字母之间放置 1 个空格)。最后,Python 字典是将键(例如字母)映射到值(例如摩尔斯电码)的有效方法,而无需求助于 if-then-else 逻辑。

编辑:根据下面的评论,当我在上面说“遍历文本中的单词”时,一个公平的问题是问这是如何完成的?split()在我的示例中,我使用 Python 的string 方法将文本字符串分解为单独的单词。它尝试通过查找空格(默认情况下)来分割字符串,从而从字符串中创建子字符串列表。结果列表为我们提供了一种方便的方法来循环文本中的单词,作为编码过程的一部分。

例子:

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")

输出:

- .... .      --.- ..- .. -.-. -.-     -... .-. --- .-- -.     ..-. --- -..-     .--- ..- -- .--. ...     --- ...- . .-.     - .... .     .-.. .- --.. -.--     -.. --- --.

推荐阅读