Python代码仅打印数字1而非12的问题排查求助
问题排查与解决方案
嘿,我来帮你搞定这个问题!你现在遇到的核心问题是把列表的字符串表示当成了真正的列表来访问,导致取到的只是字符串的单个字符,而不是你想要的数字12。
为什么你的代码只打印出1?
你看,当你用file.readlines()读取文件时,每一行都是一个字符串。比如第五行的内容是字符串 "[12, 9, 6, 9, 2]",你用line[i][1]取的是这个字符串的第2个字符(Python索引从0开始)——也就是'1',这就是为什么你看到的是1而不是完整的12。
怎么修复?
我们需要把每行的字符串解析成真正的Python列表,这样才能正确访问里面的数字元素。推荐用ast.literal_eval()来做这件事,它比eval()更安全,专门用来解析类似列表、字典的字符串表示。
修改后的代码如下:
import ast def computes(text): # 用with语句打开文件,会自动帮你关闭,避免资源泄漏 with open(text) as file: lines = file.readlines() for line in lines: # 去掉每行末尾的换行符,再解析成列表 num_list = ast.literal_eval(line.strip()) # 遍历列表里的每个数字,找到12就打印 for num in num_list: if num == 12: print(num)
额外说明
如果你只是想打印每行的第一个元素(比如第五行和第六行的第一个元素都是12),那可以把内层循环改成直接访问num_list[0],然后判断是否等于12再打印。但根据你的需求是“打印出数字12”,上面的代码会输出所有出现的12,结果应该是:
12 12 12
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

