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

Python循环中如何同时访问两个元素实现问答对输出?

循环中访问下一个索引

我有一个包含以下内容的文本文件:

what's you'r name?
my name is Micheal
how old are you?
I'm 33 year's old

我编写了如下Python代码:

filename= input("file name?\n")

try:
    txt = open(filename+'.txt', 'r', encoding='utf-8').readlines()
    print('could not find file name')
except FileNotFoundError:
    print('could not fine file')

for count, line in enumerate(txt):
    pass

for i in range(count+1):
       print('Q',txt[i])
       print('A',txt[i+1])

该文本文件存储着问题与答案,我希望输出格式如下:

question 
answer
question 
answer

与文本文件中的顺序一致。请问如何在Python的一次循环中访问两个元素来实现此需求?


首先修正你代码里的两处问题:

  1. try-except逻辑颠倒:成功打开文件后不该打印"找不到文件"的提示,且存在拼写错误(fine→find)
  2. 原循环会触发索引越界:当i取到最后一个元素索引时,i+1超出列表范围

以下是几种一次循环访问两个元素的可行实现:

方法1:步长为2的range循环

让循环索引每次跳2步,直接取当前索引和下一个索引的元素:

filename = input("file name?\n")

try:
    with open(filename + '.txt', 'r', encoding='utf-8') as f:
        txt = f.readlines()
    # 去除每行末尾换行符,避免输出多余空行
    txt = [line.strip() for line in txt]
    
    # 步长为2遍历,每次配对问题和答案
    for i in range(0, len(txt), 2):
        print('Q', txt[i])
        print('A', txt[i+1])
except FileNotFoundError:
    print('could not find file')

用with语句自动管理文件关闭,比直接open更安全;strip()处理换行符让输出更整洁。

方法2:用zip分组配对

把列表拆分为问题(偶数索引)和答案(奇数索引)两组,再用zip一一配对:

filename = input("file name?\n")

try:
    with open(filename + '.txt', 'r', encoding='utf-8') as f:
        txt = [line.strip() for line in f]
    
    # 配对偶数索引的问题和奇数索引的答案
    for question, answer in zip(txt[::2], txt[1::2]):
        print('Q', question)
        print('A', answer)
except FileNotFoundError:
    print('could not find file')

txt[::2]取所有偶数索引元素,txt[1::2]取所有奇数索引元素,zip会自动将两组元素按顺序配对。

方法3:自定义生成器(适合复杂场景)

如果需要更灵活的遍历逻辑,可以写一个生成器函数,每次返回一对元素:

def pair_items(lst):
    it = iter(lst)
    while True:
        try:
            yield next(it), next(it)
        except StopIteration:
            break

filename = input("file name?\n")

try:
    with open(filename + '.txt', 'r', encoding='utf-8') as f:
        txt = [line.strip() for line in f]
    
    for question, answer in pair_items(txt):
        print('Q', question)
        print('A', answer)
except FileNotFoundError:
    print('could not find file')

内容的提问来源于stack exchange,提问作者Rakan 3abdullah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:35:24