需要帮助完成Python评分程序

时间:2012-11-30 04:03:49

标签: python average if-statement assignment-operator

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

  1. 询问用户他们的测试,作业,测验和实验室的数量 课程。
  2. 询问用户是否有与上述测试具有单独重量的决赛,例如:一个 当然有2个测试,每个重12.5%,最终重15%。
  3. 对于具有数字>的每个类别。 0 一个。提示用户加权百分比,超出100%,这应该是总数 所有类别100%! 湾获取该类别的分数。 C。如果类别是实验室,则将所有分数相加。 d。否则,平均得分。 即计算该类别的加权平均值。
  4. 使用每个类别的加权平均值,计算课程中的成绩。
  5. 询问用户他/她是否想要计算另一个班级的成绩。
  6. 如果用户回答是,则返回步骤1.
  7. 否则,结束该计划。
  8. 到目前为止我的输入部分是:

    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? ")
    

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

    如果测试> 0%=输入(“测试的加权百分比是多少?:”)

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

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

3 个答案:

答案 0 :(得分: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: "))

答案 1 :(得分: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

为了更好的可读性而不是有很多变量,我建议你将所有数据放入一个带有键的dict作为课程的不同组件。处理有组织的东西要容易得多。

答案 2 :(得分:0)

这应该可以解决问题:

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