2016-10-13 3 views
0

Я пытаюсь просмотреть несколько источников, чтобы увидеть, какая из них имеет конкретную запись. неинструкция elif работает не так, как ожидалось

Мой вход выглядит следующим образом:

json_str2 = urllib2.urlopen(URL2).read() 
u = json.loads(json_str2) 
#load all five results 
One = u['flightStatuses'][0] 
Two = u['flightStatuses'][1] 
Three = u['flightStatuses'][2] 
Four = u['flightStatuses'][3] 
Five = u['flightStatuses'][4] 

Мой if оператор работает правильно, и я получаю правильный результат:

if One['flightNumber'] == str(FlEnd): 
    fnumber = One['flightId'] 
    print fnumber 

Но когда я добавляю elif: ответ неверен (ничего), даже если первое заявление - True.

Не понимаю, почему elif не работает?

# if statement checks each result to define flightId, needed for tracking. 
if One['flightNumber'] == str(FlEnd): 
    fnumber = One['flightId'] 
elif Two['flightNumber'] == str(FlEnd): 
    fnumber = Two['flightId'] 
print fnumber 
+0

В вашем состоянии нет ничего плохого; что-то еще происходит. – kindall

+0

Спасибо, и я гарантирую, что буду правильно форматировать. Один ['flightNumber'] делает равную str (FlEnd), а Two ['flightNumber'] не ... я пропустил что-то действительно очевидное? - Кажется, это переписывает fnumber? –

ответ

3

Вы должны написать это как петлю над пятью статуями полета вместо пяти переменных и пяти условий.

results = json.loads(urllib2.urlopen(URL2).read())['flightStstuses'] 
for result in results: 
    if result['flightNumber'] == str(FlEnd): 
     fnumber = result['flightId'] 
     break 
else: 
    fnumber = None 
print fnumber 
+0

Thank you :) - Получаем код ошибки: –

+0

if result ['flightNumber'] == str (FlEnd): TypeError: строковые индексы должны быть целыми (данные в этих 5 результатах могут быть немного грязными) –

+0

Да, мой плохой. Забыл получить ключ FlightStatuses. – kindall

Смежные вопросы