Ich habe die Aufgabe, ein Programm zu erstellen, das ein Scantron simuliert, das aus einem ausgeschalteten Zustand eingeschaltet wird. Wenn es einmal eingeschaltet ist, vergleicht es zwei Arrays und zeigt einen Schülergrad basierend auf dem Vergleich des zwei Arrays. Ich bin auch mit dem Erstellen von Klassen beauftragt.Erstellen eines Scantron zum Bewerten eines Tests in Python
Ich kann die Maschine einschalten, aber der Grading-Teil ist, wo ich Probleme habe. Mein Programm sagt mir, dass "richtig ist nicht definiert" in "grade = Answers (correct, student, theGrade)". Ich glaube nicht, dass ich zurückgekehrt bin oder die Variable nicht korrekt übergeben habe. Unten ist der Code. Kann mir bitte jemand helfen ??
#this program creates a scantron grading system
#the machine will be turned on, scan the correct answers,
#then will grade the student's answers, and display results
#start class initializing machine off and then switching on
class quizGrader:
#initialize state of machine off
def __init__(self):
self.power = 'Off'
#create module to ask if the user would like to turn on the machine
def switch(self):
#ask user if they'd like to turn on the machine
powerOn = input('Would you like to turn the machine on? (enter Y for yes)')
#create if statement for system to be turned on or off
if powerOn == 'y' or powerOn == 'Y':
self.power = 'On'
else:
self.power = 'Off'
def get_power(self):
return self.power
#create class for correct answers, student answers, and
#for the student's scantron to be graded
class Answers:
#initialize the grades
def __init__(self, correct, student, theGrade):
#declare what each self. will be equal to
self.__correctAnswers = correct
self.__studentAnswers = student
self.__studentGrade = theGrade
#create set method for correctAnswers
def set_correctAnswers(self, correct):
self.__correctAnswers = correct
correct = ['A','B','C','D','E','E','D','C','B','A', \
'A','B','C','D','E','E','D','C','B','A']
print('Correct answers have been recorded...')
return correct
#create set method for studentAnswers
def set_studentAnswers(self, student):
self.__studentAnswers = student
student = ['B','B','C','D','A','E','D','C','B','A', \
'A','B','C','D','E','E','D','C','B','A']
return student
#create set method for student's scantron to be graded
def set_studentGrade(self, theGrade):
self.__studentGrade = theGrade
right = 0
index = 1
#create a for loop and if statement for the right answers
#to be counted and then calculate the % of the grade
for index in range(0,20):
if self.__correctAnswers [index] == self.__studentAnswers [index]:
right += 1
percent = float(right/20)
percent = theGrade
return theGrade
#return all the methods previously created
def get_correctAnswers(self, correct):
return self.__correctAnswers
def get_studentAnswers(self, student):
return self.__studentAnswers
def get_studentGrade(self, theGrade):
return self.__studentGrade
#start main module
def main():
#create an object from the quizGrader class
machine = quizGrader()
#display that the machine is off
print('The machine is powered:', machine.get_power())
#ask the user if they'd like to turn the machine on
machine.switch()
#display the user's choice to turn on or leave machine powered off
print('The machine is now/still powered:',machine.get_power())
#create an object from the Answers class
grade = Answers(correct, student, theGrade)
#display that the correct answers have been recorded and display the answers
print('Correct answers have been recorded:',grade.get_correctAnswers())
print()
print()
#display that the student's answers have been recorded and display the answers
print('Student answers have been recorded:', grade.get_studentAnswers())
print()
#grade the student's answers
grade.studentGrade()
#display the amount of answers student answered correctly
#and the percentage of their grade based on correct answers
print('The student grade is',right,'out of 20 or',percent,'%.')
#close main function
main()
Danke! Aber ich habe das Array in die Klasse eingefügt, weil ich folgendes erstellen muss: • \t Ein Konstruktor (def __init __ (self) in Python), der einen quizGrader mit einem Anfangszustand von off erzeugt. • \t Eine festgelegte Methode, mit der das Gerät eingeschaltet wird. • \t Eine set-Methode, die ein Array korrekter Antworten initialisiert. • \t Eine set-Methode, die ein Array von Schülerantworten initialisiert. • \t Eine Arbeitsmethode, die Schülerantworten auswertet. • \t Eine get-Methode, die die Anzahl der richtigen Antworten ermittelt. • \t Eine Arbeitsmethode, die die Anzahl der richtigen Antworten anzeigt. – Rozay
Sie sollten Klassenmitglieder setzen, anstatt zu versuchen, sie im Konstruktor – tenCupMaximum
zu übergeben, danke für die Hilfe. Ich habe es behoben, aber immer noch Probleme mit dem Aufruf der zu benotenden Listen. – Rozay