如何在for中增加i?

时间:2013-01-14 18:00:28

标签: python

我希望将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

3 个答案:

答案 0 :(得分:1)

尝试使用“步长”参数作为范围或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];

答案 1 :(得分: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):

答案 2 :(得分:0)

以下代码片段说明了将输入文件中的每一组六行作为元组处理的方法,它删除了一些笨拙的lineas[i], lineas[i+1] 索引(代价是一个看起来很笨拙的zip陈述。第一段代码就是创建一个包含编号行的测试文件。

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
相关问题