使用main函数计算成绩的Python程序



我正在尝试编写一个程序,根据5种不同作业类型(考试1,考试2,考试3,家庭作业和期末)的给定成绩权重计算学生的成绩。我在程序的第一部分遇到了麻烦,我必须定义一个函数,该函数向用户查询分数并验证它是否正确。

当我尝试运行代码时,我一直得到一个名称错误,说"assignment_name没有定义"。我还尝试创建一个for循环或多个while语句。输入图片描述

我不知道为什么你要输入assignment_name到函数中,然后在函数中定义assignment_name,但这里可能是一个解决你的问题的方法,如果你试图得到一个提示,为你提供的5个作业输入一个分数。这将遍历每个考试、家庭作业和期末考试,并要求为每个考试打分。

def get_grade():
grades = []
assignment_name = ["Exam 1", "Exam 2", "Exam 3", "Homework", "Final"] # list of assignments for grades to be entered in
for assignment in assignment_name: # creates loop, asking for grade in each assignment
grade = int(input("What is your grade for %s? " % assignment))
while grade < 0 or grade > 100:
print("Grade must be a number between 0 and 100")
grade = int(input("What is your grade for %s? " % assignment)) # asks for new input if previous was not in range
grades.append(grade) # adds grade to list of grades
return grades # prints out list of grades, with index 0 being Exam 1 and 4 being Final
如果我理解错了你的问题,请澄清一下。为了将来的参考,问问题时要清晰,这样每个人都能理解,并以最好的方式提供帮助。

提醒一下,如果可以的话,将代码放在代码块和堆栈跟踪中是非常有用的。

谈正事吧!

根据你提供的图片,我们正在处理:

def get_grade(assignment_name):
assignment_name = "Exam 1", "Exam 2", "Exam 3", "Homework", "Final"
assignment = int(input("What is your grade for", assignment_name))
while assignment < 0 or assignment > 100:
print("Grade must be number between 0 and 100")

让我眼前一亮的几件事:

  1. assignment_name是函数的参数,但随后立即被同名的局部变量覆盖。
  2. assignment = int(input("What is your grade for", assignment_name))有一些事情正在发生。
    • 变量名"赋值";这是误导。我想应该是"成绩"之类的。或";grade_input"会更容易读,因为我们试图从用户那里捕获一个分配等级,而不是一个实际的分配。
    • input()函数只接受一个参数。点击这里查看更多
  3. 你的while语句表达式很好,但是它执行的逻辑会陷入无限循环,因为你没有退出循环的基本情况。

别人得

为了清理这个函数,我会这样写:
def get_assignment_grade_input(assignment_name):
while True:
grade_input = int(input(f"What is your grade for {assignment_name}?"))
if 0 <= grade_input <= 100:
return grade_input
else:
print("Invalid grade. Grade must be between 0 and 100.")
continue

该函数接受一个作业名称作为输入,并将提示用户输入与给定作业名称相关联的分数。如果分数不符合可接受的标准,我们将提示用户输入可接受的分数。注意:如果用户始终无法接受,那么无限提示用户新的等级可能不是最好的主意,但这应该可以让用户明白这一点!

最后,如果给出了可接受的分数,函数将通过将分数返回给调用者来退出循环。

最新更新