http://math.uni.lodz.pl/~rodakt/geoinformacja/15_miast.csv http

Transkrypt

http://math.uni.lodz.pl/~rodakt/geoinformacja/15_miast.csv http
1 Zapisa¢ na dysku (w katalogu w którym piszemy programy pythonowe) plik
http://math.uni.lodz.pl/~rodakt/geoinformacja/15_miast.csv
Plik ten zawiera list¦ 15 najwi¦kszych miast Europy. Pierwsza linia pliku to nagªówek. Separatorem pola jest
tabulator ('\t').
(a) Napisa¢ program, który wy±wietli zawarto±¢ pliku.
(b) Stworzy¢ nowy plik 15_miast_kropka.csv, w którym wszystkie przecinki dziesi¦tne zostaj¡ podmienione
na kropki.
(c) Napisa¢ program, który wy±wietla nagªówek oraz linie tabeli opisuj¡ce miasta o liczbie ludno±ci mieszcz¡cej
si¦ w zadanym przedziale. W kolumnie Miejsce nale»y zastosowa¢ now¡ numeracj¦.
(d) Wy±wietli¢ tabel¦ wraz z dodatkow¡ kolumn¡ Nadwy»ka, która jest ró»nic¡ liczby ludno±ci w zespole
miejskim i w mie±cie.
(e) Wy±wietli¢ tabel¦ posortowan¡ malej¡co ze wzgl¦du na liczb¦ ludno±ci zamieszkuj¡cej zespóª miejski.
2 Podobnie jak wy»ej, zapisa¢ na dysku plik
http://math.uni.lodz.pl/~rodakt/geoinformacja/kghm.txt
Plik ten zawiera list¦ notowa« gieªdowych spóªki KGHM. Format pliku to csv, pozycje oddzielone s¡ przecinkami.
Druga i trzecia kolumna zawiera odpowiednio dat¦ i cen¦ otwarcia.
(a) Zbudowa¢ sªownik, którego klucze to daty, a warto±ci to ceny otwarcia.
(b) Napisa¢ funkcj¦ cena(data), która zwraca cen¦ otwarcia dla daty data, o ile klucz data istnieje. W
przeciwnym razie funkcja zwraca False.
(c) Napisa¢ funkcj¦ zysk(data_kupna, data_sprzedazy, liczba_akcji), która zwraca zysk na podstawie
daty kupna, sprzeda»y i ilo±ci akcji. Je±li daty kupna lub sprzeda»y nie ma w±ród kluczy, to funkcja
powinna informowa¢ o tym u»ytkownika.
(d) Napisa¢ funkcj¦ srednia(rok), która zwraca ±redni¡ cen¦ otwarcia za rok rok.
3 U»ywaj¡c klucza ma-li-no-we-bu-ty mo»na zaszyfrowa¢ wiadomo±¢ wymieniaj¡c znaki le»¡ce wewn¡trz tych
samych sylab klucza: m → a, a → m, l → i, i → l, itd. Znaki, których nie ma w kluczu pozostawia si¦
bez zmian. Przykªadowo tekst ziemia jest pªaska wymaga wymienienia 9 znaków i po zaszyfrowaniu ma
posta¢ zlwalm jwsy pªmskm. Powtórne zaszyfrowanie przywraca pierwotn¡ posta¢ tekstu.
(a) Napisa¢ funkcj¦ szyfruj(lancuch) przyjmuj¡c¡ jako argument ªa«cuch znaków, a zwracaj¡c¡ ªa«cuch
zaszyfrowany wedªug powy»szego schematu. Warto wcze±niej napisa¢ funkcj¦ szyfruj¡c¡ pojedy«czy
znak.
(b) Uogólnienie: Napisa¢ funkcj¦ szyfruj(lancuch, klucz). Argument lancuch, to ªa«cuch, który ma
by¢ zaszyfrowany, argument klucz, to te» ªa«cuch, który ma peªni¢ rol¦ klucza analogicznie do wy»ej
podanego 'malinowebuty'. Ša«cuch klucz musi speªnia¢ nast¦puj¡ce dwa warunki: by¢ niezerowej,
parzystej dªugo±ci i nie zawiera¢ repetycji. W funkcji szyfruj nale»y u»y¢ funkcji testuj¡cej, czy dany
klucz speªnia wymienione warunki. Je±li tak, to funkcja nic nie zwraca (czyli zwraca None); je±li nie, to
funkcja wywoªuje wyj¡tek ValueError z czytelnym komentarzem.
1
4 Zaimplementuj gr¦ Losowy NIM. Zasady s¡ nast¦puj¡ce. Na stosie le»¡ 23 kamienie. Uczestnicy, w tym przypadku
komputer i czªowiek, pobieraj¡ na zmian¦ ze stosu 1, 2, 3 lub 4 kamienie. Czªowiek pobiera kamienie wedªug
swego uznania, natomiast komputer ich liczb¦ losuje. Gr¦ wygrywa ten kto zabierze ostatnie kamienie ze
stosu, tak »e przeciwnik nie mo»e ju» wykona¢ ruchu. Przed rozpocz¦ciem gry komputer powinien pyta¢, kto
wykonuje pierwszy ruch, a na zako«czenie informowa¢, kto wygraª.
5 Uczony (powiedzmy pan N.) obserwuje ruch »uczka na pªaskiej powierzchni z zaznaczonym ukªadem kartezja«skim. Pan N. jest zainteresowany dªugo±ci¡ drogi jak¡ pokona »uczek podczas obserwacji. W zwi¡zku z tym
uczony w równych odst¦pach czasu odczytuje wspóªrz¦dne opisuj¡ce aktualne poªo»enie »uczka, a nast¦pnie
dopisuje je do pliku zuczek.txt w postaci dwóch liczb rzeczywistych w jednej linii i oddzielonych spacj¡.
Przykªadowa posta¢ pliku:
0 0
1 . 5 −1
2 . 3 − 0.5
Pan N. za dobre przybli»enie drogi pokonanej przez »uczka b¦dzie uwa»aª sum¦ odlegªo±ci mi¦dzy kolejnymi
poªo»eniami »uczka zapisanymi w pliku. Nale»y napisa¢ program, który wczytuje plik zuczek.txt, a nast¦pnie
oblicza i zwraca t¦ sum¦ zaokr¡glon¡ do dwóch miejsc po przecinku. Dla powy»szych danych odpowiedzi¡
b¦dzie 2.75.
Podana ni»ej funkcja korzysta z moduªu turtle aby modelowa¢ ruch »uczka. Wspóªrz¦dne s¡ zapisywane do
pliku zuczek.txt.
import random
import t u r t l e
d e f b l a d z e n i e ( kat_widzenia = 40 , k r o k i =[0 , 2 , 4 ] ) :
z a p i s = open ( ' zuczek . txt ' , 'w' )
z a p i s . w r i t e ( ' 0 0\n ' )
zuczek = t u r t l e . T u r t l e ( )
f o r i i n range ( 1 0 0 ) :
krok = random . c h o i c e ( k r o k i )
kat = kat_widzenia ∗ ( random . random ( ) − 0 . 5 )
zuczek . forward ( krok )
zuczek . r i g h t ( kat )
x , y = zuczek . xcor ( ) , zuczek . ycor ( )
z a p i s . w r i t e ( '% f %f \n ' % ( x , y ) )
6 Napisa¢ funkcj¦ basename(sciezka, sufiks, separator). Argument sciezka, to ªa«cuch, który ma by¢
±cie»k¡ dost¦pu. Pozycje w ±cie»ce mog¡ by¢ rozdzielone tak slashem ('/') jak i backslashem ('\'). separator
jest domy±lnie ustawiony na '\' ale dopuszcza te» warto±¢ '/'. Argument sufiks jest ªa«cuchem i jest
domy±lnie ustawiony na pusty ªa«cuch. Funkcja basename zwraca fragment ªa«cucha sciezka wyst¦puj¡cy
po ostatnim lub po przedostatnim separatorze w zale»no±ci od tego czy ±cie»ka ko«czy si¦ separatorem czy
nie. Je±li sufiks jest niepusty i wyst¦puje faktycznie jako suks w ±cie»ce, to te» jest pomijany. Przykªady:
basename ( ' / home/tomek/Dokumenty / ' )
' Dokumenty '
basename ( ' Dokumenty/ tex / r e d u c t i o n . tex ' )
2
' r e d u c t i o n . tex '
basename ( ' Dokumenty/ tex / r e d u c t i o n . tex ' , s u f i k s = '. tex ' )
' reduction '
3

Podobne dokumenty