题解 | #识别有效的IP地址和掩码并进行分类统计#
识别有效的IP地址和掩码并进行分类统计
https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682
import sys
class IPaddress:
def __init__(self,num1,num2,num3,num4):
self.num1 = num1
self.num2 = num2
self.num3 = num3
self.num4 = num4
Acount,Bcount,Ccount,Dcount,Ecount,Miscount,personcount = 0,0,0,0,0,0,0
def justIPmask(ip):
str1 = ''
for i in ip:
str1 += bin(i)[2:].zfill(8)
if str1[0] == '0':
return False
else:
for e in range(str1.find('0'),len(str1)):
if str1[e] == '1':
return False
else:
return True
for line in sys.stdin:
a = line.rstrip('\n').split("~")
if a == None:
break
if a == ['']:
break
a0 = list(map(int,a[0].split(".")))
a1 = list(map(int,a[1].split(".")))
if a0[0] in [0,127]:
continue
if justIPmask(a1):
ip1 = IPaddress(a0[0],a0[1],a0[2],a0[3])
else:
Miscount+=1
continue
if 1 <= ip1.num1 <= 126:
Acount +=1
if ip1.num1 == 10:
personcount +=1
elif 128 <= ip1.num1 <= 191:
Bcount +=1
if ip1.num1 == 172 and 16 <= ip1.num2 <= 31:
personcount +=1
elif 192 <= ip1.num1 <= 223:
Ccount +=1
if ip1.num1 == 192 and ip1.num2 == 168:
personcount +=1
elif 224 <= ip1.num1 <= 239:
Dcount +=1
elif 240 <= ip1.num1 <= 255:
Ecount +=1
print(Acount,Bcount,Ccount,Dcount,Ecount,Miscount,personcount)

