如何对句子首个单词应用str.capitalize?Python Pig Latin转换问题
问题根因
- 拼接转换后句子的逻辑存在问题:你初始化
Sentence为空字符串,每次循环都先拼接空格再加转换后的单词,最终得到的Sentence开头会多出一个空格。Python的capitalize()方法只会将字符串的第一个字符转为大写、其余转为小写,当第一个字符是空格时,就不会对后续的单词首字母生效,导致输出全为小写。 - 直接将输入全转小写的操作如果是符合你需求的可以保留,如果你需要保留原句中其他位置的大写规则(比如专有名词大写)可以再调整,这里先按你当前的需求(仅句子第一个单词首字母大写)修复。
修复后的代码
方案1:用列表拼接更高效(推荐)
sentenc = str(input("Enter a string: ")).lower() sentence = sentenc.split() res_list = [] for word in sentence: part = word[1:] + word[0] full = part + "ay" res_list.append(full) # 用join拼接不会产生开头多余空格 final = ' '.join(res_list).capitalize() print(final)
方案2:不改原有拼接逻辑,仅补充去空格操作
Sentence = "" sentenc= str(input("Enter a string: ")).lower() sentence = sentenc.split() for word in sentence: part = word[1:] + word[0] full = part + "ay" Sentence = Sentence + " " + full # 先strip去掉首尾空格再调用capitalize final = Sentence.strip().capitalize() print(final)
效果验证
输入Hello world时,修复后输出为Ellohay orldway,符合句子首字母大写的要求。
内容的提问来源于stack exchange,提问作者MediGalaxy
相关产品推荐
相关产品推荐

