這是一個函數,它使用Python的條件運算符對C代碼進行相當直接的轉換。
from itertools import product
def flipflop(state, r, s):
return False if r else (True if s else state)
# test
print('state : r, s -> new_state')
for state, r, s in product((False, True), repeat=3):
print('{!s:5} : {!s:5}, {!s:5} -> {!s:5}'.format(state, r, s, flipflop(state, r, s)))
輸出
state : r, s -> new_state
False : False, False -> False
False : False, True -> True
False : True , False -> False
False : True , True -> False
True : False, False -> True
True : False, True -> True
True : True , False -> False
True : True , True -> False
注意,無論此代碼和你的C代碼正確處理禁r == s == True
輸入。
感謝您的摘錄!它首先需要初始狀態。關於r == s == True,在系統設計中確保它不會發生。 – VinayakR
@VinayakR由於Python本身沒有指針,因此Python版本必須與C版本稍有不同。事實上,它沒有類C變量。請參閱[其他語言有「變量」,Python有「名稱」](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables)。 –
@VinayakR我想你可以使用自定義類來保存狀態,並使用處理更新的方法;類構造函數會將觸發器初始化爲已知狀態。這隻會是幾行代碼,但恕我直言,這可能是這個應用程序的矯枉過正。 –