Python逻辑代码:AND、NAND、OR、NOR、XOR、XNOR和NOT模拟

2024-04-24 13:25:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想弄清楚我的代码为什么不能工作。为什么我的一些逻辑门,比如OR,没有给我正确的输出?以OR门为例。当我运行代码并传入1作为AB的值时,输出仍然是False。我已经试过调整它,但它仍然提供False作为输出。

下面是我迄今为止所做的一个例子:

aInput = int(input('Enter value for A: '))
bInput = int(input('Enter value for B: '))

#AND Gate
if aInput == 1 and bInput == 1:
    ANDGate = "True"
    ANDGateNum = 1
else:
    ANDGate = "False"
    ANDGateNum = 0

print('AND Gate output is', ANDGate, 'or', ANDGateNum)

#NAND Gate
if aInput == 1 and bInput == 1:
    NANDGate = "False"
    NANDGateNum = 0
else:
    NANDGate = "True"
    NANDGateNum = 1

print('NAND Gate output is', NANDGate, 'or', NANDGateNum)

#OR Gate
if aInput == 1 and bInput == 1:
    ORGate = "True"
    ORGateNum = 1
if aInput == 1 and bInput == 0:
    ORGate = "True"
    ORGateNum = 1
if aInput == 0 and bInput == 1:
    ORGate = "True"
    ORGateNum = 1
else:
    ORGate = "False"
    ORGateNum = 0

print('OR Gate output is', ORGate, 'or', ORGateNum)

#NOR Gate
if aInput == 1 and bInput == 1:
    NORGate = "False"
    NORGateNum = 0
if aInput == 1 and bInput == 0:
    NORGate = "False"
    NORGateNum = 0
if aInput == 0 and bInput == 1:
    NORGate = "False"
    NORGateNum = 0
else:
    NORGate = "True"
    NORGateNum = 1

print('NOR Gate output is', NORGate, 'or', NORGateNum)

#XNOR Gate
if aInput == 1 and bInput == 1:
    XNORGate = "True"
    XNORGateNum = 1
if aInput == 1 and bInput == 0:
    XNORGate = "False"
    XNORGateNum = 0
if aInput == 0 and bInput == 1:
    XNORGate = "False"
    XNORGateNum = 0
else:
    XNORGate = "True"
    XNORGateNum = 1

print('XNOR Gate output is', XNORGate, 'or', XNORGateNum)

#XOR Gate
if aInput == 1 and bInput == 1:
    XORGate = "False"
    XORGateNum = 0
if aInput == 1 and bInput == 0:
    XORGate = "True"
    XORGateNum = 1
if aInput == 0 and bInput == 1:
    XORGate = "True"
    XORGateNum = 1
else:
    XORGate = "False"
    XORGateNum = 0

print('XOR Gate output is', XORGate, 'or', XORGateNum)

#NOT Gate
if aInput == 1: 
    NOTGate = "False"
    NOTGateNum = 0

else:
    NOTGate = "True"
    NOTGateNum = 1

print('NOT Gate output is', NOTGate, 'or', NOTGateNum)

我还试着用一个or来替换aInputbInput之间的and,这看起来很有效,但是用XORXNOR门重复使用有点困难:

#OR Gate
if aInput == 1 or bInput == 1:
    ORGate = "True"
    ORGateNum = 1
else:
    ORGate = "False"
    ORGateNum = 0

print('OR Gate output is', ORGate, 'or', ORGateNum)

#NOR Gate
if aInput == 1 or bInput == 1:
    NORGate = "False"
    NORGateNum = 0
else:
    NORGate = "True"
    NORGateNum = 1

print('NOR Gate output is', NORGate, 'or', NORGateNum)

Tags: orandfalsetrueoutputifiselse