如何避免死角错误?我不知道代码可能迭代的任何函数或循环。Python Wolfram Alpha API:StopIteration
import wolframalpha
client = wolframalpha.Client('My Key is Goes Here')
res = client.query('pi')
print next(res.results).text
如何避免死角错误?我不知道代码可能迭代的任何函数或循环。Python Wolfram Alpha API:StopIteration
import wolframalpha
client = wolframalpha.Client('My Key is Goes Here')
res = client.query('pi')
print next(res.results).text
我从来没有用过wolframalpha
,但是这看起来应该是
for result in res.results:
print result.text
编辑:现在我已经安装wolframalpha
,我看到,该查询(和其他人我有尝试过)在res.results
没有结果。相反,他们有pods
。您可以通过豆荚为in the docs迭代:
for pod in res.pods:
print '{p.title}: {p.text}'.format(p=pod)
您使用的是next是什么创造的StopIteration错误。 Python对WolframAlpha的API是你在对结果提供了一个迭代循环(next
只是得到了“未来”的结果,而不是所有的)
你可以捕集器和尝试错误/ except子句:
try:
print next(res.results).text
except StopIteration:
print "No results"
虽然这并不能真正解决问题,因为没有任何东西会打印出来。 –
如果之前打印过,则会在之后打印。下一次调用时出现StopIteration错误意味着没有'next'结果。我的解决方案阻止这个异常传播(如果你更喜欢这个,你可以在'except'子句中打印“无结果”)。 – Gerrat