如何用Python正确实现API返回稀有度的多语言文本转换?
问题分析
你的代码存在三个核心问题:
- 错误的变量赋值:
rarity = {api["rarity"]}把API返回的字符串稀有度包装成了单元素集合,导致后续if rarity:永远为True(非空集合在布尔判断中始终为真),完全无法正确判断稀有度值。 - 缩进逻辑混乱:第二个
if语句被错误嵌套在第一个else的代码块内,且逻辑完全偏离需求,无法根据不同稀有度值执行对应转换。 - 条件判断逻辑错误:当前的
if/else没有针对API返回的具体稀有度值(如epic、uncommon)做判断,而是直接覆盖变量值,根本无法实现“按稀有度转换语言”的功能。
解决方案
用字典映射替代混乱的if/else逻辑,既简洁又易维护,同时修正变量赋值和缩进问题:
修正后的完整代码
import json import requests args = input("Escribe: ") response = requests.get("https://jose89fcb.es/apifortnite/fish.php") data = response.json() # 定义稀有度的英西语映射字典,可根据API返回的其他稀有度补充 rarity_translations = { "epic": "épico", "uncommon": "un poco común", "common": "común", "rare": "raro", "legendary": "legendario" } match_found = False for api in data['fish']: if args == api["name"]: print(f'Imagen: {api["image"]}') print(f'Descripción: {api["description"]}') # 正确获取API返回的稀有度字符串 original_rarity = api["rarity"] # 获取对应的西班牙语,若没有匹配则保留原英文 spanish_rarity = rarity_translations.get(original_rarity, original_rarity) # 同时输出英语和西班牙语稀有度,符合你的需求 print(f'Rareza (Inglés): {original_rarity}') print(f'Rareza (Español): {spanish_rarity}') match_found = True if not match_found: print("Error")
关键修改点
- 去掉了错误的集合赋值,直接用
original_rarity = api["rarity"]获取API返回的稀有度字符串。 - 使用
rarity_translations字典存储英西语对应关系,比嵌套if/else更清晰,后续新增稀有度只需在字典里添加键值对即可。 - 使用
dict.get()方法处理未知稀有度,避免出现KeyError,兼容性更强。 - 修正了所有缩进问题,保证代码块逻辑正确。
- 明确输出英语和西班牙语的稀有度,满足你“转换为西班牙语与英语文本”的需求。
内容的提问来源于stack exchange,提问作者sandra
相关产品推荐
相关产品推荐

