首页 > 解决方案 > 当我尝试在 VS 代码 python ValueError 中使用 Wolfram Alpha 时出现此错误:字典更新序列元素 #0 的长度为 1;2 是必需的

问题描述

这是我的代码

import wolframalpha

app_id = '876P8Q-R2PY95YEXY'

client = wolframalpha.Client(app_id)

res = client.query(input('Question: '))

print(next(res.results).text)

我试过的问题是 1 + 1 我运行它然后我得到这个错误

Traceback (most recent call last):
  File "c:/Users/akshi/Desktop/Xander/Untitled.py", line 9, in <module>
    print(next(res.results).text)
  File "C:\Users\akshi\AppData\Local\Programs\Python\Python38\lib\site-packages\wolframalpha\__init__.py", line 166, in text
    return next(iter(self.subpod)).plaintext
ValueError: dictionary update sequence element #0 has length 1; 2 is required

请帮我

标签: wolframalpha

解决方案


当我尝试运行相同的代码时,我遇到了同样的错误。

您可以参考本网站的“实现 Wolfram Alpha 搜索”部分,以更好地了解如何从返回的字典中提取结果。

https://medium.com/@salisuwy/build-an-ai-assistant-with-wolfram-alpha-and-wikipedia-in-python-d9bc8ac838fe

另外,我参考上述网站尝试了以下代码....希望它可以帮助你:)

import wolframalpha
client = wolframalpha.Client('<your app_id>')
query = str(input('Question: '))
res = client.query(query)
if res['@success']=='true':
    pod0=res['pod'][0]['subpod']['plaintext']
    print(pod0)
    pod1=res['pod'][1]
    if (('definition' in pod1['@title'].lower()) or ('result' in  pod1['@title'].lower()) or (pod1.get('@primary','false') == 'true')):
        result = pod1['subpod']['plaintext']
        print(result)
else:
    print("No answer returned")

推荐阅读