我正在尝试将莫尔斯代码翻译成单词和句子,这一切都很好......除了一件事。我的整个输出都是小写的,我希望能够将每个句子的每个首字母大写。
这是我目前的代码:
text = input()
if is_morse(text):
lst = text.split(" ")
text = ""
for e in lst:
text += TO_TEXT[e].lower()
print(text)
拆分列表中的每个元素都等于一个字符(但在莫尔斯中)不是WORD。 ' TO_TEXT'是一本字典。有没有人有一个简单的解决方案?我是编程和Python btw的初学者,所以我可能不理解一些解决方案...
答案 0 :(得分:1)
从代码中可以理解的是,我可以说你可以使用python的title()
函数。
要获得更严格的结果,您可以使用导入capwords()
类的string
函数。
这是您从关于词汇的Python文档中获得的:
使用str.split()将参数拆分为单词,使用str.capitalize()对每个单词进行大写,并使用str.join()连接大写单词。如果可选的第二个参数sep不存在或者None,则用空格字符替换单个空格,并删除前导和尾部空格,否则使用sep来拆分和连接单词。
答案 1 :(得分: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 :(得分:0)
假设你有text
:
text = "this is a sentence. this is also a sentence"
您可以通过以下方式对每个句子的第一个字母进行大写:
text
个字符'.'
'. '
分步编码:
originals = text.split('.')
trimmed = [ sentence.strip() for sentence in originals ]
uppercased = [ sentence[0].upper() + sentence[1:] for sentence in trimmed ]
rejoined = '. '.join(uppercased)
您希望将其打包成一个功能。无需创建所有这些中间list
对象,您可以使用for
循环或generators
来完成。