Python程序计算学生成绩
这是我用Python编写的第一个程序,我遇到了一些麻烦,如果我有一些简单的语法问题,请原谅 我正在写一个程序,计算一个学生的最终分数,基于一个考试分数值60%,其他7个考试分数值加起来占最终分数的40%。要求用户输入一个考试分数,然后要求用户输入循环读取的7个考试分数。字母等级由考试和测试的最终分数决定。之后,根据给学生的字母等级打印等级注释。这是我目前的代码:Python程序计算学生成绩,python,Python,这是我用Python编写的第一个程序,我遇到了一些麻烦,如果我有一些简单的语法问题,请原谅 我正在写一个程序,计算一个学生的最终分数,基于一个考试分数值60%,其他7个考试分数值加起来占最终分数的40%。要求用户输入一个考试分数,然后要求用户输入循环读取的7个考试分数。字母等级由考试和测试的最终分数决定。之后,根据给学生的字母等级打印等级注释。这是我目前的代码: def read_test_scores() : print("ENTER STUDENT ID: ") id =
def read_test_scores() :
print("ENTER STUDENT ID: ")
id = int(input())
print("ENTER EXAM SCORE: ")
exam = int(input())
print("ENTER ALL TEST SCORES: ")
score1 = int(input())
score2 = int(input())
score3 = int(input())
score4 = int(input())
score5 = int(input())
score6 = int(input())
score7 = int(input())
sum = (score1 + score2 + score3 + score4 + score5 + score6 + score7)
tavge = sum/7
return tavge
def compute_final_score(tavge, exam) :
final_score = 0.4 * tavge + 0.6 * exam
return final_score
def get_letter_grade(final_score) :
if 90 <= final_score <= 100:
grade = 'A'
elif 80 <= final_score <= 89:
grade = 'B'
elif 70 <= final_score <= 79:
grade = 'C'
elif 60 <= final_score <= 69:
grade = 'D'
else:
grade = 'F'
return grade
def print_comment(grade) :
if grade = 'A':
print "COMMENT: Very Good"
elif grade = 'B':
print "COMMENT: Good"
elif grade = 'C':
print "COMMENT: Satisfactory"
elif grade = 'D':
print "COMMENT: Need Improvement"
elif grade = 'F'
print "COMMENT: Poor"
read_test_scores()
print "TEST AVERAGE IS: " + str(tavge)
compute_final_score()
print "FINAL SCORE IS: " + str(final_score)
get_letter_grade(final_score)
print "LETTER GRADE IS: " + str(grade)
print_comment(grade)
def read_test_分数():
打印(“输入学生ID:”)
id=int(输入())
打印(“输入考试分数:”)
检查=int(输入())
打印(“输入所有测试分数:”)
score1=int(输入())
score2=int(输入())
score3=int(输入())
score4=int(输入())
score5=int(输入())
score6=int(输入())
score7=int(输入())
总和=(得分1+得分2+得分3+得分4+得分5+得分6+得分7)
tavge=总和/7
返回塔夫格
def计算最终分数(tavge、考试):
期末考试分数=0.4*tavge+0.6*
返回最终分数
def获得字母等级(最终分数):
如果代码中有许多错误,其中一些错误在注释中,但最关键的部分是错误地使用了全局变量和局部变量
下面是一个使用全局变量的正确方法修复代码的示例
tavge=0
考试=0
sid=0
最终得分=0
等级=“”
def读取测试分数():
全局sid
打印(“输入学生ID:”)
sid=int(输入())
全球考试
打印(“输入考试分数:”)
检查=int(输入())
打印(“输入所有测试分数:”)
score1=int(输入())
score2=int(输入())
score3=int(输入())
score4=int(输入())
score5=int(输入())
score6=int(输入())
score7=int(输入())
总得分=(得分1+得分2+得分3+得分4+得分5+得分6+得分7)
全球塔夫格酒店
tavge=总计/7
#返回塔夫格
def计算最终分数():
全球总分
期末考试分数=0.4*tavge+0.6*
#返回最终分数
def get_字母_等级():
全球等级
如果90这是我的答案。代码应该运行。注释作为注释插入
# NOTE: I haven't checked whether your math is right, or
# if the computed values are correct. I did however get your
# script to work.
def read_test_scores():
print("ENTER STUDENT ID: ")
id = int(input())
print("ENTER EXAM SCORE: ")
exam = int(input())
print("ENTER ALL TEST SCORES: ")
score1 = int(input())
score2 = int(input())
score3 = int(input())
score4 = int(input())
score5 = int(input())
score6 = int(input())
score7 = int(input())
sum = (score1 + score2 + score3 + score4 + score5 + score6 + score7)
tavge = sum / 7.0
# NOTE: if you want to use any variables from this function,
# then you have to "bring them outside" by "returning"
# them. Here, I return the values tavge, id, and exam. I noticed
# that bringing out "exam" is necessary since you'll
# be using it later on.
return tavge, id, exam
def compute_final_score(tavge, exam):
final_score = 0.4 * tavge + 0.6 * exam
return final_score
def get_letter_grade(final_score):
if 90 <= final_score <= 100:
grade = 'A'
elif 80 <= final_score <= 89:
grade = 'B'
elif 70 <= final_score <= 79:
grade = 'C'
elif 60 <= final_score <= 69:
grade = 'D'
else:
grade = 'F'
return grade
def print_comment(grade):
# NOTE `=` is for assignment. We use it when we want to
# tell python to make a variable mean something. For example:
# a = "some_name" basically means that when we call a, it would
# return the string "some_name".
# What you want to use here is `==` which is the equality operator.
# This checks whether or thing are equal.
if grade == 'A':
print("COMMENT: Very Good")
elif grade == 'B':
print("COMMENT: Good")
elif grade == 'C':
print("COMMENT: Satisfactory")
elif grade == 'D':
print("COMMENT: Need Improvement")
elif grade == 'F':
print("COMMENT: Poor")
# NOTE 1: you need to assign the function results to a
# variable (or variables), otherwise, the result or return value
# will go nowhere and you can't use it
tavge, id, exam = read_test_scores()
print "TEST AVERAGE IS: " + str(tavge)
# NOTE 2: variable names do not have to be the same as
# the name in their respective functions. Here, you can see
# that it will still run even if I changed the variable
# name final_score to my_variable. Although, of course, using
# final_score would still work.
# NOTE 3: the final_score function requires 2 inputs,
# namely tavge and exam. This basically means that you have to feed
# it with these 2 values for it to work. I took the
# tavge and exam variables as the results from your read_test_scores
# function
my_variable = compute_final_score(tavge, exam)
print("FINAL SCORE IS: " + str(my_variable))
grade = get_letter_grade(my_variable)
print("LETTER GRADE IS: " + str(grade))
print_comment(grade)
# FINAL NOTE: I haven't commented regarding coding style etc (like say
# for instance, there are best practices regarding variable names
# within functions, that is, if they should be similar to variable names
# outside the function), but regardless, the code is a good start. I
# would also advise you to try to narrow down your question first
# before posting. This can be done by running your code, and searching
# the internet for the particular erro messages, and if you're still stuck,
# ask here on stackoverflow.
注意:我还没有检查你的数学是否正确
#如果计算值正确。然而,我确实收到了你的来信
#脚本工作。
def读取测试分数():
打印(“输入学生ID:”)
id=int(输入())
打印(“输入考试分数:”)
检查=int(输入())
打印(“输入所有测试分数:”)
score1=int(输入())
score2=int(输入())
score3=int(输入())
score4=int(输入())
score5=int(输入())
score6=int(输入())
score7=int(输入())
总和=(得分1+得分2+得分3+得分4+得分5+得分6+得分7)
tavge=总和/7.0
#注意:如果要使用此函数中的任何变量,
#然后你必须通过“返回”来“带他们出去”
#他们。在这里,我返回值tavge、id和exam。我注意到
#“考试”是必要的,因为你会
#以后再使用它。
返回tavge、id、考试
def计算最终分数(tavge、考试):
期末考试分数=0.4*tavge+0.6*
返回最终分数
def获得字母等级(最终分数):
如果90正如一些人提到的那样,您需要使用==进行比较,那么您的if/else之一后面也缺少一个冒号
这是我对你的代码的看法。请记住,这不需要进行测试和测试,以确保有人实际输入了一个数字作为测试分数,而不是文本
“sum”也是Python内置函数的名称,它总结了您提供的任何内容
def read_test_scores():
scores = []
num_tests = 7
print("ENTER ALL TEST SCORES: ")
for i in range(num_tests):
score = input("Test " + str(i + 1) + ":")
scores.append(int(score))
return sum(scores) / num_tests
def compute_final_score(average, exam_score):
score = 0.4 * average + 0.6 * exam_score
return score
def get_letter_grade(finalized_score):
if 90 <= finalized_score <= 100:
letter_grade = 'A'
elif 80 <= finalized_score <= 89:
letter_grade = 'B'
elif 70 <= finalized_score <= 79:
letter_grade = 'C'
elif 60 <= finalized_score <= 69:
letter_grade = 'D'
else:
letter_grade = 'F'
return letter_grade
def print_comment(letter_grade):
if letter_grade == 'A':
print("COMMENT: Very Good")
elif letter_grade == 'B':
print("COMMENT: Good")
elif letter_grade == 'C':
print("COMMENT: Satisfactory")
elif letter_grade == 'D':
print("COMMENT: Need Improvement")
elif letter_grade == 'F':
print("COMMENT: Poor")
def get_student_id():
print("ENTER STUDENT ID: ")
identity = int(input())
return identity
def get_exam_score():
print("ENTER EXAM SCORE: ")
exam_score = int(input())
return exam_score
if __name__ == '__main__':
student_id = get_student_id()
exam = get_exam_score()
tavge = read_test_scores()
print("TEST AVERAGE IS: " + str(tavge))
final_score = compute_final_score(tavge, exam)
print("FINAL SCORE IS: " + str(final_score))
grade = get_letter_grade(final_score)
print("LETTER GRADE IS: " + str(grade))
print_comment(grade)
def read_test_分数():
分数=[]
num_测试=7
打印(“输入所有测试分数:”)
对于范围内的i(num_测试):
分数=输入(“测试”+str(i+1)+“:”)
分数。追加(整数(分数))
返回和(分数)/num\u测试
def计算期末成绩(平均、考试成绩):
分数=0.4*平均值+0.6*考试分数
回击得分
def获得字母等级(最终分数):
如果我有麻烦不是问题。问题是什么?具体点。还有,第一句话不是必须的,只是陈述问题。我的程序没有运行。一个问题是print_comment函数中的语法“如果等级为‘A’。我没有使用Python的经验,所以一遍又一遍地阅读我的代码什么也做不了。我需要有经验的人来检查并帮助发现任何明显的错误。这仍然不是问题。=
用于作业,而不是与=
,进行比较,如果成绩=='a':
现在运行得很好,但是你知道为什么它不能准确计算考试平均分和最终分数吗?我考了90分,考了80分、65分、70分、86分、97.5分、70分和84.5分。它计算出考试平均分为78分,最终分数为85.2分,但应该是79分和85.6分,这可能是由于整数除法。这意味着,当python将一个整数除以另一个整数时,结果将向下舍入。例如,10/6将返回1而不是1.666。解决方案是确保用或除以浮点(或带小数点的数字),这样它也将返回浮点。所以在这个例子中,如果我们除以10.0/6,10/6.0,或者10.0/6.0,你会得到想要的1.666。。。我会在一段时间内更新代码,但我会添加一个小数点,指向您使用的7除数。明白了,非常感谢您的帮助和建议
def read_test_scores():
scores = []
num_tests = 7
print("ENTER ALL TEST SCORES: ")
for i in range(num_tests):
score = input("Test " + str(i + 1) + ":")
scores.append(int(score))
return sum(scores) / num_tests
def compute_final_score(average, exam_score):
score = 0.4 * average + 0.6 * exam_score
return score
def get_letter_grade(finalized_score):
if 90 <= finalized_score <= 100:
letter_grade = 'A'
elif 80 <= finalized_score <= 89:
letter_grade = 'B'
elif 70 <= finalized_score <= 79:
letter_grade = 'C'
elif 60 <= finalized_score <= 69:
letter_grade = 'D'
else:
letter_grade = 'F'
return letter_grade
def print_comment(letter_grade):
if letter_grade == 'A':
print("COMMENT: Very Good")
elif letter_grade == 'B':
print("COMMENT: Good")
elif letter_grade == 'C':
print("COMMENT: Satisfactory")
elif letter_grade == 'D':
print("COMMENT: Need Improvement")
elif letter_grade == 'F':
print("COMMENT: Poor")
def get_student_id():
print("ENTER STUDENT ID: ")
identity = int(input())
return identity
def get_exam_score():
print("ENTER EXAM SCORE: ")
exam_score = int(input())
return exam_score
if __name__ == '__main__':
student_id = get_student_id()
exam = get_exam_score()
tavge = read_test_scores()
print("TEST AVERAGE IS: " + str(tavge))
final_score = compute_final_score(tavge, exam)
print("FINAL SCORE IS: " + str(final_score))
grade = get_letter_grade(final_score)
print("LETTER GRADE IS: " + str(grade))
print_comment(grade)