|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class LogicGate:
- def __init__(self,n):
- self.name = n
- self.output = None
- def getName(self):
- return self.name
- def getOutput(self):
- self.output = self.performGateLogic()
- return self.output
- class BinaryGate(LogicGate):
- def __init__(self,n):
- LogicGate.__init__(self,n)
- self.pinA = None
- self.pinB = None
- def getPinA(self):
- if self.pinA == None:
- return int(input("Enter Pin A input for gate "+self.getName()+"-->"))
- else:
- return self.pinA.getFrom().getOutput()
- def getPinB(self):
- if self.pinB == None:
- return int(input("Enter Pin B input for gate "+self.getName()+"-->"))
- else:
- return self.pinB.getFrom().getOutput()
- [color=DarkSlateBlue]def setNextPin(self,source):[/color]
- if self.pinA == None:
- self.pinA = source
- else:
- if self.pinB == None:
- self.pinB = source
- else:
- print("Cannot Connect: NO EMPTY PINS on this gate")
- class AndGate(BinaryGate):
- def __init__(self,n):
- BinaryGate.__init__(self,n)
- def performGateLogic(self):
- a = self.getPinA()
- b = self.getPinB()
- if a==1 and b==1:
- return 1
- else:
- return 0
- class OrGate(BinaryGate):
- def __init__(self,n):
- BinaryGate.__init__(self,n)
- def performGateLogic(self):
- a = self.getPinA()
- b = self.getPinB()
- if a ==1 or b==1:
- return 1
- else:
- return 0
- class UnaryGate(LogicGate):
- def __init__(self,n):
- LogicGate.__init__(self,n)
- self.pin = None
- def getPin(self):
- if self.pin == None:
- return int(input("Enter Pin input for gate "+self.getName()+"-->"))
- else:
- return self.pin.getFrom().getOutput()
- def setNextPin(self,source):
- if self.pin == None:
- self.pin = source
- else:
- print("Cannot Connect: NO EMPTY PINS on this gate")
- class NotGate(UnaryGate):
- def __init__(self,n):
- UnaryGate.__init__(self,n)
- def performGateLogic(self):
- if self.getPin():
- return 0
- else:
- return 1
- class Connector:
- def __init__(self, fgate, tgate):
- self.fromgate = fgate
- self.togate = tgate
- [color=Olive]tgate.setNextPin(self)[/color]
- def getFrom(self):
- return self.fromgate
- def getTo(self):
- return self.togate
- def main():
- g1 = AndGate("G1")
- g2 = AndGate("G2")
- g3 = OrGate("G3")
- g4 = NotGate("G4")
- c1 = Connector(g1,g3)
- c2 = Connector(g2,g3)
- c3 = Connector(g3,g4)
- print(g4.getOutput())
- main()
复制代码
这是个魔方逻辑门的程序,我是在搞不懂 g3传入tgate.setNextPin()之后到 BinaryGate(LogicGate)再去执行def setNextPin(self,source)中source 到底是什么意思?该怎么去理解。求大神指点 |
|