2017-12-18 12 views
0

간단한 플래그를 확인하려고합니다. 그러나 IF 문이 실패하고 올바른 결과를 제공하지 않습니다. 누군가 도움을 줄 수 있기를 바랍니다.python if 문이 실패합니다

나는 URL을

https://bittrex.com/api/v1.1/public/getticker?market=usdt-btc 
GET 요청에 대한

하고 (브라우저에 URL에서) 같은 외모를 반환해야 데이터 (python3.6에) 사용하고 있습니다 :

{"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 
    ============================= 

내가 여기에없는 것에 대한 아이디어가 있습니까? 나는 그것이 간단하다는 것을 확신한다. 제발 도와주세요. 나는 다소 파이썬과 새로운 것에 대해 새로운 것을 알고 있으며, 지난 2 일간 많이 읽었지만 문제를 찾을 수 없었다!

+0

당신은 텍스트' "True"'를 사용하고 있지만 부울 값'True' 여야합니다. – furas

+0

감사합니다. @chris – elanor

+0

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

답변

2

json.loads()true을 파이썬의 부울 True (conversion 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를 정의하고이를 체크 할 수 있다고 생각한다. 그러나 이미 파이썬과 미리 정의 된 것처럼 보인다. –

+0

@ForumStudiologe 네, 맞습니다. 문서를 지나치게 복잡하게 만들지 말고 따르십시오. 감사. – alecxe