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