python - 在字符之间添加单个空格,在单词之间添加多个空格
问题描述
我有一个字符串到莫尔斯函数,知道我有它,莫尔斯字符之间有一个空格,如果有多个单词仍然会有一个空格。如何在每个单词之间留 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 允许您循环遍历单词中字母列表中的元素,而无需使用索引。在这种情况下,您需要遍历文本中的单词(在编码单词之间放置 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")
输出:
- .... . --.- ..- .. -.-. -.- -... .-. --- .-- -. ..-. --- -..- .--- ..- -- .--. ... --- ...- . .-. - .... . .-.. .- --.. -.-- -.. --- --.
推荐阅读
- apache-spark - dask 从 spark 读取镶木地板文件
- java - AnyLogic 需要 Java 基础知识吗?
- c - 为什么存储类称为类?
- react-native - 警告:道具类型失败:提供给“PadView”的道具“组件”无效
- javascript - 如何在某些 observable 中使用 combineLatest 和过滤器?
- c# - win2D CanvasControl DrawImage() 通过错误“对象已关闭”?
- vue.js - v-if 不适用于单个文件模板
- java - 我是 Java 新手,目前正在研究如下模型。我在这里得到一个空指针异常
- symfony - 如果未选中,如何强制 Symfony 中的复选框类型发送错误值?
- python - 在 python 代码中处理来自 C 库的对象