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

如何在禁用split、字典和with语句的前提下,将文件数据存入两个对应列表

如何在禁用split、字典和with语句的前提下,将文件数据存入两个对应列表

嘿,我看了你写的代码,发现几个小问题,咱们来一步步修正,刚好能满足你不能用split、字典和with语句的要求~

首先得指出你原代码里的两处明显问题:

  • 那个for item in FILENAME的循环完全没必要,而且是错误的——FILENAME是你的文件名字符串,遍历它会拿到每个字符,这和读取文件内容半毛钱关系都没有,只会让逻辑混乱。
  • 你把同一行内容同时加到了两个列表里,这显然不对,毕竟咱们要的是第一行存名字、第二行存分数,交替对应。

根据你提供的game.txt格式(名字和分数各占一行,交替出现),我给你调整后的代码:

首先先定义好文件名和要用到的两个空列表:

FILENAME = 'game.txt'
player_names = []
high_scores = []

然后是修正后的read_file函数:

def read_file():
    infile = open(FILENAME, 'r')
    line = infile.readline().rstrip('\n')
    while line != '':
        # 把当前行(玩家名字)加入名字列表
        player_names.append(line)
        # 读取下一行,也就是对应的高分
        score_line = infile.readline().rstrip('\n')
        # 把分数转成整数后加入分数列表
        high_scores.append(int(score_line))
        # 读取下一个玩家的名字行,准备下一轮循环
        line = infile.readline().rstrip('\n')
    infile.close()

咱们来理一理这段代码的逻辑:

  • 打开文件后,先读取第一行(第一个玩家的名字),进入循环
  • 每一轮循环里,先把当前的名字存入player_names
  • 紧接着读取下一行,这行就是该玩家的高分,转成整数后存入high_scores
  • 然后再读取下一行,作为下一个循环的“当前行”(也就是下一个玩家的名字)
  • 当line变成空字符串时,说明文件已经读完,关闭文件即可

你可以调用这个函数后打印两个列表测试一下:

read_file()
print("玩家名字列表:", player_names)
print("高分列表:", high_scores)

运行后会得到你想要的结果:

玩家名字列表: ['John', 'Mary', 'Larry', 'Mark']
高分列表: [7, 5, 9, 4]

这样既完全遵守了不能用split、字典和with语句的要求,又完美把文件里的名字和对应高分分别存入了两个列表里~

备注:内容来源于stack exchange,提问作者Rebecca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:39:29