Python 3 - 从莫尔斯电码翻译时如何将每个句子的首字母大写

Posted

技术标签:

【中文标题】Python 3 - 从莫尔斯电码翻译时如何将每个句子的首字母大写【英文标题】:Python 3 - How to capitalize first letter of every sentence when translating from morse code 【发布时间】:2017-03-28 11:14:33 【问题描述】:

我正在尝试将莫尔斯电码翻译成单词和句子,一切正常……除了一件事。我的整个输出都是小写的,我希望能够将每个句子的每个首字母大写。

这是我当前的代码:

 text = input()
        if is_morse(text):
            lst = text.split(" ")
            text = ""
            for e in lst:
                text += TO_TEXT[e].lower()
            print(text)

拆分列表中的每个元素都等于一个字符(但在莫尔斯语中)而不是一个单词。 'TO_TEXT' 是一个字典。有没有人有一个简单的解决方案?顺便说一句,我是编程和 Python 的初学者,所以我可能不明白一些解决方案...

【问题讨论】:

你能修正你的缩进吗? 【参考方案1】:

维护一个标志,告诉您这是否是新句子的第一个字母。使用它来决定字母是否应为大写。

text = input()
if is_morse(text):
    lst = text.split(" ")
    text = ""
    first_letter = True
    for e in lst:
        if first_letter:
            this_letter = TO_TEXT[e].upper()
        else:
            this_letter = TO_TEXT[e].lower()

        # Period heralds a new sentence. 
        first_letter = this_letter == "."  

        text += this_letter
    print(text)

【讨论】:

【参考方案2】:

从你的代码中可以理解,我可以说你可以使用python的title()函数。 要获得更严格的结果,您可以使用 capwords() 函数导入 string 类。

这是你从关于 capwords 的 Python 文档中得到的:

使用 str.split() 将参数拆分为单词,使用 str.capitalize() 将每个单词大写,并使用 str.join() 连接大写单词。如果可选的第二个参数 sep 不存在或无,则空白字符的运行将替换为单个空格并删除前导和尾随空格,否则 sep 用于拆分和连接单词。

【讨论】:

以上是关于Python 3 - 从莫尔斯电码翻译时如何将每个句子的首字母大写的主要内容,如果未能解决你的问题,请参考以下文章

摩斯电码怎么解读??

摩尔斯电码音频解码器(Android)[关闭]

没有意义用摩斯电码怎么说

在 Python 中读取波形文件

i love you用摩尔斯电码怎么写?

python leetcode练习(804.独特的摩尔斯电码)