Problem E: 计算网络地址
Problem Description
子网掩码为32位的二进制数,对应IP地址中网络号和子网号的位设置为1,对应IP地址中主机号的位设置为0。
只要把IP地址和子网掩码进行逐位的“与”运算(and),就可以得出网络地址。
已知IP地址和子网掩码,请你编写程序计算出对应的网络地址。
只要把IP地址和子网掩码进行逐位的“与”运算(and),就可以得出网络地址。
已知IP地址和子网掩码,请你编写程序计算出对应的网络地址。
Input Description
输入数据有多组,每组一行。为点分十进制表示的IP地址和子网掩码,IP地址和子网掩码之间以空格分隔。
Output Description
对每组输入数据,使用点分十进制表示输出计算出的网络地址,占一行。
Sample Input
141.14.72.24 255.255.192.0
141.14.72.24 255.255.224.0
Sample Output
141.14.64.0
141.14.64.0
ac代码
1 def calculate(m,n): 2 ans = [] 3 a = m.split('.',3) 4 b = n.split('.', 3) 5 ip = list(map(int,a)) 6 mask = list(map(int, b)) 7 for i in range(4): 8 x = ip[i] & mask[i] 9 ans.append(x) 10 print("%d.%d.%d.%d" %(ans[0],ans[1],ans[2],ans[3])) 11 def func(): 12 while True: 13 #EOFError的作用就是执行到文件末尾然后抛出异常 14 #try...except捕捉到异常然后执行break语句终止循环 15 try: 16 a = input() 17 a = a.split() 18 m = a[0] 19 n = a[1] 20 calculate(m, n) 21 except EOFError: 22 break 23 24 25 if __name__ == '__main__': 26 func()