-4

我想将 i 的值增加 6 以读取包含 4 个答案的问题和正确答案字符的文件,例如:

A
Which sport uses the term LOVE ?
Tennis
Golf
Football
Swimming
B
What is the German word for WATER ?
Wodar
Wasser
Werkip
Waski

我的代码:

fd = open(dFile)
lineas=fd.readlines()
fd.close()

for i in range(len(lineas)):
    print "CA:"+lineas[i]+"Q:"+lineas[i+1]+"A1:"+lineas[i+2]+"A2:"+lineas[i+3]+"A3:"+lineas[i+4]+"A4:"+lineas[i+5];
    i=i+6
4

3 回答 3

1

尝试使用 range 或 xrange 的“步长”参数:

fd = open(dFile)
lineas = fd.readlines()
fd.close()

for i in xrange(0, len(lineas), 6):
    print "CA:"+lineas[i]+"Q:"+lineas[i+1]+"A1:"+lineas[i+2]+"A2:"+lineas[i+3]+"A3:"+lineas[i+4]+"A4:"+lineas[i+5];
于 2013-01-14T18:03:03.727 回答
1

range有一个可选step参数。

for i in range(0, 10, 3):
    print i  # Prints 0, 3, 6, 9

对于您的情况,使用 6 的步长。

for i in range(0, len(lineas), 6):
于 2013-01-14T18:03:35.973 回答
0

下面的代码片段说明了一种将输入文件中的每组六行视为一个元组的方法,这消除了一些笨拙的lineas[i], lineas[i+1] etczip索引(以看起来笨拙的语句为代价)。第一个代码片段只是创建一个包含编号行的测试文件。

with open('eh','w') as fo:
    for i in range(19):
        fo.write('{}\n'.format(i))
...
with open('eh') as fi:
    for (ca,q,a1,a2,a3,a4) in zip(*[iter(fi.readlines())]*6):
        print "CA:"+ca+"Q:"+q+"A1:"+a1+"A2:"+a2+"A3:"+a3+"A4:"+a4

这会产生类似的输出

CA:0
Q:1
A1:2
A2:3
A3:4
A4:5

CA:6
Q:7
A1:8
(etc)

注意,我通常会写类似

print 'CA: {} Q: {} A1: {} A2: {} A3: {} A4: {}'.format(ca,q,a1,a2,a3,a4)

代替

print "CA:"+ca+"Q:"+q+"A1:"+a1+"A2:"+a2+"A3:"+a3+"A4:"+a4
于 2013-01-14T18:50:12.053 回答