【发布时间】:2021-12-05 10:42:18
【问题描述】:
我是编程新手,我正在尝试找到以下练习的 python 解决方案:
我需要比较附件图像中 3 个案例的 2 个数字的二进制形式(AND、OR、XOR)。下面是我的代码,但我不知道如何使它适用于所有 3 个案例。谢谢!
a,b = int(input("Please enter the first number: ")),int(input("Please enter the second number: "))
m = ""
n = ""
p = ""
print(sep="\n")
print(bin(a),bin(b),sep="\n")
print(sep="\n")
length = max([len(bin(a)), len(bin(b))])-2
# AND
for i in range(length):
if bin(a)[-1]== "1" and bin(b)[-1]== "1":
m+= "1"
else:
m+= "0"
a = a >> 1
b = b >> 1
print ("0b" + m[::-1],"| AND")
#OR
for i in range(length):
if bin(a)[-1]== "1" or bin(b)[-1]== "1":
n+= "1"
else:
n+= "0"
a = a >> 1
b = b >> 1
print ("0b" + n[::-1],"| OR")
#XOR
for i in range(length):
if bin(a)[-1] != bin(b)[-1] :
p+= "1"
else:
p+= "0"
a = a >> 1
b = b >> 1
print ("0b" + p[::-1],"| XOR")
【问题讨论】:
-
wiki.python.org/moin/BitwiseOperators(只是因为那里还有其他文章,python 文档非常好,值得收藏)
-
@2e0byo 我也认为按位运算符是需要的,但似乎他们正试图以艰难的方式做事。老实说,我再也看不到代码有问题了,除了操作的执行顺序可能与示例不同。我当然无法确定哪个案例失败了。
-
@MarkRansom 公平;我将手动添加到我的答案中。
-
@2e0byo 不要把代码放在银盘上,这显然是一种学习练习,你会对他们造成伤害。
-
@MarkRansom 哦,别担心,我不会(也不会)写出此类问题的答案 :)