题解 | 判断两个IP是否属于同一子网
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
mask = input().split('.')
ip_1 = input().split('.')
ip_2 = input().split('.')
def Judgment_mask(mask):
result = ''
for i in range(len(mask)):
if int(mask[i]) < 0 or int(mask[i]) > 255:
return 1
result += f'{int(mask[i]):08b}'
if '01' in result or '1' not in result or '0' not in result:
return 1
return 0
def Judgment_ip(ip):
if len(ip) != 4:
return 1
if '' in ip:
return 1
for num_ip in ip:
if int(num_ip) < 0 or int(num_ip) > 255:
return 1
return 0
def mask_ip(mask,ip_1,ip_2):
result_1 = ''
result_2 = ''
for i in range(len(mask)):
mask[i] = f'{int(mask[i]):08b}'
for i in range(len(ip_1)):
ip_1[i] = f'{int(ip_1[i]):08b}'
for i in range(len(ip_2)):
ip_2[i] = f'{int(ip_2[i]):08b}'
for i in range(4):
result_1 += str(int(mask[i]) & int(ip_1[i]))
for i in range(4):
result_2 += str(int(mask[i]) & int(ip_2[i]))
if result_1 == result_2:
return 0
return 2
if Judgment_mask(mask) == 1 or Judgment_ip(ip_1) == 1 or Judgment_ip(ip_2) == 1:
print('1')
else:
print(mask_ip(mask,ip_1,ip_2))
比较好理解的方法,随让有点长


