我正在尝试使用嵌套的for循环来打印值192.168.42.0-255和192.168.43.0-255。
for i in range(42, 43):
for y in range(0, 255):
ip = "192.168." + str(i) + "." + str(y)
print ip
所有打印的值均为192.168.42.0-255。它似乎没有改为192.168.43。
答案 0 :(得分:7)
range(x,y)
不包含y。
>>> range(42,43)
[42]
您的代码可以通过将第一个更改为range(42,44)
而将第二个更改为range(0,256)
(或仅range(256)
)来修复。
如果你想完全摆脱嵌套循环,可以使用生成器表达式:
for ip in ('192.168.{}.{}'.format(i,j) for i in (42,43) for j in range(256)):
print(ip)
答案 1 :(得分:1)
range(42,43)
仅提供[42]
。将其更改为for i in (42,43):
。
正如@timgeb指出的那样,你的第二个循环应该是range(0, 256)
或range(256)
;不是255。
答案 2 :(得分:1)
您可以使用itertools.product()
在一个循环中组合数字组:
from itertools import product
ips = ('192.168.{}.{}'.format(*pair) for pair in product((42, 43), range(256)))
for ip in ips:
print(ip)
答案 3 :(得分:0)
如果你想使用范围(a,b),那么它应该是范围(42,44)而不是43。