学生的评分逻辑

时间:2019-05-31 15:50:47

标签: python

我正在为学生评分解决有关hackerrank的简单问题。我已经用python编写了代码,但是由于期望的输出没有出现,代码逻辑似乎不正确。

https://www.hackerrank.com/challenges/grading/problem在这里,您可以找到问题陈述。

问题是

  

HackerLand大学有以下分级政策:   每个学生   的评分范围是0到100。任何小于40的   不及格。

     

Sam是大学的教授,喜欢四舍五入   每个学生的成绩均遵循以下规则:   等级和下一个5的倍数小于3,向上舍入到下一个   5的倍数。如果等级的值小于38,则不进行四舍五入,因为   结果仍然是不及格。例如,等级= 84将是   四舍五入到85,但等级= 29不会四舍五入,因为会导致四舍五入   小于40的数字。

     

给出每个等级的初始值   Sam的学生,编写代码以自动完成取整过程。

def gradingStudents(grades):
    #
    # Write your code here.
    #
    for x,i in enumerate(grades):
     if(i>=38) and (i%5)>=3:
        grades[x]=i+5-(i%5)
     return (grades)

这是我编写的代码。

用于输入

73, 67, 38, 33

我的输出是

75, 67, 38, 33

但预计38应该四舍五入到40

3 个答案:

答案 0 :(得分:1)

您的问题是由于缩进造成的。

请注意,return语句与if语句均位于循环内,而if语句均与if语句对齐。因此,您的代码实际上只是检查第一个元素,然后返回成绩,可能只更改了第一个成绩。

一旦取消缩进return语句使其在for循环之外,代码就可以工作。

答案 1 :(得分:1)

问题是您处理完第一个数字后就return了。 相反,请等到您处理完所有这些文件为止:

def gradingStudents(grades):

    for x,i in enumerate(grades):
        if(i>=38) and (i%5)>=3:
            grades[x]=i+5-(i%5)
    return (grades)

book = [73, 67, 38, 33]
print(gradingStudents(book))

输出:

[75, 67, 40, 33]

答案 2 :(得分:0)

java

 public static int[] gradingStudents (int grades[])
   {
       for(int i=0;i<grades.length;i++)
        {
            if(grades[i]>=38 && (grades[i]%5) > 2)
            {
                grades[i] =grades[i]+  5 - grades[i]%5;
            }
        }
        return grades;