【发布时间】:2016-03-11 13:06:16
【问题描述】:
我无法通过半加器和全加器测试,我想知道 FullAdder() 和 HalfAdder() 方法中的逻辑有什么问题?由于某种原因,我的测试似乎都没有通过...
这里是代码:
# All wires that enter/exit the circuit need to be visible outside of the
# function: they are to be created in the enclosing scope and passed
# as parameters.
# However, wires that connect the AND gates to the OR gates are
# _internal wires_, visible only inside the circuit: they need to be created
xy = self.Wire('xy')
xz = self.Wire('xz')
yz = self.Wire('yz')
xy_or_xz = self.Wire('xy_or_xz')
self.AndGate(x, y, xy)
self.AndGate(x, z, xz)
self.Andgate(x, z, yz)
# OR(xy,xz,yz) = OR( OR(xy,xz), yz)
self.OrGate(xy, xz, xy_or_xz)
self.OrGate(xy_or_xz, yz, o)
return 'ok'
def TwoSwitches(self, x, y, o):
""" An example: light controlled by 2 switches (Rosen, 12.3, Example 3,
- Figure 6, p. 825)
F(x, y) = xy + !x.!y
"""
# Wires x, y, and o are passed as parameters.
# Only the internal wires need to be created:
xy = self.Wire('xy')
not_x = self.Wire('not_x')
not_y = self.Wire('not_y')
notx_noty = self.Wire('notx_noty')
self.AndGate(x,y,xy)
self.Inverter(x, not_x)
self.Inverter(y, not_y)
self.AndGate(not_x, not_y, notx_noty)
self.OrGate(xy, notx_noty, o)
return 'ok'
# This function needs to be defined: parameter, body definition
def HalfAdder(self, x, y, s, c):
notx_and_y=self.wire('notx_and_y')
x_and_noty=self.wire('x_and_noty')
cwire=self.wire('cwire')
allwire=self.wire(allwire)
self.OrGate(self.AndGate(not x,y,notx_and_y),self.AndGate(x,not y,x_and_noty),allwire)
cwire=self.AndGate(x,y,cwire)
c=cwire
s=allwire
pass
def FullAdder(self,x,y,c_i,s, c_out):
#TODO
pass
【问题讨论】:
-
那是很多的代码。介意只发布直接相关的部分吗?
-
你能用多个输入的与门和或门吗,比如
3-and? -
它的 2 个输入和一个输出线
标签: python boolean-logic circuit