Python从stdin读取TXT生成大写首字母缩写程序问题求助
问题原因及解决方案
问题原因
- 输入处理逻辑错误:你把存储所有行的列表
inpt1直接转成字符串传给make_acronym,列表转字符串后会变成类似['access point', 'American National Standards Institute']的格式,调用split()后第一个元素是'[',取首字符后再转大写,自然不是每行术语的首字母缩写;而且你没有逐行处理输入内容,导致所有行被当成一个整体处理,完全偏离需求。 - 函数内冗余代码:
make_acronym里第一个return oupt之后的代码永远不会执行,属于无效代码,不过这不是导致丢失字符的直接原因。
修正后的代码
import sys def main(): def make_acronym(stng): # 拆分字符串为单词,取每个单词首字母拼接后转大写 return ''.join(word[0].upper() for word in stng.split()) # 逐行读取输入并处理 for line in sys.stdin: term = line.strip() if not term: # 跳过空行 continue acronym = make_acronym(term) print(f"The acronym of '{term}' is: {acronym}.") if __name__ == "__main__": main()
代码说明
- 简化了
make_acronym的实现逻辑,去掉冗余代码,直接生成大写首字母缩写。 - 改为逐行读取并处理输入,符合你读取多行TXT内容的需求。
- 添加空行判断,避免处理空行导致的无效输出。
- 使用f-string实现你要求的输出格式,直接将术语和对应缩写插入到指定字符串结构中。
内容的提问来源于stack exchange,提问作者juuul635
相关产品推荐
相关产品推荐

