You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将年份API查询代码封装为符合要求的Python函数?

问题解决:封装年份事实API函数并返回字典

你的代码存在几个关键问题,导致无法实现预期功能:

  • 函数参数设计错误:query函数接收的是请求对象参数,但实际需要传入的是起始/结束年份
  • 依赖全局变量:函数内部直接使用全局的FY和LY,既破坏封装性,还可能因变量修改引发逻辑错误
  • 未按要求存储结果:没有创建字典来保存年份与对应事实的映射,反而返回无关的年份数值
  • 外部打印未定义变量:最后print(url_1, url_n)中的变量在全局作用域不存在,实际运行会报错,你看到的<Response [200]>是之前测试的残留结果

修正后的完整代码

import requests

def get_year_facts(start_year, end_year):
    # 初始化用于存储结果的字典
    year_facts = {}
    # 遍历起始年到结束年的所有年份(包含两端)
    for year in range(start_year, end_year + 1):
        # 构造API请求地址
        api_url = f'http://numbersapi.com/{year}/year'
        # 发送请求并获取响应文本
        response = requests.get(api_url)
        # 将年份作为键,事实内容作为值存入字典
        year_facts[year] = response.text
    # 返回最终的年份事实字典
    return year_facts

# 测试函数
FY = 2015
LY = 2022
year_result = get_year_facts(FY, LY)

# 可选:打印结果查看
for year, fact in year_result.items():
    print(f"{year}: {fact}")

代码改进说明

  • 函数参数改为start_year和end_year,语义清晰,符合函数封装规范
  • 使用range循环遍历年份,比while循环更简洁易维护
  • 明确创建字典存储结果,严格遵循任务要求返回键值对结构
  • 函数仅负责获取并返回数据,打印逻辑放在外部,分离职责更合理

内容的提问来源于stack exchange,提问作者Uri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:05:17