题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
while True:
try:
mask = input()
ip_a = input()
ip_b = input()
# 处理子网掩码
def mask_process(mask):
mask_list = mask.split(".")
mask_2 = ""
for i in mask_list:
n = int(i)
if 0 > n or n > 255: # 判断范围是否合法
return '1'
mask_2 += str(bin(n))[2:].zfill(8) # 转换成2进制,去掉0b,补0到8位
for j in range(len(mask_2)): # 遍历,当出现0时,后面不能有1
if mask_2[j] == '0':
if '1' in mask_2[j:]:
return '1'
return mask_2
# 处理ip
def ip_process(ip, mask_2):
ip_list = ip.split(".")
ip_2 = "" # 存储2进制ip
for i in ip_list:
n = int(i)
if 0 > n or n > 255: # 判断是否合法
return '1'
ip_2 += str(bin(n))[2:].zfill(8) # 转换成2进制,去掉0b,补0到8位
# 与操作
ans_2 = ""
for i in range(32):
if ip_2[i] == '1' and mask_2[i] == '1':
ans_2 += '1'
else:
ans_2 += '0'
return ans_2
m = mask_process(mask)
if m == '1':
print(1)
else:
a = ip_process(ip_a, m)
b = ip_process(ip_b, m)
if a == '1' or b == '1':
print(1)
else:
if a == b:
print(0)
else:
print(2)
except:
break
联想公司福利 1481人发布