下記のようなコードで2個の値を取得することまではできたのですが、このclosea, closebという値を利用しようとしたときに困っています。
例えば下記のようにmainでコードを利用して代入しようとした場合、両方から値が来ていればいいですが、来ていない場合に、値がなくなってしまい、プログラムが動かないということが起きます。
これを値が来ていないときは片方は前回の値を(初回だけは両方揃うまでは片方は0でもいいのですが)したいと考えているのですが、どのようにしたらいいかで詰まってしまいました。。。
(試しにb.pyのようにmainの中にclosea, closebを0と定義してみたりすればコードは動きますが、そうなると次の時に片方が0になってしまって前回の値でなくなってしまうのでどうしたものかと。。。)
対応法があればお伺いできれば幸いです。
(def mainの中はとりあえず適当なコードです。実際にはもっと長いコードが使われるものとご認識いただければと思います)
python3
1(a.py) 2import websocket 3import json 4 5 6def main(closea, closeb): 7 closea = closea + 10 8 closeb = closeb + 10 9 10 print (closea, closeb) 11 12 13def on_message(ws, message): 14 try: 15 rs = json.loads(message) 16 channel = rs["params"]["channel"] 17 if channel == "lightning_ticker_FX_BTC_JPY": 18 closefx = round(float('{ltp}'.format(**(rs["params"]["message"])))) 19 elif channel == "lightning_ticker_BTC_JPY": 20 closespot = round(float('{ltp}'.format(**(rs["params"]["message"])))) 21 else: 22 print("Got other channel data:", channel, rs) 23 except Exception as e: 24 print(e) 25 26 27 main(closefx, closespot) 28 29def on_error(ws, error): 30 print(error) 31 32 33def on_close(ws): 34 print("### closed ###") 35 36 37def on_open(ws): 38 print("### open ###") 39 ws.send(json.dumps([{'method': 'subscribe', 'params': {'channel': 'lightning_ticker_FX_BTC_JPY'}},{'method': 'subscribe', 'params': {'channel': 'lightning_ticker_BTC_JPY'}}])) 40 41 42if __name__ == "__main__": 43 ws = websocket.WebSocketApp("wss://ws.lightstream.bitflyer.com/json-rpc", 44 on_message=on_message, 45 on_error=on_error, 46 on_close=on_close) 47 ws.on_open = on_open 48 ws.run_forever()
python3
1(b.py) 2 3import websocket 4import json 5 6 7def main(closea, closeb): 8 closea = 0 9 closeb = 0 10 11 closea = closea + 10 12 closeb = closeb + 10 13 14 print (closea, closeb) 15 16以下省略 17
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/27 09:33
退会済みユーザー
2021/03/27 12:15 編集
2021/03/27 12:31 編集
退会済みユーザー
2021/03/27 12:40 編集
退会済みユーザー
2021/03/27 12:43 編集
2021/03/27 14:12
退会済みユーザー
2021/03/27 14:19
2021/03/27 14:35