2017-12-18 2 views
0

私は単純なフラグをtrueまたはfalseにチェックしようとしていますが、私のIF文は失敗し、正しい結果が得られません。python if文が失敗する

私はそれが(ブラウザでURLから)このようなルックスを返す必要がありget要求とデータ用

https://bittrex.com/api/v1.1/public/getticker?market=usdt-btc 

(python3.6に)このURLを使用しています:

{"success":true,"message":"","result":{"Bid":18362.00000000,"Ask":18399.00000000,"Last":18362.00000000}} 

ここに私のプログラムは次のとおりです。コンソールの

import sys 
    import time 
    import requests 
    import json 
    import os 

    BTCtick = 'https://bittrex.com/api/v1.1/public/getticker?market=usdt-btc' 
    reqBTC = requests.get('https://bittrex.com/api/v1.1/public/getticker?  market=usdt-btc').text 
    BTCdata = json.loads(reqBTC) 

    testResult = BTCdata['success'] 
    print("=============================") 
    print("success content: ", BTCdata['success']) 
    if (testResult == 'True'): 
     print("IF: success flag is TRUE") 
    else: 
     print("IF: success flag is FALSE") 
    print("=============================") 

    print("result content: ", BTCdata['result']) 
    print("Bid: ", BTCdata['result'] ['Bid'], sep='') 
    print("Ask: ", BTCdata['result'] ['Ask'], sep='') 
    print("Last: ", BTCdata['result'] ['Last'], sep='') 
    print("=============================") 
    exit() 

出力は次のようになります。

============================= 
    success content: True 
    IF: success flag is FALSE 
    ============================= 
    result content: {'Bid': 18420.0, 'Ask': 18439.99999999, 'Last': 18439.99999999} 
    Bid: 18420.0 
    Ask: 18439.99999999 
    Last: 18439.99999999 
    ============================= 

私はここで何が間違っているのでしょうか?私はそれがシンプルだと確信しています 私は少し助けてください、私は多少Pythonに新しいと何が間違っているかを見つける、私は最後の二日間をたくさん読んでいますが、問題を見つけることができませんでした!

+0

テキスト '' True ''を使用していますが、ブール値' True'にする必要があります – furas

+0

ただ気付いた、ありがとう@chris – elanor

+0

'True'!=' 'True''!= '' true'' –

答えて

2

json.loads()は、trueをPythonのブール値Trueconversion table for the reference)に変換します。あなたは単なる文字列'True'と比較するのではなく、testResult値のtruthinessをチェックする必要があります。

In [1]: testResult = True 

In [2]: testResult == 'True' 
Out[2]: False 
:つまり

if testResult: 
    print("IF: success flag is TRUE") 
else: 
    print("IF: success flag is FALSE") 

、ここにあなたが'True'文字列にtestResultを比較したときに何が起こったかであります

+0

@alecxe、それは私の日を救った: - D。非常に感謝して非常に有益な、私はそれを確認することができるか分からなかった。私は別のアプローチは、TRUEとFALSEを定義してそれをチェックすることができますが、それは既にPythonの一部であり、事前定義されているように見えるでしょうか? –

+0

@ForumStudiologeええ、そうですね。ありがとう。 – alecxe

関連する問題