Занятие 6. Условия, списки, циклы, чтение файла 11-12 октября ФББ МГУ имени М.В.Ломоносова 2013 год Повторение: переменные, функции 1 Переменная: Название например, foo Тип например, float Значение например, 5.7 foo = 5.7 print foo Функция: Название например, fooFunc Список аргументов например, (name, age) Тело список команд Что "возвращает" если не указано прямо, (через команду return) , то все равно возвращает величину None специального типа def fooFunc (name, age): print "My name is %s" % name print "I am %i years old" % age fooFunc("Dasha", 100) Оператор условия: if … name = raw_input(“Enter your age = int(raw_input(“How old if age < 16: print “Oh, %s! You are a print “%s is %s years old” % name, please: “)) are you? ”)) child, darling!” % name (name,age) < – операция сравнения • Ее операнды в данном случае числа. Вместо age, естественно, подставляется значение этой переменной. • Результат – булево значение, т.е. либо False, либо True (первая заглавная обязательна). Эти значения называют логическими константами. • Переменные, содержащие булевы значения, имеют тип bool. • Оператор if определяет следует ли выполнять операции в теле оператора (все команды со сдвигом) или нет: если условие True, то выполнять, если False, то пропустить 2 Операторы if, elif, else 3 …долгое вычисление значений dry и wet… rain = wet > dry Операция сравнения команда, которая if rain: двоеточие будет print "Do not forget an umbrella!" работать отступ happy = True Логическая операция sun = True if rain and sun: print "Gribnoi dogd'! :)" elif rain and happy: print "Sweet rain ^_^" else: print "Gloomy rain :(" только если условие True 4 Список (list) Список – это переменная особого типа list: она содержит несколько значений (одного или разных типов), и можно: • менять значения; • добавлять новые и удалять существующие. квадратные скобки, через запятые stud_list = ["Anna", "Victor", "Sergei"] stud_list[0] stud_list[1] a = stud_list[1] stud_list[1] = "Dasha" Можно Можно! stud_list[2] Обращение к элементам списка 5 по очереди: цикл for двоеточие for foo in ["Lena", "Vasya", "Petya"]: print foo отступ print "Cycle done!" Строчка 1: foo = Строчка 2: print Строчка 1: foo = Строчка 2: print Строчка 1: foo = Строчка 2: print Строчка 3: print "Lena" foo "Vasya" foo "Petya" foo "Cycle done!" Обращение к элементам списка 6 по очереди: цикл for stud_list = ["Anna", "Victor", "Sergei"] 1) Функция len(x) возвращает длину x. Если x – кортеж или список, то возвращается количество элементов в нем 2) Функция range(n) возвращает список из целых чисел от 0 до n - 1. [ 0, 1, 2 ] 3 for foo in range(len(stud_list)): print foo, stud_list[foo] отступ двоеточие Проход по символам строки Строка длины n (тип str) может рассматриваться как набор строк длины 1 из n элементов: • Длина строки узнается через len(foostring); • Обращение к i-тому символу строки foostring (! начиная с нулевого) через синтаксис foostring[i]; • Символ строки изменить нельзя. foostring = "Students will learn or die" a = len(foostring) a = 26 b = foostring[7] b = "s" for symbol in foostring: print symbol То же for i in range(len(foostring)): самое print foostring[i] 7 Чтение файла построчно 1) Функция open(filename) возвращает объект типа file, полученный открытием существующего файла с именем filename и доступный для чтения ! Обратите внимание: использовать обычное имя файла (например, "file.txt" можно только если этот файл лежит в той же директории, что и ваш скрипт) name = "Dibrova_YP_0000001.fasta" foofile = open (name) n = 1 for temp_str in foofile: print "String %i: %s" % (n, temp_str) n = n + 1 Закрывает файл (функция foofile.close() принадлежит классу file, следующее занятие) 8 Удаление конца строки Строки, которые вы получаете из файла, будут содержать символ конца строки \n (косая черта показывает, что имеется ввиду не буква n) Его можно удалить с помощью функции strip() Эта функция не является встроенной функцией Python; она принадлежит классу str ( следующее занятие!) foostring = "Students will learn or die\n" print foostring print автоматически переходит на новую строку после конца строки; появится пустая строка new_str = foostring.strip("\n") print new_str В new_str символа конца строки \n уже нет 9 Кортеж (tuple) 10 1) Кортеж – это переменная особого типа tuple: похож на список, т.к. содержит несколько значений круглые скобки, через запятые stud_tuple = ("Anna", "Victor", "Sergei") stud_tuple[0] stud_tuple[1] stud_tuple[2] print "My name is %s, my age is %i" % ( "Dasha", 26 ) 2) Кортеж неизменяемый: добавить в него новые элементы или поменять существующие нельзя a = stud_tuple[1] stud_tuple[1] = "Dasha" Можно Нельзя! Цикл while 11 Цикл while – это выделенный фрагмент кода, который повторяется вновь и вновь до тех пор, пока заданная булевая переменная (условие) сохраняет значение True rain = 5 > 3 двоеточие if rain: print "Do not forget an umbrella!" отступ Сравните rain = 5 > 3 двоеточие while rain: print "Keep your umbrella open!" отступ Применение цикла while foostring = "Students will learn or die" for i in range(len(foostring)): print foostring[i] Сравните i = 0 while i < len(foostring): print foostring[i] i = i + 1 12