我试图通过边做边学的方式学习python,但我的代码有一个问题。试着做一个代码,输入IP,代码会检查IP是否在ips.txt文件中,但是当我添加例如“192.168.0.10”并且在文件中已经是“192.168.0.100”时,它会显示“192.168.0.10”在txt文件中,因为“10”是“100”数字的一部分
同样的例子是“狗”和“狗”,“狗”基本上在“狗”里面,所以它会告诉狗在文件中
你能帮我吗?谢谢
IPs = IPs.read()
IP = input("Check IP: ")
if IP in IPs:
print("IP is in the list.")
else:
print("IP is not in the list.") ```
IPs.read()
生成一个字符串。这意味着当您执行IP in IPs
时,它将检查字符串IP
是否是IPs
的子字符串(它执行^{"" in IPs
、"1" in IPs
和".1" in IPs
都将计算为True
您想要的是
IPs
成为字符串列表,可以通过以下方式实现:这将读取输入并通过换行符拆分字符串,因此如果文本文件包含:
IPs将是:
现在,当您执行} 用于
IP in IPs
时,它将^{IPs
中的值IP
。线性搜索需要O(n)
时间,其中n
是列表的长度。如果IPs
的顺序无关紧要,并且您进行了大量查找,我建议通过IPs = set(IPs.read().splitlines())
将列表转换为一个集合。这样,当您执行IP in IPs
操作时,无论列表大小如何,查找时间都是恒定的(也称为程序go zoom)相关问题 更多 >
编程相关推荐