WDI – zajęcia 10

Zadania powtórkowe przed kolokwium nr 2

  1. (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:
    1. (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 parametru x w tych warunkach. Np. dla powyższych danych i x=40 wynikiem będzie słownik {”ciepło”:[”Gen a”],”zimno”:[”gen x”]}.
    2. (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 }.
    3. (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 parametru x. np. dla powyższych danych i x=30 otrzymamy wynik { ”1”: set([”ciepło”,”zimno”], ”Y”: set([”zimno”]) }.
  2. (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.
  3. (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
      

Leave a Reply

Your email address will not be published. Required fields are marked *