Помимо сформулированных ниже правил, программы должны соответствовать документу ((http://www.python.org/dev/peps/pep-0008/ PEP8: Style Guide for Python Code)) из официальной документации языка Python. При сдаче задачи в ejudge проводится автоматическая проверка на соответствие программы PEP8.
==== Символы и отступы ====
Величина отступа – четыре пробела. Использование символа табуляции (символа, с кодом 9) запрещается.
Последняя строка должна завершаться символом конца строки. Пустых строк в конце файла быть не должно. В конце любой строки не должно быть пробелов.
Функции должны отделяться двумя пустыми строками. Отдельные смысловые блоки в программе должны отделяться пустыми строками.
==== Имена переменных ====
Имена переменных, функций, типов должны быть осмысленными и отражать назначение. Слишком длинные имена, однако, не рекомендуются. В именах допускаются сокращения, которые не затрудняют понимание имени и назначения функций и переменных.
Допускается использование односложных имен переменных для счетчиков (i, j, k), а также если это имя фигурирует в условии задачи (N, M, K, L).
В именах должны использоваться только английские слова. Транслитерации русских слов не допускаются. Запрещается использование символов, отличных от латинских букв, цифр и символа подчеркивания.
Если имя переменной или функции состоит из нескольких слов, то они должны разделяться символом подчеркивания или заглавными буквами. Например: Calc****Sqrt – допустимо calc_sqrt – божественно calculate_square_root – допустимо, но нежелательно (слишком длинное имя) vychislenie_kornya – недопустимо (используются русские имена) f – недопустимо (непонятно назначение функции)
Обычно в качестве имён функций и переменных используются одно или несколько слов (или их сокращений) маленькими буквами с разделением символом подчёркивания. Например, result, factorial, calc_factorial(n), calc_fact(n), iter, find_next_value(), apples_num и т.д. Для перевода слов можно использовать словари ((http://www.multitran.ru/ мультитран)) или ((http://slovari.yandex.ru/ словари Lingvo на яндексе))
Имена констант записываются полностью заглавными буквами. Если имя константы состоит из нескольких слов, для их разделения используются подчеркивания. Например, EPSILON, MAX_SIZE.
Имена массивов и названия типов структур должны записываться с заглавной буквы.
==== Арифметические операции ====
В одной строчке записывается одна арифметическая операция. Например:
%%(php) a = b b = c %%
Бинарные операции разделяются пробелом. После запятой ставится пробел. Между именем функции и скобками пробел не ставится, с внутренней стороны скобок пробелы не ставятся
%%(php) a = b + 2 * c a = (b + 2) * c print(a, b, sep = "") %%
==== Использование констант ====
Не допускается использование чисел в программе, значение которых неочевидно. Например, запись while i < 179 или c = c + 32 недопустима.
==== Длина строки и переносы ====
Длина каждой строки не должна превышать 79 символов, а длина строки с комментарием — 72. Переносы длинных строк могут выглядеть так: %%(php) # Aligned with opening delimiter foo = long_function_name(var_one, var_two, var_three, var_four)
# More indentation included to distinguish this from the rest. def long_function_name( var_one, var_two, var_three, var_four): print(var_one) %%
==== Отделение операторов пробелами ====
Пробелы не ставятся, если они примыкают к скобкам изнутри: %%(php) Yes: spam(ham[1], {eggs: 2}) No: spam( ham[ 1 ], { eggs: 2 } ) %%
Пробелы не ставятся перед знаками препинания: %%(php) Yes: if x == 4: print x, y; x, y = y, x No: if x == 4 : print x , y ; x , y = y , x %%
Пробелы не ставятся перед скобкой у функций или у списков: %%(php) Yes: spam(1) No: spam (1) Yes: dict['key'] = list[index] No: dict ['key'] = list [index] %%
Бинарные операции обычно отделяются одним пробелом слева и справа. Однако, если в выражении есть операции разного приоритета (например, сложение и умножение, или сложение и возведение в степень), то пробелы у операции с бОльшим приоритетом могут быть пропущены. В любом случае количество пробелов слева и справа от оператора должно быть одинаковым. %%(php) Yes: i = i + 1 Yes: submitted += 1 Yes: x = x*2 - 1 Yes: hypot2 = x*x + y*y Yes: c = (a+b) * (a-b)
No: i=i+1 No: submitted +=1 No: x = x * 2 - 1 No: hypot2 = x * x + y * y No: c = (a + b) * (a - b) %%
---- адрес оригинала: ((/Информатика/Архив/2014/8Б1/ПравилаНаписанияПрограмм))