如何从给定字符串生成点分隔的首字母缩写?解决Python代码输出末尾多余点的问题
解决首字母缩写末尾多余点的问题
你的问题出在循环里给每个单词的首字母都追加了一个点,包括最后一个单词,所以最终输出会多一个末尾的点。这里有几种简洁的修复方法:
方法1:用join(最Pythonic的方式)
直接提取每个单词的首字母并转大写,然后用点作为分隔符连接起来——join只会在元素之间添加分隔符,完美避免末尾多余的点:
string = input() acronym = '.'.join(word[0].upper() for word in string.split()) print(acronym)
这里用了生成器表达式(去掉列表推导式的方括号),比列表更节省内存,效果和列表推导式一致。
方法2:修改原有循环逻辑
如果你想保留原来的循环写法,可以通过判断是否是最后一个单词来决定是否加点:
string = input() str_list = string.split() acronym = "" for index, word in enumerate(str_list): acronym += word[0].upper() # 只有当不是最后一个单词时,才添加点 if index != len(str_list) - 1: acronym += "." print(acronym)
方法3:先收集所有首字母再拼接
先把所有首字母存到列表里,最后再用点连接,逻辑清晰易懂:
string = input() str_list = string.split() acronym_chars = [] for word in str_list: acronym_chars.append(word[0].upper()) acronym = '.'.join(acronym_chars) print(acronym)
测试输入"Very Important Person",这三种方法都会输出V.I.P,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Vishnu
相关产品推荐
相关产品推荐

