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

如何让findPokemonInfo函数返回无括号的宝可梦信息格式

问题

我想要实现一个名为findPokemonInfo(name)的函数,遍历CSV文件(文件格式为name,type,attack,speed,capture_rate),返回如下格式的宝可梦信息:

attack: 49
capture_rate: 45
name: Bulbasaur
speed: 45
type: grass

当前编写的代码如下:

def findPokemonInfo(name): 
    import csv 
    myFile = open('pokemon.csv',"r")
    csvReader = csv.reader(myFile,delimiter=",")
    next(csvReader)
    pokeMon = {}
    for row in csvReader:
        if (row[0] == name):
            pokeMon[row[0]] = {'attack':row[2], 'capture_rate':row[4], 'name':row[0], 'speed':row[3], 'type':row[1]}
            print (pokeMon)

调用findPokemonInfo('Bulbasaur')后返回结果为:

{'Bulbasaur': {'attack': '49', 'capture_rate': '45', 'name': 'Bulbasaur', 'speed': '45', 'type': 'grass'}}

请问如何修改代码,让返回结果不再带有括号,符合预期格式?

解决方案

你需要调整代码逻辑,直接按指定格式打印找到的宝可梦属性,而非把数据嵌套进字典后打印整个字典。同时建议用with语句自动管理文件,避免资源泄漏,找到目标后提前退出循环提升效率。

修改后的代码如下:

def findPokemonInfo(name): 
    import csv 
    # with语句自动处理文件关闭
    with open('pokemon.csv',"r") as myFile:
        csvReader = csv.reader(myFile,delimiter=",")
        next(csvReader)  # 跳过表头行
        for row in csvReader:
            if row[0] == name:
                # 按需求格式逐行打印属性,可选转换数值类型
                print(f'attack: {row[2]}')
                print(f'capture_rate: {row[4]}')
                print(f'name: {row[0]}')
                print(f'speed: {row[3]}')
                print(f'type: {row[1]}')
                return  # 找到目标后直接退出,无需继续遍历
    # 未找到时的提示(可选)
    print(f'未找到名为{name}的宝可梦')

修改说明:

  1. 替换字典存储为直接打印:原来的代码把数据存进嵌套字典后打印,自然会带大括号。现在直接按key: value格式逐行输出每个属性,完全匹配预期格式。
  2. 用with管理文件:自动完成文件关闭操作,避免手动关闭可能出现的遗漏或错误。
  3. 提前终止遍历:找到目标宝可梦后用return结束函数,不用遍历剩余行,节省资源。
  4. 可选数值转换:如果需要把attack、speed等字段从字符串转为整数,可写成print(f'attack: {int(row[2])}'),这样输出的数值就不会带引号。

内容的提问来源于stack exchange,提问作者Jacob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:55:20