题解 | #识别有效的IP地址和掩码并进行分类统计#

识别有效的IP地址和掩码并进行分类统计

https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682

import sys
a,b,c,d,e,f,p=0,0,0,0,0,0,0
def abc(l):
    global a,b,c,d,e,f,p
    n0,n1=int(l[0]),int(l[1])
    if n0 in range(1,127):
        a+=1
        if n0==10:
            p+=1
    elif n0 in range(128,192):
        b+=1
        if n0==172 and n1 in range(16,32):
            p+=1
    elif n0 in range(192,224):
        c+=1
        if n0==192 and n1==168:
            p+=1
    elif n0 in range(224,240):
        d+=1
    elif n0 in range(240,256):
        e+=1
    else:
        f+=1

def isf(l):
    global f
    b=True
    if l[4]==l[5]==l[6]==l[7]=='0' or l[4]==l[5]==l[6]==l[7]=='255':
        b=False
        f+=1
        return b
    else:
        st=''
        for i in l[4:]:
            ss=str(bin(int(i)))[2:]
            while len(ss)<8:
                ss='0'+ss
            st+=ss
        if '01' in st:
            b=False
            f+=1
        return b

def isnull(l):
    global f
    b=True
    for i in l:
        if i=='':
            b=False
            f+=1
            break
    return b     

def isno(l):
    if l[0] in ('0','127'):
        return False
    else:
        return True   

for line in sys.stdin:
    l = line.split('~')
    li=l[0].split('.')
    li+=l[1].strip().split('.')
    if isno(li):
        if isnull(li):
             if isf(li):
                abc(li)

print(a,b,c,d,e,f,p)

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务