>我正在尝试使用 AND 函数从另外两个二进制数生成一个新的二进制数。但是,我一直得到 0000000000000 作为输出。任何人都可以发现我在代码中出错的地方吗?
def andop(x,y):
if x == 1 and y == 1:
return 1
else:
return 0
v = input("Enter IP address: ")
ip = v.split(".")
b1 = format(int(ip[0]),'08b')
x = input("Enter submask address: ")
subm = x.split(".")
bi1 = format(int(subm[0]),'08b')
for x in b1:
for y in bi1:
print(andop(x,y),end = '')
您正在将字符串与数字进行比较。将最后一行更改为例如:
print(andop(int(x),int(y)),end = '')
另请注意,二进制"and"操作是内置的。您可以轻松地以更清晰的方式重写此程序:
v = input("Enter IP address: ")
ip = v.split(".")
b1 = int(ip[0])
x = input("Enter submask address: ")
subm = x.split(".")
bi1 = int(subm[0])
print(format(b1 & bi1, 'b'))
最后,要使用 IP 地址,有一个ipaddress
模块:https://docs.python.org/3/library/ipaddress.html。