任务
本关任务是实现这些逻辑运算,每种逻辑运算对应一个函数:
AND(a ,b)
:a
和b
进行与运算;OR (a ,b)
:a
和b
进行或运算;NOT(a)
:a
进行非运算;XOR(a ,b)
:a
和b
进行异或运算。
其中,参数a
和b
是用字符串表示的二进制数,且长度相同。
错误代码:
a=input()
b=input()
def AND(a,b):
for i in range(len(a)):
f=''
a=a[i]
b=b[i]
if a==b==1:
f=f+'1'
else:
f=f+'0'
return f
print('%s %s %s = %s' % (a, 'and', b, AND(a,b)))
运行结果:
Traceback (most recent call last):
File "C:\Users\wuhuanan\untitled21.py", line 19, in <module>
print('%s %s %s = %s' % (a, 'and', b, AND(a,b)))File "C:\Users\wuhuanan\untitled21.py", line 13, in AND
b=b[i]IndexError: string index out of range(字符串索引超过了索引范围)
修改后:
########## Begin ##########
def AND(a, b):
c = ''
for i in range(len(a)):
if a[i]=='1' and b[i]=='1':
c = c+'1'
else:
c = c+'0'
return c
def OR(a,b):
c=''
for i in range(len(a)):
if a[i]=='0'and b[i]=='0':
c=c+'0'
else:
c=c+'1'
return c
def NOT(a):
c = ''
for i in range(len(a)):
if a[i]=='1':
c = c+'0'
else:
c = c+'1'
return c
def XOR(a,b):
c=''
for i in range(len(a)):
if a[i]==b[i]:
c=c+'0'
else:
c=c+'1'
return c
########## End ##########
a = input()
b = input()
print('%s %s %s = %s' % (a, 'and', b, AND(a,b)))
print('%s %s %s = %s' % (a, 'or' , b, OR(a,b)))
print('%s %s = %s' % ( 'not', a, NOT(a)))
print('%s %s %s = %s' % (a, 'xor', b, XOR(a,b)))
运算法则:
- 与:均为1时结果为1,否则为0
- 或:均为 0 时结果为 0,否则为 1;
- 非:为 0 时结果为 1,为 1 时结果为 0;
- 异或:相同为 0,相异为 1