2016-12-05 6 views
1

私はPythonが初めてです。私はSpyder(pandasとnumpy)を使ってデータ解析アルゴリズムを実行しています。これには、データ内の2つの変数にRSフリップフロップを実装する必要があります。 Cにおけるこのような もの:ここRSフリップフロップの真理値表をPythonで実装することはできますか?

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

R_Bは、フリップフロップ及びS-BへのR入力はS入力です。前の状態を保持するためにフリップフロップの前の状態へのポインタの使用に注意してください。これはPythonでも実装できますか?

答えて

0

ここでは、Pythonの条件演算子を使用して、Cコードをかなり直接変換する関数を示します。このコードもCコードのどちらも正しく禁じr == s == True入力を処理することを

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 

注意。

+0

スニペットありがとう!それから始まる初期状態が必要です。そして、r == s == Trueについては、システム設計においてそれが起こらないことが保証される。 – VinayakR

+0

@VinayakR Pythonのバージョンは、Cのバージョンと少し違って動作しなければなりません。なぜなら、Pythonはそれ自体がポインタを持たないからです。実際、Cのような変数はありません。 [その他の言語には「変数」があり、Pythonには「名前」があります(http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables)。 –

+0

@VinayakR私はあなたが状態を保持するカスタムクラスを使用してこれを行うことができると思います。クラスコンストラクタはフリップフロップを既知の状態に初期化する。それはコードの数行だけですが、IMHOはおそらくこのアプリケーションのために過剰です。 –

関連する問題