Zadania powtórkowe przed kolokwium nr 2
- (kolokwium 2, 2014, zad 3) Dane są dwie listy: genów i przypisanych do nich chromosomów (Np.
poz=[(”Gen a”,”1”),(”gen x”,”Y”)])oraz genów i przypisanych do nich wartości w różnych warunkach (Np.wart=[(”Gen a”,”ciepło”,50.0), (”Gen a”,”zimno”,30.5), (”gen x”,”zimno”,250)]). Napisz następujące funkcje:- (1p.)
wysokie(poz,wart,x), ktora zwroci słownik, którego kluczami będą warunki (np. “ciepło” i “zimno”) a wartościami listy genów o wartościach powyżej parametruxw tych warunkach. Np. dla powyższych danych ix=40wynikiem będzie słownik{”ciepło”:[”Gen a”],”zimno”:[”gen x”]}. - (2p.)
srednie(poz,wart), która zwróci słownik, którego kluczami będą pary(chromosom,warunek)a wartościami średnie wartości genów przypisanych do tych chromosomów w podanych warunkach. Np. dla powyższych danych wynikiem będzie słownik{ (”1”,”ciepło”):50.0, (”1”,”zimno”):30.5, (”Y”,”zimno”):250.0 }. - (3p.)
chromosomy(poz,wart,x), która zwróci słownik, którego kluczami będą chromosomy, a wartościami będą zbiory warunków, dla których na danym chromosomie istnieje gen o wartości powyżej parametrux. np. dla powyższych danych ix=30otrzymamy wynik{ ”1”: set([”ciepło”,”zimno”], ”Y”: set([”zimno”]) }.
- (1p.)
- (kolokwium poprawkowe 2, 2014, zad3, 3p.) Mamy dany plik z sekwencjami DNA w kolejnych linijkach. Napisz program, który używając wyrażeń regularnych wypisze tylko te linijki pliku, które zawierają ten sam symbol powtórzony co najmniej 5 razy bezpośrednio po sobie, a następnie (po niezerowej liczbie innych symboli) dwukrotnie więcej symboli komplementarnych (uznajemy tylko komplementarność A-T, G-C). Na przykład:
- ATGTAGTAAAAAATGTAGTGTCGATGCTTTTTTTTTTTTCGTGATGAT → wypisujemy.
- ATGTGTAGATGTTTTTATGTGATAGTGATAGTAAAAA → nie wypisujemy, bo nie ma wystarczająco dużo A.
- ACGTGTCACGGGGGCCCCCCCCCCATGCGTAG → nie wypisujemy, bo nie ma nic pomiędzy G i C.
- (kolokwium 2, 2014, zad 1, 3p.) Dla każdego z poniższych programów odpowiedz co zostanie wypisane na ekranie po jego wykonaniu.
- a.py
d = {’a’ : 3} def add(x): d = {’b’ : 6} d[’c’] = x return sum(d.values()) print add(9), d - b.py
d = {’li’ : [1, 2, 3]} def update(x, i, y): global d d[x] = d[’li’] d[x][i] += y update(’la’, 0, 1) print d update(’li’, 1, 2) print d - c.py
lu = [−3, −2, −1] def liextend (li, la): if len(la) > 0: li += la return liextend(li, la[:-1]) else: return li print liextend([1, 2, 3], lu), lu
- a.py