0

我想创建一个执行以下操作的 python 程序:

  1. 询问用户他们课程中的测试、作业、测验和实验室的数量。
  2. 询问用户是否存在与上述测试不同的权重的期末考试,例如,一个课程有 2 次测试,每项重量为 12.5%,1 次最终重量为 15%。
  3. 对于每个类别的数字 > 0 a。提示用户输入 100% 中的加权百分比,所有类别的总和应为 100%!!!湾。获取类别的分数。C。如果类别是实验室,则将所有分数相加。d。否则,平均分数。e. 计算类别的加权平均值。
  4. 使用每个类别的加权平均值,计算课程中的成绩。
  5. 询问用户他/她是否想计算另一个班级的成绩。
  6. 如果用户回答是,则返回步骤 1。
  7. 否则,结束程序。

到目前为止,我所拥有的是输入部分:

tests = raw_input("Enter the number of tests in course: ")
tests = int
assignments = raw_input("Enter the number of assignments in course: ")
quizzes = raw_input("Enter the number of quizzes in course: ")
labs = raw_input("Enter the number of labs in course: ")
sepweightfinal = raw_input("Is there a final with a separate weight? ")

当我在输入后尝试做任何事情时,我无法让它工作。

如 if tests > 0 percent = input("什么是测试的加权百分比?:")

我的程序总是说 > 和 0 无效,有没有办法做到这一点?

在此先感谢,基本上我理解逻辑和我想要完成的事情,代码只是没有在我的脑海中点击。

4

3 回答 3

1

您需要使用以下方法将返回的字符串转换raw_input()为整数int

tests_string = raw_input("Enter the number of tests in course: ")
tests = int(tests_string)

或更简洁地说:

tests = int(raw_input("Enter the number of tests in course: "))
于 2012-11-30T04:08:28.407 回答
0

这应该可以解决问题:

tests = int(raw_input(" Enter the number of tests in course: "))
于 2012-11-30T06:58:52.353 回答
0

使用另一个变量作为加权百分比,例如

if test>0:
    test_weight=float(raw_input("Enter the weight of the tests:")
else:
    test_weight=0
if assignments>0:
    assign_weight=float(raw_input("Enter the weight of the assignments:")
else:
    assign_weight=0

如果所有权重的总和等于 100,则 chk

if (test_weight+assign_weight+lab_weight+final_weight)!=100:
    print "The weights are not accurate"
    break

使用浮点数获取每一项的分数,使用 for 循环获取测试次数。

for i in range(0,test):
    test_score.append(float(raw_input("Enter the score for the test:")))

其中 test_score 是一个列表。现在您已经列出了分数的不同组成部分的所有分数,您可以用它们计算总和、平均值等,并最终使用 if 语句计算成绩。

if weightedavg>=60:
    grade='A'
elif weightedavg>=40:
    grade='B'
else:
    grade='C'

把整个事情放在一个while循环中

while(1):

如果用户对第 6 点不回答,则中断循环

if user_resp=='N':
    print "Goodbye"
    break

为了更好的可读性而不是有很多变量,我建议您将所有数据放入带有键的字典中,作为课程的不同组成部分。处理有组织的东西会容易得多。

于 2012-11-30T06:20:09.807 回答