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 parametrux
w tych warunkach. Np. dla powyższych danych ix=40
wynikiem 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=30
otrzymamy 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