Python新手求助:如何用用户输入填充循环处理API返回的JSON数据
用用户输入控制For循环处理API返回的产品数据
嘿,刚接触Python就开始对接API啦,这真的很棒!针对你的需求,我来一步步拆解怎么实现用用户输入来控制for循环处理那些产品数据~
第一步:先获取API的JSON数据
首先咱们得先把API返回的JSON数据拿到手,这里推荐用requests库(如果还没装的话,先跑pip install requests安装)。示例代码如下:
import requests # 替换成你实际对接的API地址 api_url = "https://your-api-endpoint.com/products" try: # 发送GET请求获取数据 response = requests.get(api_url) response.raise_for_status() # 如果请求失败,抛出异常 # 解析JSON数据,取出products数组 products = response.json()["products"] print(f"成功获取到{len(products)}个产品数据!") except requests.exceptions.RequestException as e: print(f"API请求出错啦:{e}") exit()
第二步:根据用户输入设计循环逻辑
接下来就可以根据用户的不同输入需求,来编写对应的for循环了。下面给你几个常见场景的示例:
场景1:用户输入要处理的产品数量
比如用户想只查看前N个产品,咱们可以让用户输入数字,然后循环处理对应数量的产品:
user_input = input("请输入要处理的产品数量:") try: num_to_process = int(user_input) # 确保输入的数量不超过产品总数 num_to_process = min(num_to_process, len(products)) print(f"正在处理前{num_to_process}个产品:") for idx, product in enumerate(products[:num_to_process], 1): print(f"{idx}. 产品ID: {product['id']}, 标题: {product['title']}, 可见性: {product['visibility']}") except ValueError: print("请输入有效的数字哦!")
场景2:用户输入关键词筛选产品
如果用户想找标题包含特定关键词的产品,咱们可以让用户输入关键词,然后在循环里做匹配:
keyword = input("请输入要筛选的产品标题关键词:").strip() if not keyword: print("关键词不能为空哦!") else: matched_products = [] for product in products: # 忽略大小写匹配,提升用户体验 if keyword.lower() in product["title"].lower(): matched_products.append(product) if matched_products: print(f"找到{len(matched_products)}个匹配的产品:") for product in matched_products: print(f"ID: {product['id']}, 标题: {product['title']}, 链接: {product['url']}") else: print(f"没有找到包含'{keyword}'的产品哦!")
场景3:用户输入可见性状态筛选产品
如果用户想筛选可见/不可见的产品,可以让用户输入对应状态,然后循环过滤:
valid_visibility = ["visible", "hidden"] visibility_input = input(f"请输入要筛选的可见性状态(可选值:{', '.join(valid_visibility)}):").strip().lower() if visibility_input not in valid_visibility: print(f"请输入有效的状态:{', '.join(valid_visibility)}") else: filtered_products = [p for p in products if p["visibility"] == visibility_input] print(f"找到{len(filtered_products)}个可见性为'{visibility_input}'的产品:") for product in filtered_products: print(f"ID: {product['id']}, 标题: {product['fulltitle']}, 更新时间: {product['updatedAt']}")
小提示
- 记得处理用户的无效输入(比如非数字、不符合要求的状态值),避免程序崩溃;
- 如果API返回的数据量很大,可以考虑分页获取,不过刚接触的话先从完整数据开始练手就好;
- 可以根据自己的实际需求,拓展更多的输入筛选条件(比如按创建时间范围筛选等)。
内容的提问来源于stack exchange,提问作者Solaiman
相关产品推荐
相关产品推荐

