这是一个使用 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
输入。