如何调用BoredAPI筛选指定价格区间的活动并输出指定字段
问题修复方案
问题根因
- 你在循环内部直接覆盖了函数入参
minprice和maxprice的原始值,导致你传入的价格区间阈值丢失,无法完成过滤 - 没有增加价格区间的判断逻辑,所有请求返回的结果无论是否符合要求都被直接输出
修复后的代码
如果你需要保留循环10次本地筛选的逻辑,可使用以下代码:
import requests import json def fun(minprice,maxprice): match_count = 0 for i in range(0,10): response= requests.get("http://www.boredapi.com/api/activity/") content_dict=json.loads(response.content) # 直接构造需要的字段,无需逐个删除无关字段 filter_result = { "activity": content_dict["activity"], "type": content_dict["type"], "price": content_dict["price"] } # 新增价格区间判断逻辑 if minprice <= filter_result["price"] <= maxprice: print(filter_result) match_count += 1 if match_count == 0: print("10次调用未找到符合价格区间的活动,可增加调用次数重试") fun(0,0.1)
额外优化方案
你使用的BoredAPI本身原生支持价格区间查询参数,无需本地循环筛选,直接在请求时携带参数即可一次拿到符合要求的结果,运行效率更高:
import requests import json def fun(minprice,maxprice): response= requests.get( "http://www.boredapi.com/api/activity/", params={"minprice": minprice, "maxprice": maxprice} ) content_dict=json.loads(response.content) if "error" not in content_dict: filter_result = { "activity": content_dict["activity"], "type": content_dict["type"], "price": content_dict["price"] } print(filter_result) else: print("没有符合条件的活动") fun(0,0.1)
内容的提问来源于stack exchange,提问作者Jose Antonio Piedehierro Arias
相关产品推荐
相关产品推荐

