python - 使用 main 函数计算成绩的 Python 程序
问题描述
我正在尝试编写一个程序,该程序根据 5 种不同作业类型(考试 1、考试 2、考试 3、家庭作业和期末考试)的给定成绩权重计算学生的成绩。我在程序的第一部分遇到了麻烦,我必须定义一个函数来查询用户的成绩并验证它是否正确。
当我尝试运行代码时,我不断收到一个名称错误,提示“assignment_name 未定义”。我还尝试创建一个 for 循环或多个 while 语句。 在此处输入图像描述
解决方案
请注意,将代码发布在代码块中以及堆栈跟踪(如果可用)中非常有帮助。
做生意!
根据您提供的图片,我们正在处理:
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")
有几件事让我眼前一亮:
assignment_name
是函数的参数,但随后会立即被同名的局部变量覆盖。assignment = int(input("What is your grade for", assignment_name))
有一些事情正在发生。- 变量名“assignment”在这里具有误导性。我认为像“grade”或“grade_input”这样的东西会更具可读性,因为我们试图从用户那里获取作业成绩,而不是实际作业。
- input() 函数只接受一个参数。在这里查看更多
- 您的 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
此函数将作业名称作为输入,并提示用户输入与给定作业名称关联的成绩。如果成绩不符合可接受的标准,我们将提示用户输入可接受的成绩。注意:如果它始终不可接受,那么无限提示用户新成绩可能不是最好的主意,但这应该可以让大家明白这一点!
最后,如果我们得到一个可接受的分数,我们的函数将通过将分数返回给调用者来退出循环。
推荐阅读
- networking - Kernel Buffer、TCP Socket Buffer和Sliding Window有什么区别
- c# - 如何使用多个 ComboBox 过滤 DataGridView?
- apache - Apache Bench - 请求失败
- reactjs - 如何在反应中过滤数据?
- design-patterns - 外观和抽象出现模式
- javascript - JavaScript 运行时:在“事件队列”中的条件
- java - AndroidStudio MotionEvent:仅在第二个视图上检测 ACTION_UP,在第一个视图上启动 ACTION_DOWN
- android - Gradle 项目同步失败
- java - 如何在 Docker 中缓存 Maven 依赖项
- xpath - 如何使用 xpath 返回页面上的所有子字符串