2011-07-14 25 views
0
correct_ans = ['B', 'D', 'A', 'A', 'C', 'A', 'B', 'A', 'C', 'D', 'B', 'C', \ 
       'D', 'A', 'D', 'C', 'C', 'B', 'D', 'A'] 

這裏是我的語句從txt文件比較清單 - 作業的Python

# import user answers into a list 
infile = open('testscores.txt', 'r') 
driver_ans = infile.readlines() 
infile.close() 

driver_ans = ['B', 'D', 'A', 'A', 'C', 'B', 'B', 'A', 'C', 'D', 'B', 'C', \ 
       'D', 'A', 'D', 'C', 'C', 'B', 'D', 'A'] 

    for index in range(0, 20): 
     if driver_ans[index] == correct_ans[index]: 
      total_correct += 1 
     else: 
      wrong_ans.append(index + 1) 

這個邏輯繼續返回都是錯誤的答案導入列表。這是不正確的比較我的「correct_ans」列表和我的「driver_ans」列表。我究竟做錯了什麼?!

+0

那要看情況。代碼的其餘部分是什麼樣的?我們不知道'driver_ans'或'correct_ans'裏面有什麼。 –

+0

你能表現出作爲driver_ans和correct_ans – Hyperboreus

+0

@hyperboreus值我已經更新,其中包括我的列表內容 –

回答

2

只是猜測。如果testscores.txt有內容

B 
D 
A 
A 
... 

記住,這driver_ans將

['B\n', 'D\n', 'A\n', 'A\n', ... 

嘗試也許

driver_ans = [x.strip ('\n') for x in infile.readlines()] 
+0

謝謝!我正在尋找錯誤的地方......我沒有。\ n字符。我糾正了這一點,你是對的!我正在完美地工作!非常感謝! –

2

readlines()函數返回線是包括尾隨換行符。因此,嘗試:

driver_ans = [x.strip() for x in infile.readlines()] 
+0

謝謝!這就是問題所在,一旦我指出那不是我的if/else邏輯的方向,我看到了我的錯誤! –