我正在为学生评分解决有关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
答案 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;