Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在两个二进制数上使用AND逻辑生成新的二进制数_Python - Fatal编程技术网

Python在两个二进制数上使用AND逻辑生成新的二进制数

Python在两个二进制数上使用AND逻辑生成新的二进制数,python,Python,我试图使用AND函数从另外两个二进制数生成一个新的二进制数。但是,我一直得到000000000000作为输出。有人能指出我的代码哪里出错了吗 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 s

我试图使用AND函数从另外两个二进制数生成一个新的二进制数。但是,我一直得到000000000000作为输出。有人能指出我的代码哪里出错了吗

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
模块:。

您正在将字符串与数字进行比较。将最后一行更改为,例如:

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
模块:。

python有一个标准模块,您应该在zip(b1,bi1)中为x,y使用
:print(andop(x,y),end='')
而不是自己实现它,使用内置的二进制“and”操作符,
&
可能会更容易。python有一个标准模块,您应该在zip(b1,bi1)中为x,y使用
:print(andop(x,y),end='')
而不是自己实现它,使用内置的二进制“和”操作符,
&
可能会更容易。使用现成的整数,无需对数字进行迭代。我认为您的输入应该是
subm[0]
而不是
ip[1]
in
bi1=int(ip[1])
我认为您的输入应该是
subm[0]
而不是
ip[1]
in
bi1=int(ip[1])