【发布时间】:2018-01-17 21:50:15
【问题描述】:
我的程序将计算最终成绩,我相信这一切都是正确的,直到我创建多个条目。当我输入“y”以输入另一个学生时,第二个学生复制到第一个学生列表中,然后复制自身,导致副本而不是我的第一个原始条目。所以不要让 mike、jim 和 mary 变成 mary、mary 和 mary。
#This program will calculate a classes final grades.
def get_grades():
print("\nEnter grades for assignments 1-5 (0-20 PT scale)")
assignment1 = eval(input("\nEnter assignment 1 grade: "))
assignment2 = eval(input("Enter '' 2 grade: "))
assignment3 = eval(input("Enter '' 3 grade: "))
assignment4 = eval(input("Enter '' 4 grade: "))
assignment5 = eval(input("Enter '' 5 grade: "))
total = (assignment1 + assignment2 + assignment3 + assignment4 + assignment5)
print("\nEnter the Midterm and Final exam grades (0-100 PT scale))")
midterm = eval(input("\nMidterm grade: "))
final = eval(input("Final grade: "))
exam_avg = (final + midterm)/2
print("\nEnter the participation grade (0-10 PT scale)")
participation = int(input("Participation: "))
final_grade = (total*0.45) + (exam_avg*0.45) + participation
return final_grade
def determine_let_grade(final_grade):
if final_grade > 100 or final_grade < 0:
return "ERROR!"
elif final_grade <= 100 and final_grade > 90:
return "A"
elif final_grade <= 89 and final_grade > 80:
return "B"
elif final_grade <= 79 and final_grade > 70:
return "C"
elif final_grade <= 69 and final_grade > 60:
return "D"
elif final_grade <= 59:
return "F"
def main():
print("This program will calculate your students final grades.")
studentList = []
another_student = "y"
while another_student == 'y':
name = input("\nEnter the student's name: ")
net_id = int(input("Enter the student's Identification number: "))
fnl_grade = get_grades()
let_grade = determine_let_grade(fnl_grade)
studentList.append([name, net_id, fnl_grade, let_grade])
another_student = input("\nEnter y or n to add another student: ")
for student in range(len(studentList)):
print("\nStudent Name:", name.title() ,"\nStudent-ID:", net_id ,"\nFinal Grade:",fnl_grade ,"\nLetter Grade:", let_grade)
print()
input ("Please press Enter to quit the program")
main()
【问题讨论】:
-
在您的打印循环中,您正在打印最后打印的值,而不是列表的值...
-
for student in range(len(studentList)):使这进一步复杂化,因为student然后成为一个整数,用于索引您的列表,这不是很直观。我将更改为for student in studentList:,而您的print的第一部分将是print("\nStudent Name:", student[0] ,"\nStudent-ID:", student[1] ,...")
标签: python python-3.6