2016-03-01 3 views
0

Как избежать ошибки остановки? Я не знаю о каких-либо функциях или циклах, которые код может выполнять итерацией.Python Wolfram Alpha API: StopIteration

import wolframalpha 

client = wolframalpha.Client('My Key is Goes Here') 
res = client.query('pi') 

print next(res.results).text 

ответ

0

Я никогда не использовал wolframalpha, но это выглядит, как это должно быть

for result in res.results: 
    print result.text 

Edit: Я теперь установил wolframalpha и я вижу, что этот запрос (и другие, которые я попробовал) ничего не найдено в res.results. Вместо этого у них есть pods. Вы можете перебрать стручки, как in the docs:

for pod in res.pods: 
    print '{p.title}: {p.text}'.format(p=pod) 
0

Использование next является то, что создает ошибку StopIteration. API Python для WolframAlpha предоставляет итератор для вас перебрать результаты с (next просто получает «следующий» результат, а не все из них)

Вы могли бы ловушку ошибки с Try/за исключением пункта:

try: 
    print next(res.results).text 
except StopIteration: 
    print "No results" 
+0

Это действительно не решает проблему, потому что ничего не напечатает. –

+0

Если он напечатан раньше, он будет после. Получение ошибки StopIteration при вызове следующего означает, что нет результатов 'next'. Мое решение останавливает распространение этого исключения (и вы можете печатать «никаких результатов» в предложении 'except', если вам это нравится лучше). – Gerrat

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