Учебная страница курса биоинформатики,
год поступления 2015
Советы и рекомендации к практикуму 7
Для работы дома вам необходимо поставить на свой компьютер Python 2.7.10 с сайта https://www.python.org/ .
Если вы уже программировали на Python'е, можете сразу приступать к заданиям. Если нет, советуем сначала создать и запустить несколько совсем простых программ. Например, для начала можно создать файл first.py с одной строчкой внутри:
print 5
затем набрать в командной строке python first.py, нажать Enter и убедиться, что на консоль выдано число 5. Если что-то не получается, пишите!
Все пройденные возможности необходимо опробовать, написав по простейшей программе с каждой из них. Если эффект какого-нибудь оператора (или другого элемента языка) непонятен, экспериментируйте, пока он не станет понятен. Не бойтесь сообщений об ошибках — это необходимый элемент освоения языка и отладки программ.
Не следует пытаться запускать python из-под Far, если активная панель представляет Netbox. Тестируйте и отлаживайте зачётные программы у себя, затем копируйте в папку credits.
Полезные для работы возможности Far
<Ctrl+O> (буква O, не ноль!) убирает панели, открывая экран консоли. Повторное нажатие <Ctrl+O> возвращает всё на место.
<Ctrl+F1> убирает (возвращает) только левую панель.
<Ctrl+E> копирует в командную строку предыдущую выполненную команду (при убранных панелях, т.е. после <Ctrl+O>, аналогичное действие имеет стрелка вверх ↑).
<Ctrl+J> копирует в командную строку файл, на который наведён курсор.
Пройденные на первом занятии элементы Python
a = 5 b = a + 1 ct_1 = "Oho"
присваивание значений переменным.
+, -, *, / — четыре арифметических действия над числами.
** — возведение числа в степень. Например, в результате выполнения оператора
root2 = 2 ** 0.5
в переменную "root2" будет записан квадратный корень из 2.
% — остаток от деления (7%3 возвращает 1).
Действия над строками: сложение + и умножение на число *. Пример:
s = "abc" + "xyz" * 3
(если непонятно, что в данном случае запишется в переменную s, выполните программу, печатающую соответствующее значение).
print a print a, 5, "Wow!"
"печать" (т.е. вывод на консоль) значений переменных и констант.
s = " 5" x = int(s) y = 5 t = str(y)
смена типа со str (строки) на int (целые числа) и обратно. Второе получается всегда, а первое — только если строка состоит из цифр (и возможно ещё пробелов и прочих невидимых байтов).
n = 5 x = float(n) y = 5.6 b = int(y) s = str(y)
попробуйте (если сразу не ясно). Даже если кажется, что ясно, рекомендуется попробовать, что возвращает int(y) для таких значений y, как 2.1, 2.9, -2.1, -2.9.
Несколько встроенных функций
round — округление (числа с плавающей точкой, т.е., типа float).
min, max — ясно и так :)
abs — абсолютное значение (модуль).
len — длина строки.
Аргумент(-ы) любой функции пишется (пишутся) в скобках, например:
k = max(n, 0)
Приём данных с консоли
inp = raw_input("Some text")
Программа, дойдя до такой строки, выдаст на консоль текст "Some text" и будет ждать, пока пользователь не введёт что-нибудь с клавиатуры и не нажмёт клавишу Enter. После этого введённое окажется содержимым переменной inp (тем самым в дальнейших строках программы это можно использовать).
Важно: даже если вы ввели только цифры, переменная inp всё равно будет типа str, то есть строкой. Если нужно ввести число, можно написать:
inp = raw_input("Please type a number and press Enter: ") n = int(inp)
или сразу так (чтобы не заводить лишней переменной):
n = int(raw_input("Please type a number and press Enter: "))
(но сильно подобными "сжатиями" увлекаться не советую, они ухудшают читаемость кода).
Приём данных из файла
Пусть есть файл с именем "twonubers.txt" и содержимым:
15 4
Следующая программа выдаёт на консоль сумму чисел, найденных в первых двух строках файла (а если там не числа или если там только одна строка или если файла вообще нет, выдаст ошибку):
indata = open("twonumbers.txt", "r") s1 = indata.readline() s2 = indata.readline() print int(s1) + int(s2) indata.close()
(каждый оператор indata.readline() читает очередную строку файла. Их может быть сколько угодно, но после того, как строки файла кончатся, все последующие readline'ы будут возвращать пустые строки. Попробуйте!)
Надо иметь в виду, что строка из файла поступает вместе с байтом (байтами) конца строки. Если они мешают (как в одном из заданий), можно написать так:
s1 = s1.strip()
и строка s1 "разденется", избавившись от невидимых байтов (в частности пробелов и признаков конца строки) с обоих краёв.
Надеюсь, понятно, что для отладки программ из заданий вам необходимо самим создавать файлы с подходящим содержимым!
Если что-то, нужное для выполнения заданий практикума 7, вы на этой странице не нашли, пишите sas@fbb.msu.ru . Также пишите, если что-то не получается и вы не можете понять, как сделать, чтобы получалось.