CS50x2023 Finance作业lookup函数返回None问题排查求助
排查CS50x2023 Finance中lookup函数返回None的问题
以下是针对该问题的具体排查方向:
1. 验证API密钥与请求有效性
- 检查环境变量加载:确保
.env文件中的API_KEY配置正确,且在启动Flask前已执行source .env加载环境变量。可以在lookup函数中添加print(os.getenv("API_KEY")),确认密钥能被正常读取。 - 直接测试API端点:用浏览器访问
https://cloud.iexapis.com/stable/stock/aapl/quote?token=你的API密钥,若返回错误(如401、404),说明密钥失效或权限不足,需重新生成有效密钥。
2. 检查lookup函数逻辑
- 确认API请求URL格式:CS50x2023使用IEX Cloud免费 tier,正确URL应为
https://cloud.iexapis.com/stable/stock/{symbol}/quote?token={api_key},避免使用旧端点或拼接错误。 - 增加请求调试信息:在函数中添加打印语句,查看响应状态与内容:
若返回非200状态码,说明请求失败;若返回JSON但字段不符,需核对API返回的字段名(如是否用response = requests.get(url) print(response.status_code) print(response.text)latestPrice而非price)。 - 异常捕获:确保函数处理了网络错误、JSON解析失败等情况,避免未捕获异常直接返回None。
3. 检查quote路由调用逻辑
- 确认表单参数传递:在路由中打印
request.form.get("symbol"),验证用户输入的股票代码是否被正确获取,建议统一转成大写(symbol.upper())后再传入lookup函数。 - 检查返回值处理逻辑:确认路由中对lookup返回None的情况有明确处理,避免因未判断导致后续错误。
4. 环境与依赖检查
- 升级requests库:执行
pip install --upgrade requests,避免因旧版本库的兼容性问题导致请求失败。 - 确认Python环境:确保使用CS50推荐的Python版本(3.10+),且运行环境为配置正确的虚拟环境或CS50 Codespace。
若提供具体代码片段(如lookup函数、quote路由的完整代码),可更精准定位问题,比如是否存在URL拼接错误、JSON键名误用等细节问题。
内容的提问来源于stack exchange,提问作者Bartosz Tarka
相关产品推荐
相关产品推荐

