Используя Python 3.x, я пытаюсь округлить оценки учеников, учитывая странный способ оценки учителя.В основном, если оценка ученика ниже 38, ничего не делайте.Если разница между оценкой и следующим кратным 5 меньше 3, округлите оценку до следующего кратного 5. В противном случае не меняйте оценку.Вот код, который я использовал как в веб-среде разработки PyCharm, так и в HackerRank:
grades = [37, 39, 52, 83, 91]
def gradingStudents(grades):
for i in range(len(grades)):
grade = grades[i]
if grade > 38:
for j in range(4):
next_val = grade + j
if ((next_val-grade) < 3) and (next_val%5 == 0):
grade = next_val
print(grade)
gradingStudents(grades)
Вывод в PyCharm правильный:
37
40
52
85
91
Для сравнения приведем кодfrom из веб-среды IDE в HackerRank (https://www.hackerrank.com/):
#!/bin/python3
import os
import sys
#
# Complete the gradingStudents function below.
#
def gradingStudents(grades):
for i in range(len(grades)):
grade = grades[i]
if grade > 38:
for j in range(4):
next_val = grade + j
if ((next_val-grade) < 3) and (next_val%5 == 0):
grade = next_val
print(grade)
if __name__ == '__main__':
f = open(os.environ['OUTPUT_PATH'], 'w')
n = int(input())
grades = []
for _ in range(n):
grades_item = int(input())
grades.append(grades_item)
result = gradingStudents(grades)
f.write('\n'.join(map(str, result))) #<-- This is line 32 from error!
f.write('\n')
f.close()
Это приводит к следующей ошибке:
Traceback (most recent call last):
File "solution.py", line 32, in <module>
f.write('\n'.join(map(str, result)))
TypeError: 'NoneType' object is not iterable