2016-12-05 33 views
1

我是Python新手。我使用Spyder(熊貓和numpy)運行數據分析算法。這需要在數據中的兩個變量上實現一個RS觸發器。 像這樣在C:是否有可能在Python中實現RS觸發器真值表?

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

這裏R_B是R輸入到觸發器和S-b是S輸入。請注意,使用指向觸發器之前狀態的指針來保留之前的狀態。這是否也可以在Python中實現?

回答

0

這是一個函數,它使用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輸入。

+0

感謝您的摘錄!它首先需要初始狀態。關於r == s == True,在系統設計中確保它不會發生。 – VinayakR

+0

@VinayakR由於Python本身沒有指針,因此Python版本必須與C版本稍有不同。事實上,它沒有類C變量。請參閱[其他語言有「變量」,Python有「名稱」](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables)。 –

+0

@VinayakR我想你可以使用自定義類來保存狀態,並使用處理更新的方法;類構造函數會將觸發器初始化爲已知狀態。這隻會是幾行代碼,但恕我直言,這可能是這個應用程序的矯枉過正。 –

相關問題