在字符之间添加单个空格,在单词之间添加多个空格

2024-09-30 14:37:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串到莫尔斯函数,我知道我有它,莫尔斯字符之间有一个空格,如果有多个单词,仍然有一个空格。如何在每个单词之间保留4个空格,并在字符之间保留单个空格?我已经添加了encodechartomose函数

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

Tags: 函数字符串textinputmorsereturndef字符
1条回答
网友
1楼 · 发布于 2024-09-30 14:37:32

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

编辑:根据下面的评论,当我在上面提到“循环文本中的单词”时,问一下这是如何实现的是一个公平的问题?在我的示例中,我使用Python的split()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")

输出:

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

相关问题 更多 >