题解 | 判断两个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的子网

全部评论

相关推荐

04-25 19:29
已编辑
宁波大学 运营
被普调的六边形战士很高大:你我美牛孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务