1

我是 Python 新手。我正在使用 Spyder(pandas 和 numpy)运行数据分析算法。这需要在数据中的两个变量上实现 RS 触发器。在 C 中是这样的:

((R_b) != FALSE) ? (*(State_pb) = FALSE) : (((S_b) != FALSE) ? (*(State_pb) = TRUE) : *(State_pb));

这里 R_b 是触发器的 R 输入,而 Sb 是 S 输入。注意使用指向触发器先前状态的指针来保留先前状态。这也可以在 Python 中实现吗?

4

1 回答 1

1

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

于 2016-12-05T12:55:47.757 回答