Форум сайта python.su
Начал решать задачки на Timus Online Judge, отсортировал по сложности и решаю с самой простой по порядку. Спустя некоторое время решил отправлять на проверку свои решения и столкнулся с такой проблемой. Почти все проверки заканчиваются ошибкой RuntimeError, при этом Pycharm в моих кодах ошибок не находит и отрабатываются все программы так как того требуют условия. В руководстве нашёл такую строчку “Поскольку язык Питон интерпретируемый, то ошибки типа NameError распознаются проверяющей системой как Runtime error, а не как Compilation error”. Почитал про NameError, но в чём проблема до сих пор не понимаю.
Может кто то сможет объяснить или хотя бы указать направления “где копать” ?
Для примера приведу ниже два кода. Первый система приняла, а вот второй опять вернула с RuntimeError.
import sys X = ('1', '2', '3', '4', '5', '6', '7', '8') Y = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') FIELDS = [] for x in X: for y in Y: FIELDS.append(y + x) dx = (2, 2, -2, -2, 1, -1, 1, -1) dy = (1, -1, 1, -1, 2, -2, -2, 2) def all_moves(x, y): count = 0 loop = 0 while loop != 8: move_x = x + dx[loop] move_y = y + dy[loop] yes_no = check_move(move_x, move_y) if yes_no == 'yes': count += 1 loop += 1 return count def check_move(x, y): if x in range(0, 8) and y in range(0, 8): checked_field = Y[y] + X[x] if checked_field in FIELDS: return 'yes' def main(): list_in = sys.stdin.read().split() list_out = [] count = 0 while count != int(list_in[0]): start_x = (X.index(list_in[count + 1][1])) start_y = (Y.index(list_in[count + 1][0])) list_out.append(str(all_moves(start_x, start_y))) count += 1 li = '\n'.join(list_out) sys.stdout.write(li) main()
from sys import stdin, stdout data = sys.stdin.readline() count_of_split = (int(data[0]) + 2 - 1) * (int(data[2]) + 2 - 1) if count_of_split % 2 == 0: sys.stdout.write('[second]=:]') else: sys.stdout.write('[:=[first]')
Офлайн
TuchaВторая программа имеет неправильное импортирование:
при этом Pycharm в моих кодах ошибок не находит и отрабатываются все программы так как того требуют условия.
[guest@localhost py]$ ./t.py
Traceback (most recent call last):
File "./t.py", line 4, in <module>
data = sys.stdin.readline()
NameError: name 'sys' is not defined
[guest@localhost py]$
Офлайн
py.user.next
Вторая программа имеет неправильное импортирование:
import sys data = sys.stdin.read() count_of_split = (int(data[0]) + 2 - 1) * (int(data[2]) + 2 - 1) if count_of_split % 2 == 0: sys.stdout.write('[second]=:]') else: sys.stdout.write('[:=[first]')
Офлайн
Потестировал. Короче, последний вариант - это
raise ValueError
#!/usr/bin/env python3 import sys data = sys.stdin.read().split() count_of_split = (int(data[0]) + 2 - 1) * (int(data[1]) + 2 - 1) if count_of_split % 2 == 0: sys.stdout.write('[second]=:]\n') else: sys.stdout.write('[:=[first]\n')
Офлайн
py.user.nextСпасибо, попробую разобраться.
Потестировал
Офлайн