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

如何用Python正确实现API返回稀有度的多语言文本转换?

问题分析

你的代码存在三个核心问题:

  1. 错误的变量赋值:rarity = {api["rarity"]} 把API返回的字符串稀有度包装成了单元素集合,导致后续if rarity:永远为True(非空集合在布尔判断中始终为真),完全无法正确判断稀有度值。
  2. 缩进逻辑混乱:第二个if语句被错误嵌套在第一个else的代码块内,且逻辑完全偏离需求,无法根据不同稀有度值执行对应转换。
  3. 条件判断逻辑错误:当前的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:42:18