2017-11-23 1 views
0

학생의 답변 목록을 정답 목록과 비교하여 정답 수를 계산하는 것이 프로그램의 목표입니다. 답안 키는 문자열 목록으로 저장되고 학생 답은 텍스트 파일에서 읽은 다음 대답 키와 일치하도록 대문자로 변환됩니다.Python - 두 목록 비교 및 ​​잘못된 결과 얻기

#Read student answer file 
student_answers = infile.read() 
#Convert student answer to all caps 
student_answers = [answer.upper() for answer in student_answers] 

내 프로그램은 오류없이 실행되지만 두 목록을 비교 한 결과가 잘못되었습니다. 답변 중 3 개만 정확하고 20 개의 정답이 표시됩니다. 아래는 내가 지금까지 가지고있는 관련 코드입니다. 그리고 출력 Program Output Image의 스크린 샷도 포함 시켰습니다. 질문 1,3,5,7 및 25 만 잘못된 것으로 표시해야합니다. 내가 두 목록을 모두 체크하고 그들은 정확한 정보를 포함하므로 입력 오류가 아닙니다. 내가 잘못 될 수있는 부분에 대한 안내는 감사하겠습니다.

for studentLine, keyLine in zip(Student, TestKey): 
    keyAnswer = keyLine.split() 
    studentAnswer = studentLine.split() 
    #Compare student answer to test key 
    if studentAnswer == keyAnswer: 
     correct += 1 
     percent_score += 4 
     print('Good job! Question ', index + 1, 'is correct!') 
     index +=1 
    if studentAnswer != keyAnswer: 
     incorrect += 1 
     incorrect_list.append(index + 1) 
     print('The correct answer to question ', index + 1, 'is ', TestKey[index]) 
     index +=1 
+1

비교 값을 인쇄 해보십시오. 그것은 일을 정리할 것입니다. 또한, if if studentAnswer! = keyAnswer :를 else :'로 대체하십시오. – CristiFati

+0

아아 완벽, 공백을 제거하는 것을 잊었습니다. 매우 감사! –

답변

0

스트립하는 대신 잘못 분리하는 것 같습니다.

그래서 당신이 사용되어야한다 :

keyAnswer = keyLine.strip() 
studentAnswer = studentLine.strip() 
+0

스플릿 대신 스트립으로 변경했지만 다른 모든 대답에 대해 여전히 공백을 표시하고 있습니다. .replace ('\ n', '')를 시도했으나 여전히 작동하지 않습니다. 어떤 제안? –