【问题标题】:adding single space between characters and multiple spaces between words在字符之间添加单个空格,在单词之间添加多个空格
【发布时间】:2021-03-31 14:44:20
【问题描述】:

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

【问题讨论】:

  • text_input 字符串中的单词如何分隔?
  • 你能展示一下 encodeChartoMorse 函数吗?
  • 我已经添加了上面的功能
  • 好吧,也许你已经注意到单词之间总是出现某个字符?也许您可以想出一些可以“翻译”为莫尔斯电码输出的东西,以创建所需的间距?

标签: python


【解决方案1】:

与许多其他编程语言不同,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")

输出:

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

【讨论】:

  • 这是有用的技术,但您应该关注解决报告问题的部分并解释其工作原理(使用.split())。这不是 codereview.SE。
  • 我没学过字典,所以看不懂。我需要嵌套的 for 循环吗?
  • 使用字典是一个很好的选择,而不是必须的,因为它简化了代码,但是您原来的 char-to-morse 函数是一个完全可用的替代方案。嵌套的 for 循环很重要,因为您要遍历消息中的每个单词,并且对于每个单词,您需要遍历每个字母以对其进行编码。
猜你喜欢
  • 2011-04-28
  • 1970-01-01
  • 2021-07-22
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多