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

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

https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218

import sys
import ipaddress


def check_ip_in_same_subnet(mask, ip1, ip2):
    try:
        # 验证子网掩码
        netmask = ipaddress.IPv4Network(f"0.0.0.0/{mask}", strict=False)
        # 验证第一个 IP 地址
        ip_addr1 = ipaddress.IPv4Address(ip1)
        # 验证第二个 IP 地址
        ip_addr2 = ipaddress.IPv4Address(ip2)
        # 计算第一个 IP 所在的子网
        network1 = ipaddress.IPv4Network(
            f"{ip_addr1}/{netmask.prefixlen}", strict=False
        )
        # 计算第二个 IP 所在的子网
        network2 = ipaddress.IPv4Network(
            f"{ip_addr2}/{netmask.prefixlen}", strict=False
        )
        # 判断两个 IP 是否在同一子网
        if network1 == network2:
            return 0
        else:
            return 2
    except ValueError:
        return 1

index = 0
nums = []
for line in sys.stdin:
    a = line.split("\n")[0]
    nums.append(a)
    index+=1
    if index == 3:
        index = 0
        #print(nums)
        print(check_ip_in_same_subnet(nums[0],nums[1],nums[2]))
        nums=[]

直接用ipaddress 判断ip是否合法,以及获取ip的子网

全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
看起来名字可以很长:笑死 我暑期实习阿里云的意向也被 qq 邮箱放在垃圾箱了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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