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

import sys

A = B = C = D = E = M = P = 0

for line in sys.stdin.readlines():
    ip, mask = line.strip().split('~')

    ip = list(ip.split('.'))
    mask = list(mask.split('.'))

    if ip[0] == '0' or ip[0] == '127':
        continue

    msk = ''.join(bin(int(i))[2:].zfill(8) for i in mask) # 没加zfill的时候第7个样例一直wa,降智打击了
    # print(msk)
    pos = msk.index('0') if '0' in msk else -1
    if '' in ip + mask or len(ip) != 4 or len(mask) != 4 or msk == '0' or all(j == '1' for j in  msk) or '1' in msk[pos:] or any(int(i) < 0 or int(i) > 255 for i in ip + mask):
        M += 1
        continue
    # print(ip, mask)
    ip0 = int(ip[0])
    if 0 < ip0 < 127:
        A += 1
        if ip0 == 10:
            P += 1
    elif 127 < ip0 < 192:
        B += 1
        if ip0 == 172 and 16 <= int(ip[1]) < 32:
            P += 1
    elif 191 < ip0 < 224:
        C += 1
        if ip0 == 192 and int(ip[1]) == 168:
            P += 1
    elif 223 < ip0 < 240:
        D += 1
    elif 239 < ip0 < 256:
        E += 1

print(A, B, C, D, E, M, P)

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 11:16
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务