二进制#逻辑计算#与(∧)、或(∨)、非(¬)、异或(⨁)#与,或,非,异或的运算法则#与,或,非,异或运算的基础代码

 任务

  本关任务是实现这些逻辑运算,每种逻辑运算对应一个函数:

  • AND(a ,b)ab进行与运算;
  • OR (a ,b)ab进行或运算;
  • NOT(a)a进行非运算;
  • XOR(a ,b)ab进行异或运算。

  其中,参数ab是用字符串表示的二进制数,且长度相同。


错误代码:

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

 

 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

省心省事省时

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值