Hello I am currently taking a course in Data Structures with
Hello, I am currently taking a course in Data Structures with Python. Here is my question:
In this assignment, we will develop an algorithm to calculate the final grade for a class of 15 students. There are 5 assignments (20 points each) as well a midterm and a final (100 points each). Another 10 points are for in-class participation.
All the assignments and tests contribute to the final grade equally. Additionally, the in-class participation (either thru Discussions or in real-time) is also a part of the final grade.
What I have so far:
# Steven Ochoa
# Assignment_1.py
class Student:
name = \"\"
net_id = \"\"
final_grade = \"\"
let_grade = \"\"
# Class Constructor
def __init__(self, name, net_id, final_grade, let_grade):
self.name = name
self.netID = net_id
self.final_grade = final_grade
self.letter_grade = let_grade
# Print student-line
def print_student(self):
print(self.formatTemplate.format(self.studentID, self.studentName, self.assignmentSum, self.midterm, self.final,
slef.participation, self.totalGrade, self.letterGrade))
def add_grades ():
# Gathering grades for the 5 assignments
print(\"Insert assignment grades (20 point scale):\")
assignment1, assignment2, assignment3, assignment4, assignment5 = eval(input(\"Enter your assignment grades:\"))
# Total grade for Assignments
total = (assignment1+assignment2+assignment3+assignment4+assignment5)
# Gathering grades for the Mid-Term and the Final
print(\"Insert exam grades (100 point scale):\")
mid_term = eval(input(\"Midterm grade:\"))
final = eval(input(\"Final grade:\"))
# Exam Average
exam_average = (final + mid_term)/2
# Participation points
print(\"Insert participation grade (10 point scale) :\")
participation = eval(input(\"Participation:\"))
# Final grade report
final_grade = (total*0.45) + (exam_average*0.45) + participation
return final_grade
def letter_grade(final_grade):
# Calculates the letter grade
str(final_grade)
if final_grade > 100:
return \"Error!\"
if 100 >= final_grade > 89:
return \"Final grade:\", final_grade, \"A\"
if 89 >= final_grade > 79:
return \"Final grade:\", final_grade, \"B\"
if 79 >= final_grade > 69:
return \"Final grade:\", final_grade, \"C\"
if 69 >= final_grade > 59:
return \"Final grade:\", final_grade, \"D\"
if 59 >= final_grade > 0:
return \"Final grade:\", final_grade, \"F\"
if 0 > final_grade:
return \"ERROR!\"
def main(letter_grade, final_grade):
# Introduction to the program
print(\"This program calculates your Final Grade.\")
# Set up loop for multiple students
student_list = []
another_student = \"yes\"
while another_student == \"yes\":
# Adding another student
# Gathering Student Information
name = input(\"What is the student\'s name?:\")
net_id = input(\"What is the student\'s net-ID?:\")
f_grade = add_grades
let_grade = letter_grade(final_grade)
studentList.append[(name, net_id, f_grade, let_grade)]
another_student = input(\"Add another student? Enter yes or no\")
# Create a header
# Print table in a loop
for student in range(5):
print(\"Student Name:\", name, \"Net-ID:\", net_id, \"Final Grade:\", f_grade, \"Letter Grade:\", let_grade)
print()
main()
The program runs, but it messes up after I input the student id.
Solution
#Modified assignment program
#The python program that runs on 3.4.3
# Assignment_1.py
class Student:
name = \"\"
net_id = \"\"
final_grade = \"\"
let_grade = \"\"
# Class Constructor
def __init__(self, name, net_id, final_grade, let_grade):
self.name = name
self.netID = net_id
self.final_grade = final_grade
self.letter_grade = let_grade
# Print student-line
def print_student(self):
print(self.formatTemplate.format(self.studentID, self.studentName, self.assignmentSum, self.midterm, self.final,
slef.participation, self.totalGrade, self.letterGrade))
def add_grades ():
# Gathering grades for the 5 assignments
print(\"Insert assignment grades (20 point scale):\")
assignment1, assignment2, assignment3, assignment4, assignment5 = eval(input(\"Enter your assignment grades:\"))
# Total grade for Assignments
total = (assignment1+assignment2+assignment3+assignment4+assignment5)
# Gathering grades for the Mid-Term and the Final
print(\"Insert exam grades (100 point scale):\")
mid_term = eval(input(\"Midterm grade:\"))
final = eval(input(\"Final grade:\"))
# Exam Average
exam_average = (final + mid_term)/2
# Participation points
print(\"Insert participation grade (10 point scale) :\")
participation = int(input(\"Participation:\"))
# Final grade report
final_grade = (total*0.45) + (exam_average*0.45) + participation
return final_grade
def letter_grade(final_grade):
# Calculates the letter grade
str(final_grade)
if final_grade > 100:
return \"Error!\"
if 100 >= final_grade > 89:
return \"Final grade:\", final_grade, \"A\"
if 89 >= final_grade > 79:
return \"Final grade:\", final_grade, \"B\"
if 79 >= final_grade > 69:
return \"Final grade:\", final_grade, \"C\"
if 69 >= final_grade > 59:
return \"Final grade:\", final_grade, \"D\"
if 59 >= final_grade > 0:
return \"Final grade:\", final_grade, \"F\"
if 0 > final_grade:
return \"ERROR!\"
#remove arguments to main
def main():
# Introduction to the program
print(\"This program calculates your Final Grade.\")
# Set up loop for multiple students
studentList = []
another_student = \"yes\"
while another_student == \"yes\":
# Adding another student
# Gathering Student Information
name = input(\"What is the student\'s name?:\")
net_id = int(input(\"What is the student\'s net-ID?:\"))
f_grade = add_grades()
let_grade = letter_grade(f_grade)
#Modification
#studentList name should as declared studentList
studentList.append([name, net_id, f_grade, let_grade])
another_student = input(\"Add another student? Enter yes or no\")
# Create a header
# Print table in a loop
#Modification only print for given students in len(studentList)
for student in range(len(studentList)):
print(\"Student Name:\", name, \"Net-ID:\", net_id, \"Final Grade:\", f_grade, \"Letter Grade:\", let_grade)
print()
main()
--------------------------------------------------
Sample Output:
>>> ================================ RESTART ================================
>>>
This program calculates your Final Grade.
What is the student\'s name?:r
What is the student\'s net-ID?:1
Insert assignment grades (20 point scale):
Enter your assignment grades:20,20,20,20,20
Insert exam grades (100 point scale):
Midterm grade:20
Final grade:20
Insert participation grade (10 point scale) :
Participation:1
Add another student? Enter yes or nono
Student Name: r Net-ID: 1 Final Grade: 55.0 Letter Grade: (\'Final grade:\', 55.0, \'F\')



