kolokwium 2 2014
Transkrypt
kolokwium 2 2014
Kolokwium II ze Wstępu do Informatyki 15.12.2014 Czas trwania: 90min. Każde zadanie oddajemy na osobnej kartce, podpisanej imieniem, nazwiskiem, kierunkiem studiów i numerem indeksu. 1. (4p.) Co zostanie wypisane na ekranie po wykonaniu podanych fragmentów kodu? Oceniane będą odpowiedzi, ale uzasadnienie zapisane na kartce z rozwiązaniem może być brane pod uwagę przy udzielaniu częściowych punktów za błędne rozwiązania. y=42 def f ( x ) : global y x+=y y+=x+y return x print f ( y ) , y m= [ 1 , 2 , 3 ] def g ( l ) : global m i f len ( l )<=1: return l else : m[0]+=1 l [ 1 ] =m return l+g ( l [ : − 1 ] ) print g ( [ 7 , 8 , 9 ] ) ,m 2. (5p.) Dany jest plik tekstowy kontakty.txt zawierający dane osobowe. Są w nim między innymi fragmenty linii zawierające numery telefonów lub e-maile naszych znajomych. Dane te są w postaci: nazwa właściciela (imię lub imię i nazwisko - tylko litery, pierwsza duża), myślnik i kontakt do osoby. Numery telefonów są w dwóch postaciach: xxx-xxxxxx lub xx-xxx-xx-xx. Mogą być też poprzedzone numerem kierunkowym kraju w nawiasie: np. (+48) 22-000-00-00, e-maile to ciągi liter i cyfr zawierające kropki oraz dokładnie 1 symbol “@”, np. [email protected]. Napisz program, który używając wyrażeń regularnych wypisze dwie listy: listę par (imię, telefon), oraz listę par (imię, e-mail). Jeśli było nazwisko, to je pomijamy. Jeśli nie było numeru kraju, to go uzupełniamy o (+48). Przykładowo, dla pliku kontakty.txt zawierającego następujący tekst: Ania-111-222-333 Ola-Kowalska-(+49)-22-600-90-90 [email protected], Ola jakas inna informacja: 000000 Jan Bajcki-(+49) 123456789 Jan [email protected] wypiszemy: [(”Ania”,”(+48)-111-222-333”),(”Ola”,”(+49)-22-600-90-90”)], [(”Ola”,”[email protected]”),(”Jan”,”[email protected]”)] 3. (6p.) Dana 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 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”]} (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 parametru x. np. dla powyższych danych i x=30 otrzymamy wynik { ”1”: set([”ciepło”,”zimno”], ”Y”: set([”zimno”]) } Powodzenia!