0
此代碼不運行。它在運行(門)功能期間失效。我得到的第一個錯誤是來自.__name__
調用。這不是我的主要問題,所以我並不特別擔心這個錯誤如何在參數未知的情況下使用參數傳遞函數?
我得到的第二個錯誤是在運行(門)的最後一行。錯誤消息說門不可調用。
我相信我的實際問題是與我的程序結構。我誤解(或誤用)了一些面向對象的原則嗎?如果有人能夠爲我的代碼提供一個示例或更正以更好地構建它,我將不勝感激。謝謝!
main.py
import builtins
import logic
print("Select a logic gate:")
print("1) AND")
print("2) NAND")
print("3) OR")
print("4) NOR")
print("Q) Quit Program")
logicGate = input()
if(int(logicGate) == 1):
run(logic.andGate)
elif(int(logicGate) == 2):
run(logic.nandGate)
elif(int(logicGate) == 3):
run(logic.orGate)
elif(int(logicGate) == 4):
run(logic.norGate)
elif(logicGate.lower() == 'q'):
prog = 'n'
else:
print("Invalid input. Please try again")
def toBool(s):
if s == 'True':
return True
elif s == 'False':
return False
else:
raise ValueError
def run(gate):
print(gate.__name__ + " Gate function")
print("Enter value for 'a'")
valA = input()
print("Enter value for 'b'")
valB = input()
print("Result: " + str(gate(toBool(valA), toBool(valB))))
而且logic.py
def andGate(a, b):
if(a and b):
return True
else:
return False
def nandGate(a,b):
if(a and b):
return False
else:
return True
def orGate(a, b):
if(a or b):
return True
else:
return False
def norGate(a, b):
if(a or b):
return False
else:
return True
如果將'run'和'toBool'移動到腳本的頂部,就在導入之後,完美地工作。 –
@cᴏʟᴅsᴘᴇᴇᴅ是啊即使如此,爲什麼?當你打印結果?如果它的布爾對象不應該是一個整數... 0或1 ...或者是true或者false ...點是...那會增加ValueError – scriptso
@scriptso'>>> str(True); '真' –