2013-07-03 12 views
2

快速的問題...我一直工作在一個小程序,將計算基於「家庭作業」的最終成績的百分比,「測驗」和「測試」用賺來的一起字母等級。這是一個我正在測試新事物的程序,我想知道如何在課堂上或課堂內使用所有這些內容?工作和退出的類別和功能

我已經想過保持功能性的東西,是和只使用一個類,基本打印出來的學生,最後的字母等級,和百分比的名字的一個不錯的字符串。即使是在課堂上進行簡單的打印,我也無法帶來外部數據。有任何想法嗎?

而且,反正是有讓用戶的輸入創建全新的空詞典? (也許如果可以創建多個字典,我可以創建一個函數或方法來計算班級的平均值) 我很感謝你的幫助。 謝謝!

student1 = {} 
student = [student1] 
def maker_d(): 
    name = raw_input("Please enter the student's name: ") 
    student1['Name'] = name 
    homework = raw_input("Please enter all of the student's homework grades separated by  a space: ") 
    homework = [float(i) for i in homework.split()] 
    student1['homework']= homework 
    quizzes = raw_input("Please enter all of the student's quiz scores separated by a space: ") 
    quizzes = [float(i) for i in quizzes.split()] 
    student1['quizzes'] = quizzes 
    tests = raw_input("Please enter all of the student's test scores separated by a space: ") 
    tests = [float(i) for i in tests.split()] 
    student1['tests'] = tests 


def average(student): 
    return sum(student)/len(student) 

def get_average(student): 
    h = average(student['homework']) 
    q = average(student['quizzes']) 
    t = average(student['tests']) 
    total_average = (h * 0.1) + (q * 0.3) + (t * 0.6) #designates homework as 10%, quizzes as 30% and tests as 60% of final grade average 
    return total_average 


def get_letter_grade(score): 
    if score >= 90: 
     return "A" 
    elif 80<= score <90: 
     return "B" 
    elif 70 <= score < 80: 
     return "C" 
    elif 60 <= score < 70: 
     return "D" 
    else: 
     return "F" 


def get_class_average(student): 
    total = 0 
    for each in student: 
     total += get_average(each) 
    return total/len(student) 
    return get_class_average(get_average[student]) 

    class FinalGradePrinter(object): 


     def __init__(self,name): 
      self.name = name 
     def __str__(self,name): 
      print "% ',' your final grade is a %s based on your overall percentage of %f" % (self.name) 



def main(): 
    maker_d() 
    print get_class_average(student) 
    print get_letter_grade(get_class_average(student)) 



if __name__ == '__main__': 
    main() 

回答

4

類是要在一個應用程序中使用的對象模板,和對象用於封裝「東西」通過封裝屬性爲「東西」,也與這些屬性的函數(例如,根據屬性值計算值,更改它們等)。這個主題太牽涉到在這裏給出更多的介紹,值得對面向對象編程進行一些研究。

在你的情況下,你確實有一個Student作爲一個類的情況,這是你的代碼中的一個「事物」,它具有屬性,以及與這些屬性一起工作的函數。下面是一個很好的起點,爲您打造自己的Student類 - 這將是一個很好的鍛鍊,試圖在課堂上填寫和修改代碼以使用它(這將需要了解面向對象編程)。隨着您的發展,您可能需要爲測驗,測試和作業創建類。

class Student: 

    # Constructor 
    def __init__(self, name, homework, quizzes, tests): 
     self.name = name 
     self.homework = homework 
     self.quizzes = quizzes 
     self.tests = tests 

    # Function to return average for this student 
    def get_average(self): 
     h = average(self.homework) 
     ... 
     return total_average 

祝你好運,玩得開心!