加权成绩书项目

时间:2019-04-29 22:39:18

标签: python python-3.x

创建一个程序,该程序将在使用加权成绩簿的班级中计算学生的成绩。

加权系统使用百分比来确定每个分配类别的价值。对于此项目,请使用以下百分比:

  • 项目成绩= 30%(权重= .30)
  • 参与度= 20%(体重= 0.20)
  • 测验= 10%(重量= .10)
  • 考试= 40%(体重= 0.40)

评分等级:

  • A-90-100
  • B-80-89
  • C-70-79
  • D-60-69
  • F-60岁以下

注意:您将每个类别的平均值乘以其权重。最终成绩是计算出的权重之和。

无法获得允许用户在所有4个类别中输入成绩的代码,因为它卡在了所选的第一个类别上,并且循环不断地进行着,而不停止询问分数列表。我尝试了一个循环内的一个循环,但是它也只在第一个选择的循环上继续进行。需要在所有4个类别中输入多个成绩,这就是为什么我需要该程序以允许用户输入其他类别的成绩,而不仅仅是首先选择的那个。

print ("Weighted Grade Calculator ")
name = input("Enter the Student's Name ")
number = input("Enter the Student's Number ")

x = input("Enter Assignment type: ")
c = 'y'

#Loop is in case user wants to calculate another students grade
while c=='y' or c=='Y':
  if x >= "quiz" or x >= "Quiz":
    input_string = input("Enter a list of scores separated by space ")
#Read ints separated by spaces
    lst = input_string.split()
    print("Calculating sum of element of input list")
#convert strings to ints and convert map to list
    lst = list(map(int, lst))
#Find total and avg
    total = sum(lst)
    avg_1 = total/len(lst)

  elif x >= "project" or x >= "Project":
    input_string = input("Enter a list of scores separated by space ")
    lst = input_string.split()
    print("Calculating sum of element of input list")
    lst = list(map(int, lst))
    total = sum(lst)
    avg_2 = total/len(lst)

  elif x >= "participation" or x >= "Participation":
    input_string = input("Enter a list of scores separated by space ")
    lst = input_string.split()
    lst = list(map(int, lst))
    total = sum(lst)
    avg_3 = total/len(lst)

  elif x >= "exam" or x >= "Exam":
    input_string = input("Enter a list of scores separated by space ")
    lst = input_string.split()
    print("Calculating sum of element of input list")
    lst = list(map(int, lst))
    total = sum(lst)
    avg_4 = total/len(lst)

  else:
    print("error, please try again")


    #Finds percentage earned from each category
    w_quiz = avg_1 * 0.1
    w_project = avg_2 * 0.3
    w_participation = avg_3 * 0.2
    w_exams = avg_4 * 0.4

    total = w_project + w_quiz + w_participation + w_exams 
    if(total >= 90 and total <=100):
        grade = 'A'
    elif(total >= 80 and total < 90):
        grade = 'B'
    elif(total >= 70 and total < 80):
        grade = 'C'
    elif(total >= 60 and total < 70):
        grade = 'D'
    elif(total >= 0 and total < 60):
        grade = 'F'
    print ("Student Name: " + str(name))
    print ("Student ID: " + str(number))
    print ("Total Weighted Score: " + str(total) + "%")
    print ("Letter Grade: " + grade)
    c = input("Would you like to calculate another grade? (Y or N): ")

1 个答案:

答案 0 :(得分:0)

不确定您要查找的内容是什么,但是此代码将接受您输入的所有内容,最后将计算所有总计的平均值及其相应的字母等级:

def calculate_letter(total):
    #function calculates letter grade
    if(total >= 90 and total <=100):
        grade = 'A'
    elif(total >= 80 and total < 90):
        grade = 'B'
    elif(total >= 70 and total < 80):
        grade = 'C'
    elif(total >= 60 and total < 70):
        grade = 'D'
    elif(total >= 0 and total < 60):
        grade = 'F'
    return grade

print ("Weighted Grade Calculator ")
name = input("Enter the Student's Name ")
number = input("Enter the Student's Number ")

totals = [] #initialize list to append scores to

while True:
    project = float(input("Enter the percentage for Projects (numbers only): "))
    participation = float(input("Enter the percentage for the Participation (numbers only): "))
    quizzes = float(input("Enter the percentage for Quizzes (numbers only): "))
    exams = float(input("Enter the percentage for the Final Exam (numbers only): "))

    w_project = project * 0.3
    w_participation = participation * 0.2
    w_quiz = quizzes * 0.1
    w_exams = exams * 0.4

    total = w_project + w_quiz + w_participation + w_exams

    grade = calculate_letter(total) #running the function defined above to evaluate letter grade from total
    print ("Total Weighted Score: " + str(total) + "%")
    print ("Letter Grade: " + grade)
    c = input("Would you like to calculate another grade? (Y or N): ").lower()

    totals.append(total)
    if c == 'y':
        #restarts the loop
        continue
    else:
        #exits the loop
        break

print(totals)
final_averaged_score = sum(totals) / len(totals) #finding the average of the list
final_grade = calculate_letter(final_averaged_score)
print ("Student Name: " + str(name))
print ("Student ID: " + str(number))
print ("Final Averaged score: " + str(final_averaged_score))
print ("Final letter grade: " + str(final_grade))