如何通过PokeAPI自动获取单只宝可梦的所有属性类型?
解决方法
首先你原代码里的URL写法有误——f-string里不需要写%7Bname%7D,直接用{name}就行,不然请求的地址会带多余的转义字符,可能拿不到正确数据。
原代码里的[0]是硬取第一个属性类型,所以只能拿到单个值。要获取所有类型,你可以遍历poke_request['types']这个列表,把每个元素里的类型名提取出来存到列表里,下面是两种简单可行的方法:
方法一:for循环遍历
import requests name = "charizard" # 修正后的URL url = f'https://pokeapi.co/api/v2/pokemon/{name}' poke_request = requests.get(url) poke_data = poke_request.json() # 变量名更清晰,方便后续理解 types_list = [] # 遍历所有类型条目 for type_entry in poke_data['types']: # 提取类型名并添加到列表 types_list.append(type_entry['type']['name']) print(types_list) # 输出结果: ['fire', 'flying']
方法二:列表推导式(更简洁)
import requests name = "charizard" url = f'https://pokeapi.co/api/v2/pokemon/{name}' poke_data = requests.get(url).json() # 一行代码生成包含所有类型的列表 types_list = [entry['type']['name'] for entry in poke_data['types']] print(types_list)
这两种方法都不需要指定索引,会自动遍历所有类型条目,最终得到包含目标宝可梦所有属性类型的列表。
内容的提问来源于stack exchange,提问作者Uemura
相关产品推荐
相关产品推荐

