2013-01-14 76 views
-4

我想在6增加i的值來讀取有4個答案和正確答案的文字問題的文件,例如:我該如何增加一個for?

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 
+0

爲什麼這麼多downvotes? –

回答

1

嘗試使用「步長大小」參數範圍或x範圍:

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]; 
+0

謝謝它的作品! – al3x2450

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): 
+0

非常好:) +1 – Dayan

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