Problem E: 计算网络地址

Problem Description

子网掩码为32位的二进制数,对应IP地址中网络号和子网号的位设置为1,对应IP地址中主机号的位设置为0。
只要把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()

 

posted @ 2023-04-24 16:30  hangsingplus  Views(14)  Comments(0Edit  收藏  举报