判断两个IP是否属于同一子网

来源:互联网 发布:淘宝客服问答 编辑:程序博客网 时间:2024/06/11 04:58

华为刷题

判断两个IP是否属于同一子网

def checkNetSegment(mask, ip1, ip2):    str2ints = lambda s:[int(num) for num in s.split('.')]    bitAnd = lambda x, y:[x[i] & y[i] for i in range(4)]    isRightIP = lambda li:not (False in [i >= 0 and i <= 255 for i in li])    mask, ip1, ip2 = str2ints(mask), str2ints(ip1), str2ints(ip2)    if False in [isRightIP(mask), isRightIP(ip1), isRightIP(ip2)]:        return 1    res = sum([1 for i in range(4) if bitAnd(mask, ip1) != bitAnd(mask, ip2)])    return 0 if res == 0 else 2# mask = '255.255.255.0'# ip1 = '192.168.10.255'# ip2 = '192.168.10.4'mask = raw_input()ip1 = raw_input()ip2 = raw_input()print checkNetSegment(mask, ip1, ip2)

0 0