我需要帮助完成python中的成绩计算器程序

时间:2015-11-22 01:23:31

标签: python python-3.x computer-science

对于我的计算机科学课,我必须制作一个计算成绩的程序。 这是我的第一个计算机科学课(没有以前的经验),所以我正在努力解决它。

这些是方向:

  1. 向用户询问课程中的测试,作业,测验和实验的次数。

  2. 询问用户是否有与上述测试具有单独重量的决赛,例如:一门课程有2个测试,每个测试重量为12.5%,最终重量为15%。

  3. 对于具有数字>的每个类别0

    一个。提示用户加权百分比,超出100%,这应该是总数 所有类别100%!!!

    湾获取该类别的分数。

    ℃。如果该类别是实验室,则将所有分数相加。

    d。否则,平均分数。

    即计算该类别的加权平均值。

  4. 使用每个类别的加权平均值,计算课程中的成绩。

  5. 询问用户是否要为另一个班级计算成绩。

  6. 如果用户回答是,则返回步骤1.

  7. 否则,请结束该计划。

  8. 到目前为止我的代码:

    def main():
        lists = get_user_input()
        get_scores(lists);
        get_weighted_average(lists)
    
    def get_user_input():
    #   How many?
        t = int(input("How many tests?: "))
        a = int(input("How many assignments?: "))
        q = int(input("How many quizzes?: "))
        l = int(input("How many labs?: "))
    
    #   How much weight on grade?
        tw = float(input("Enter weight of tests: "))
        aw = float(input("Enter weight of assignments: "))
        qw = float(input("Enter weight of quizzes: "))
        lw = float(input("Enter weight of labs: "))
        lists = [t, a, q, l, tw, aw, qw, lw]
        return lists
    
    def get_scores(lists):
        #   What are the scores?
        scores = [0] * 5
        for(x in range(lists[0]):
            test_scores = float(input("enter your test scores: "))
            scores[x] = test_scores
        for(x in range(lists[1]):
            test_scores = float(input("enter your assignment scores: "))
            scores[x] = assignment_scores
        for(x in range(lists[2]):
            test_scores = float(input("enter your quiz scores: "))
            scores[x] = quiz_scores
        for(x in range(lists[3]):
            test_scores = float(input("enter your lab scores: "))
            scores[x] = lab_scores
        sumlabs = 0
        for(x in range(lists[3]):
            sumlabs = sumlabs + scores[x]
        print(sumlabs)
    
    def get_weighted_average(lists):
    
    main()
    

    我不知道如何继续,所以非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

平均得分意味着将它们相加并除以它们的数量。您可以使用列表可以告诉您它有多少元素的事实。例如,如果x是列表,则len(x)是列表中的事物数。你应该小心不要计算空列表的得分,因为这意味着除以零。在以下函数中,如果列表中有某些内容,则“if score_list:”将为true。否则返回None(因为没有定义平均值)。

def average_score(score_list):
    if score_list:               # makes sure list is not empty
       total = 0                 # our total starts off as zero
       for score in score_list:  # starts a loop over each score
          total += score         # increases the total by the score
       return total / len(score_list)  # returns aveage

要从用户输入中形成分数列表,假设用户在提示时将所有分数放在同一行,您可以从用户处获取一个字符串(大概如:“13.4 12.9 13.2”然后使用string的split方法将其转换为字符串列表,如[“13.4”,“12.9”,“13.2”],然后将此字符串列表转换为浮点列表。最后使用上面的平均函数,您可以获得平均值:

test_score_entry = raw_input("Enter your test scores separated by spaces: ")
test_sore_strings = test_score_entry.split()
test_scores = [float(_) for _ in test_score_strings]
average_score = average(test_scores)