题解 | 判断两个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))
比较好理解的方法,随让有点长