2014-03-27 62 views
0

我想創建一個拼寫測試函數,其中10個單詞的定義已經作爲一個記錄(例如,definition_1,definition_2等)在csv(txt)文件中。我試圖單獨打印每一個,並將輸入檢索爲變量,然後可以將其存儲在另一個csv文件中。這是我得到的,但我似乎沒有任何運氣的代碼工作。請考慮到我剛開始學習編碼。如何從csv文件中的行打印特定字段以及如何將輸入寫入csv文件?

def sit_a_test(): 
    print "Test" 
    ## Reads and prints each row of the csv file to display the definition of the allocated word. 
    cr = csv.reader(open('Test.txt','rb')) 
    for row in reader: 
     print "Defintion 1: ",row[0] 
      # Allows the user to input their answer in response to the definition. Saves the input as a variable. Repeats for each row. 
     answer = raw_input("Answer: ") 

     print "Defintion 2: ",row[1] 

     answer_2 = raw_input("Answer: ") 

     print "Defintion 3: ",row[2] 

     answer_3 = raw_input("Answer: ") 

     print "Defintion 4: ",row[3] 

     answer_4 = raw_input("Answer: ") 

     print "Defintion 5: ",row[4] 

     answer_5 = raw_input("Answer: ") 

     print "Defintion 6: ",row[5] 

     answer_6 = raw_input("Answer: ") 

     print "Defintion 7: ",row[6] 

     answer_7 = raw_input("Answer: ") 

     print "Defintion 8: ",row[7] 

     answer_8 = raw_input("Answer: ") 

     print "Defintion 9: ",row[8] 

     answer_9 = raw_input("Answer: ") 

     print "Defintion 10: ",row[9] 

     answer_10 = raw_input("Answer: ") 

    ## Writes answer inputs to the csv file in preperation to be calculated as a score. 
    with open('Score.txt','w',newline='') as fp: 
     a = csv.writer(fp,delimeter=',') 
     data = [answer,answer_2,asnwer_3,answer_4,answer_5,answer_6,answer_7,answer_8,answer_9,answer_10] 

回答

0

我會打破這個了一點:

def ask_question(number, definition): 
    """ Asks a question for definition number """ 
    print "Definition {}: {}".format(number, definition) 
    return raw_input("Answer: ") 

def sit_a_test(): 
    results = [] 
    with open("Test.txt", "rb") as f: 
     for row in csv.reader(f): 
      results.append(list(ask_question(no, def) for no, def in enumerate(row)))) 

    with open("Score.txt", "wb") as f: 
     writer = csv.writer(f) 
     writerow.writerows(results) 

ask_question()功能要求有一個定義數量和定義問題,並返回該用戶的答案。答案彙總在一個列表中。每個列表包含來自Test.txt定義的單行答案。我假設你的csv文件包含這樣的行

definition_1, definition_2, definition_3.. 
definition_1, definition_2, definition_3.. 
definition_1, definition_2, definition_3..