Python搜索文本文件中的数字时始终提示不存在该如何解决
问题原因
你的代码存在3个核心问题导致运行结果不符合预期:
- 循环逻辑错误:
condition的取值会被遍历到的最后一行覆盖。哪怕前面的行已经匹配到目标数字,只要最后一行没匹配到,最终condition会被改写为False,只有目标刚好在最后一行时才会返回正确结果。 - 格式匹配风险:
input()返回的是字符串类型,文件每行末尾默认带换行符\n、可能存在首尾空格,如果没有做空白处理,容易出现看似内容一致实际匹配失败的情况。 - 初始值不规范:
condition初始赋值为整数0,虽然Python中0等价于布尔值False,但直接用布尔值赋值可读性更强,也能避免类型判断出错的潜在风险。
修复后代码
# 用with上下文管理器自动管理文件关闭,不需要手动调用close() with open("searching.txt", "r") as searchfile: condition = False b = input("enter a number to search ").strip() # 去除输入内容首尾的空白、换行 for line in searchfile: # 去除每行首尾的空白、换行后再匹配 if b in line.strip(): condition = True break # 匹配到就直接跳出循环,不需要遍历后续内容 if condition: print("The number is in the list") else: print("The number is not in the list")
优化说明
- 匹配到目标后直接用
break终止循环,减少不必要的遍历,文件越大优化效果越明显 - 用
with语句管理文件操作,哪怕代码运行中途报错也会自动释放文件资源,不会出现文件占用异常
内容的提问来源于stack exchange,提问作者shahmir782
相关产品推荐
相关产品推荐

