Учебная страница курса биоинформатики,
год поступления 2014
Типичные ошибки при выполнении ДЗ по программированию
Не успеваете - пишите письмо преподавателям
и получайте отсрочку. И вообще если что-то не так, пишите письмо, без сомнения. Лучше письмо сегодня, чем задолжность завтра.
Программа не запускается
Исправляйте.
Порядок имеет значение
Если по условию задачи программа принимает или выдаёт не одно, а несколько значений, выдавайте их в том же порядке, в котором они упоминаются в условии (если в условии явно не прописано, что порядок значения не имеет), иначе система проверки может не принять решение.
Внимательно читайте задания и делайте то, что просят
Если просят число цифр в числе, а вы печатаете само число, то задача не засчитывается.
Если просят файл Pupkine_pr8_number-length.py, а вы сдаете файл Pupkine_pr8_number_length.py, то задача не засчитывается, без сомнения.
Пишите грамотно
Проверяйте написание английских (и русских) слов, в которых сомневаетесь. К примеру, в следующей фразе как минимум 3 опечатки/ошибки: "What the last nucleotid nomber is? Protein lenght is 100".
Программа должна задавать вопрос пользователю
при помощи raw_input, чтобы было ясно, что в данный момент вводится.
Например, "CDS: Enter 1st bp number". (CDS - стандартное сокращение coding sequence, кодирующая последовательность; bp - base pair, пара нуклеотидов).
Когда в задании говорят "печатает", имеется в виду вывод на стандартный выходной поток (например, при помощи print), а не вывод на принтер
Программа должна указать, что именно она печатает
Например, protein length is 99 aa (aa - стандартное сокращение amino acids).
Программа не должна в конце зависать
Не нужно писать в конце скрипта raw_input() и т.п. Результат смотрят при помощи Ctrl+O, а не любуются им до нажатия кнопки Enter.
Не надо при каждом действии приводить тип
Рассмотрим работающее решение задачи про нейтрализацию:
Всё в порядке, но на строках 5 и 6 зачем-то приводят reacted к типу float. reacted здесь и так float (результат min, применённого к двум float). Напрашивается догадка, что автор кода ошибочно считает, что reacted на 4-ой строке тоже становится строкой. Если это так, то стоило вместо "перестраховочного" приведения типов взять и проверить. Запомните: программирование наугад и добавление лишнего кода "чтобы не сглазить" - плохие практики!
Пути к файлам
Никаких русский букв и пробелов в именах файлов, иначе результаты будем сообщать по-китайски
Всем заданиям присвоены мнемоники, указанные после названий. Мнемоники заданий подчеркнуты. Решение кладите в файл ~/term1/block3/credits/ВашаФамилия_практикум_мнемоника.py где ~ - ваша домашняя папка (не путать с папкой public_html!), ВашаФамилия - ваша фамилия латинскими буквами с большой буквы, а мнемоника - мнемоника, указанная в задании.
Регистр букв в имени файла, как в задании. Не ошибайтесь с именем файла, иначе мы не увидим решение!
Мы проверяем выполнение программ при помощи Python 2
print("Hello, ",name,"!", sep="")
a=input()
Нет, нам не трудно установить Python 3, более того, он установлен, но есть несколько причин проверять решения только питоном 2:
- проверка каждого задания двумя версиями питона вместо одной увеличит нашу работу в 2 раза
- ваш код должен работать в обеих версиях, так как питон 2, видимо, никогда не уступит питону 3 по популярности
- кто освоил питон 3 без нашей помощи, сообразит, как написать так, чтобы работало одинаково в обеих версиях
Оформление кода
Следование нижеприведенным правилам не является обязательным для получения зачёта за задание, но крайне желательно (такое решение получает дополнительные баллы).
Проверка оформления кода происходит с оглядкой на стандарт оформления кода PEP8. Советую ознакомиться, чтобы писать код, который приятно читать.
Нарекания к коду по части стандарта записываются в протокол проверки решения по-английски.
Код выглядит более опретным, если рядом с знаками =, +, - и проч. стоят пробелы. После имён функций пробелы наоборот ставить не нужно. Пробелы ставят после запятых, но не до запятых и двоеточий. В конце строки кода пробелов быть не должно. (Например, a=min( 100 , 1000) нужно заменить на a = min(100, 1000))
Бинарные операции разделяются пробелом. После запятой ставится пробел. Между именем функции и скобками пробел не ставится, с внутренней стороны скобок пробелы не ставятся.
Не нужно приводить к типу переменную, которая и так в этом типе. (Например, int(2 ** 10) нужно заменить просто 2 ** 10)
Величина отступа – четыре пробела.
Имена переменных, функций, типов должны быть осмысленными и отражать назначение. Слишком длинные имена, однако, не рекомендуются. В именах допускаются сокращения, которые не затрудняют понимание имени и назначения функций и переменных.
Допускается использование односложных имен переменных для счетчиков (i, j, k), а также если это имя фигурирует в условии задачи (N, M, K, L).
В именах должны использоваться только английские слова. Транслитерации русских слов не допускаются. Запрещается использование символов, отличных от латинских букв, цифр и символа подчеркивания.
Не допускается использование чисел в программе, значение которых неочевидно. Например, запись while i < 179 или c = c + 32 недопустима.