判断子网掩码那里,没有用正则(因为我不会。。。)
把4个int分别转2进制再拼接出完整的子网掩码2进制形式,再进行判断
a = b = c = d = e = privateIP = wrongIP = 0
def isLegalMask(inputMask):# 定义函数判断子网掩码合法性
    if not inputMask&nbs***bsp;inputMask == "":
        return False
    MaskList = list(map(str,Mask.split(".")))
    if len(MaskList) == 4 and "" not in MaskList:   
        MaskPart1,MaskPart2,MaskPart3,MaskPart4 = map(int,Mask.split("."))
        binaryMaskPart1 = bin(MaskPart1)[2:].rjust(8,"0")
        binaryMaskPart2 = bin(MaskPart2)[2:].rjust(8,"0") 
        binaryMaskPart3 = bin(MaskPart3)[2:].rjust(8,"0")
        binaryMaskPart4 = bin(MaskPart4)[2:].rjust(8,"0")
        binaryMask = binaryMaskPart1+binaryMaskPart2+binaryMaskPart3+binaryMaskPart4
    else:
        return False
        
    if "1" in binaryMask and "0" in binaryMask:
        if binaryMask.rfind("1") > binaryMask.find("0"):
            return False
        else:
            return True
    else:
        return False

def isLegalIP(inputIP):
    if not inputIP&nbs***bsp;inputIP == "":
        return False
    IPList = list(map(str,IP.split(".")))
    if len(IPList) == 4 and "" not in IPList:
        if int(IPList[0])<0&nbs***bsp;int(IPList[0])>255:
            return False
        else:
            return True
    else:
        return False

def isPirvateIP(inputIP):
    IPList = list(map(int,inputIP.split(".")))
    if IPList[0] == 10:
        return True
    if IPList[0]== 172:
        if IPList[1] >= 16 and IPList[1]  <= 31:
            return True
    if IPList[0] == 192 and IPList[1] == 168:
        return True

try:
    while True:
        #首先接收输入数据
        inpt = str(input())
        IP, Mask = inpt.split("~")
        #第二步判断IP地址 和 子网掩码合法性
        if not isLegalMask(Mask)&nbs***bsp;not isLegalIP(IP):
            wrongIP += 1
        else:# 若合法则进一步判断私有和类型
            if isPirvateIP(IP):
                privateIP += 1
            IPList = list(map(int,IP.split(".")))
            if 126 >= IPList[0] >= 1:
                a += 1
            if 191 >= IPList[0] >= 128:
                b += 1
            if 223 >= IPList[0] >= 192:
                c += 1
            if 239 >= IPList[0] >= 224:
                d += 1
            if 255 >= IPList[0] >= 240:
                e += 1

except:
    print(a,b,c,d,e,wrongIP,privateIP)