Python如何实现单词首字母大写且不修改数字后的小写字母
问题分析
Python内置的str.title()方法的判定逻辑是将单词中第一个出现的字母转为大写,其余字母转为小写,因此对于3g这类以数字开头的单词,会自动将后面紧跟的字母g转为大写,不符合业务需求。
你原有代码里的isinstance(word[0], str)判断是无效的,因为split后得到的每个元素都是字符串类型,word[0]永远是str类型,flag的判断逻辑完全起不到作用。
修改后代码
def solve(s): # 按单个空格分割保留原空格格式,避免多个空格合并的问题 words = s.split(' ') result = [] for word in words: if not word: result.append(word) continue # 仅当单词首字符是字母时做大写转换,其余情况原样保留 if word[0].isalpha(): result.append(word[0].upper() + word[1:]) else: result.append(word) return ' '.join(result) s = input() print(solve(s))
验证效果
- 姓名测试用例输入
alison heck,输出为Alison Heck,满足护照姓名首字母大写要求 - 异常测试用例输入
'1 w 2 r 3g',输出为'1 W 2 R 3g',符合预期结果
内容的提问来源于stack exchange,提问作者user11147478
相关产品推荐
相关产品推荐

