题解 | 判断两个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的子网
360集团公司氛围 420人发布
