对于我的计算机科学课,我必须制作一个计算成绩的程序。 这是我的第一个计算机科学课(没有以前的经验),所以我正在努力解决它。
这些是方向:
向用户询问课程中的测试,作业,测验和实验的次数。
询问用户是否有与上述测试具有单独重量的决赛,例如:一门课程有2个测试,每个测试重量为12.5%,最终重量为15%。
对于具有数字>的每个类别0
一个。提示用户加权百分比,超出100%,这应该是总数 所有类别100%!!!
湾获取该类别的分数。
℃。如果该类别是实验室,则将所有分数相加。
d。否则,平均分数。
即计算该类别的加权平均值。
使用每个类别的加权平均值,计算课程中的成绩。
询问用户是否要为另一个班级计算成绩。
如果用户回答是,则返回步骤1.
否则,请结束该计划。
到目前为止我的代码:
def main():
lists = get_user_input()
get_scores(lists);
get_weighted_average(lists)
def get_user_input():
# How many?
t = int(input("How many tests?: "))
a = int(input("How many assignments?: "))
q = int(input("How many quizzes?: "))
l = int(input("How many labs?: "))
# How much weight on grade?
tw = float(input("Enter weight of tests: "))
aw = float(input("Enter weight of assignments: "))
qw = float(input("Enter weight of quizzes: "))
lw = float(input("Enter weight of labs: "))
lists = [t, a, q, l, tw, aw, qw, lw]
return lists
def get_scores(lists):
# What are the scores?
scores = [0] * 5
for(x in range(lists[0]):
test_scores = float(input("enter your test scores: "))
scores[x] = test_scores
for(x in range(lists[1]):
test_scores = float(input("enter your assignment scores: "))
scores[x] = assignment_scores
for(x in range(lists[2]):
test_scores = float(input("enter your quiz scores: "))
scores[x] = quiz_scores
for(x in range(lists[3]):
test_scores = float(input("enter your lab scores: "))
scores[x] = lab_scores
sumlabs = 0
for(x in range(lists[3]):
sumlabs = sumlabs + scores[x]
print(sumlabs)
def get_weighted_average(lists):
main()
我不知道如何继续,所以非常感谢任何帮助。
答案 0 :(得分:0)
平均得分意味着将它们相加并除以它们的数量。您可以使用列表可以告诉您它有多少元素的事实。例如,如果x是列表,则len(x)是列表中的事物数。你应该小心不要计算空列表的得分,因为这意味着除以零。在以下函数中,如果列表中有某些内容,则“if score_list:”将为true。否则返回None(因为没有定义平均值)。
def average_score(score_list):
if score_list: # makes sure list is not empty
total = 0 # our total starts off as zero
for score in score_list: # starts a loop over each score
total += score # increases the total by the score
return total / len(score_list) # returns aveage
要从用户输入中形成分数列表,假设用户在提示时将所有分数放在同一行,您可以从用户处获取一个字符串(大概如:“13.4 12.9 13.2”然后使用string的split方法将其转换为字符串列表,如[“13.4”,“12.9”,“13.2”],然后将此字符串列表转换为浮点列表。最后使用上面的平均函数,您可以获得平均值:
test_score_entry = raw_input("Enter your test scores separated by spaces: ")
test_sore_strings = test_score_entry.split()
test_scores = [float(_) for _ in test_score_strings]
average_score = average(test_scores)