【问题标题】:Python Wolfram Alpha API: StopIterationPython Wolfram Alpha API:StopIteration
【发布时间】:2016-06-14 13:24:34
【问题描述】:

如何避免停止迭代错误?我不知道代码可能正在迭代的任何函数或循环。

import wolframalpha

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

print next(res.results).text

【问题讨论】:

    标签: python api wolframalpha stopiteration


    【解决方案1】:

    我从未使用过wolframalpha,但看起来应该是这样

    for result in res.results:
        print result.text
    

    编辑:我现在已经安装了wolframalpha,我看到该查询(以及我尝试过的其他查询)在res.results 中没有结果。相反,他们有pods。您可以以 in the docs 的身份遍历 pod:

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

    【讨论】:

      【解决方案2】:

      您对next 的使用导致了 StopIteration 错误。 用于 Wolframalpha 的 Python 的 API 提供了一个迭代器,供您使用(next 只获取“下一个”结果而不是所有结果)

      您可以使用 try/except 子句捕获错误:

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

      【讨论】:

      • 但这并不能真正解决问题,因为那时什么都不会打印。
      • 如果之前打印,它会在之后。调用 next 时出现 StopIteration 错误意味着没有 next 结果。我的解决方案阻止此异常传播(如果您更喜欢,您可以在 except 子句中打印“无结果”)。
      猜你喜欢
      • 2019-01-21
      • 2015-12-20
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多