2017-12-15 12 views
-1

나는 매우 반복적으로 보이는 몇 가지 코드를 가지고 있으며, 변수 이름의 차이에도 불구하고 루프에 넣음으로써 효율성을 향상시키는 방법을 궁금해하고 있습니다.루프로 효율을 향상시키는 파이썬

if int(self.answer1) == int(self.studentAnswer1): 
     self.score = int(self.score) + 1 
     self.questionsAsked = self.questionsAsked + 1 
     self.updateProgressBar() 

    else: 
     self.display = "Sorry the correct answer was " + str(self.answer1) 
     self.wrongAnswer() 

    self.correctAnswer = int(self.answer1) 
    self.input = int(self.studentAnswer1) 
    self.type = str(self.a) + " multiplied by 1000, to convert KG to Grams" 
    self.insertAnswer() 


    if int(self.answer2) == int(self.studentAnswer2): 
     self.score = int(self.score) + 1 
     self.questionsAsked = self.questionsAsked + 1 
     self.updateProgressBar() 

    else: 
     self.display = "Sorry the correct answer was " + str(self.answer2) 
     self.wrongAnswer() 

    self.correctAnswer = int(self.answer2) 
    self.input = int(self.studentAnswer2) 
    self.type = str(self.a) + " divide by 1000, convert Grams to KG" 
    self.insertAnswer() 

현재 예상대로 작동합니다.

+0

루프가 표시되지 않습니다. –

+0

@IgnacioVergaraKausel 그는 중복을 제거하기 위해 루프에 넣는 방법을 묻습니다 – chrisz

답변

0

시도해보십시오.

answer = [answer1, answer2]; 
student_answer= [studentAnswer1, studentAnswer2]; 

for i in range (len(answer)){ 
     if int(self.answer[i]) == int(self.student_answer[i]): 
      self.score = int(self.score) + 1 
      self.questionsAsked = self.questionsAsked + 1 
      self.updateProgressBar() 

     else: 
      self.display = "Sorry the correct answer was " + str(self.answer[i]) 
      self.wrongAnswer() 

     self.correctAnswer = int(self.answer[i]) 
     self.input = int(self.student_answer[i]) 
     self.type = str(self.a) + " multiplied by 1000, to convert KG to Grams" 
     self.insertAnswer() 
    } 
1

인덱스 반복 및 목록으로부터 끌어 둘 다른 응답의 대안 , zip를 사용한다. 예를 들어

:

answers = [whatever] 
student_answers = [whatever] 
for answer, student_answer in zip(answers, student_answers): 
    ... 

이 보이는 정확히 어떻게 작동합니다. zip([1, 2, 3], [4, 5, 6]) == [(1, 4), (2, 5), (3, 6)].