告诉我,在循环中的每个 if 之后都有 i += 1 是否正确?
from ping3 import ping
urls = ('ya.ru', '8.8.8.8', 'e1.ru', '192.168.0.99', 'google.com', '192.168.1.25', '192.168.1.26', 'ok.ru', '192.168.0.2', '192.168.0.1', '192.168.1.1', '192.168.1.2')
i=0
while i<len(urls):
ping(urls[i])
if ping(urls[i]) == None:
print('None: ', urls[i])
i += 1
if ping(urls[i]) == False:
print('False: ',urls[i])
i += 1
else:
print('OK: ', urls[i])
i += 1
代码可以工作,但让我感到困惑的是,他们在参考书中的任何地方都没有这样写,如果你不这样写,代码就不能正常工作。恐怕在大列表中会出现某种错误,而这在实际任务中根本看不到。
大错特错。请参阅@StanislavVolodarskiy 的回答
这更好:
删除其余部分
i += 1。更好的是,因为它是遍历列表,所以使用列表遍历:
另外,这里每个地址都被 ping 了 3 次,其中 1 次完全没用。这已经很糟糕了,因为结果可能不同。像这样正确:
越界名单
该函数
ping总是返回None列表中的一个地址。如果地址列表中的最后一个地址没有响应,脚本会崩溃:错误的答案
如果地址列表中连续的两个地址没有响应,则代码将为第二个地址打印“OK”。该函数
ping总是返回None, 列表中的两个地址。我希望答案是我们推出:
对于第二个地址,打印“OK”:
工作版
这是它应该如何工作的: