Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2017

Советы и рекомендации к практикуму 7

Для работы дома вам необходимо поставить на свой компьютер Python 2.7.14 с сайта 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 . Также пишите, если что-то не получается и вы не можете понять, как сделать, чтобы получалось.