Prezentacja python - Instytut Matematyki

advertisement
Programowanie w Pythonie
Adrian Karpowicz
Instytut Matematyki
Uniwersytet Gdański
Adrian Karpowicz
Programowanie w Pythonie
Literatura
Jonson R. Briggs, Python dla dzieci, PWN, Warszawa,
2015.
Python jest jezykiem
˛
programowania wysokiego poziomu
(jego składnia i słowa kluczowe maja˛ maksymalnie ułatwić
rozumienie kodu programu) ogólnego przeznaczenia.
Python rozwijany jest jako projekt Open Source
zarzadzany
˛
przez Python Software Foundation, która jest
organizacja˛ non-profit.
Adrian Karpowicz
Programowanie w Pythonie
Literatura
Jonson R. Briggs, Python dla dzieci, PWN, Warszawa,
2015.
Python jest jezykiem
˛
programowania wysokiego poziomu
(jego składnia i słowa kluczowe maja˛ maksymalnie ułatwić
rozumienie kodu programu) ogólnego przeznaczenia.
Python rozwijany jest jako projekt Open Source
zarzadzany
˛
przez Python Software Foundation, która jest
organizacja˛ non-profit.
Adrian Karpowicz
Programowanie w Pythonie
Literatura
Jonson R. Briggs, Python dla dzieci, PWN, Warszawa,
2015.
Python jest jezykiem
˛
programowania wysokiego poziomu
(jego składnia i słowa kluczowe maja˛ maksymalnie ułatwić
rozumienie kodu programu) ogólnego przeznaczenia.
Python rozwijany jest jako projekt Open Source
zarzadzany
˛
przez Python Software Foundation, która jest
organizacja˛ non-profit.
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
>>> – znaki gotowości
print() –
Zadanie a) Wpisz wpowłoce pythona: print("Hello World") i
wciśnij enter.
1,45+ 2
b) Oblicz 1, 55 + 33 3 · 1, 26. Uwaga: działania w pythonie
zapisujemy +, −, ∗, /, zamiast przecinka w ułamkach
dziesietnych
˛
piszemy kropk˛e.
c) Reszte˛ z dzielania a przez b zapisujemy a%b. Zapisać jedno
równanie (wykorzystujace
˛ co najwyżej +, −, ∗, /, %) dajace
˛ w
jako wynik cz˛eść całkowita˛ z dzielenia 1234 przez 19.
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Tworzenie zmiennej: nazwa_zmiennej = wartość_zmiennej
np. aby utworzyć zmienna˛ o nazwie liczba, która ma wartość
100 wpisujemy liczba = 100. Wyświetlamy wartość zmiennej
za pomoca˛ polecena print(nazwa_zmiennej) np.
print(liczba). Różne zmienne moga˛ mieć te same wartości.
Zmienne moga˛ przechowywać liczby, tekst, listy liczb i tekstów
itd. Słowo zmienna odnosi sie˛ w programowaniu do miejsca, w
którym przechowywane sa˛ informacje.
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Zadanie Ziema w ciagu
˛ roku obiega Słońce po niemal kolistej
orbicie. Odległość miedzy tymi ciałami niebieskimi wynosi
około 150 mln km. Promień Słońca jest równy około 700 tys.
km. Oblicz, ile kilometrów przebyła Ziemia w czasie Twojego
dotychczasowego życia.
Należy utworzyć zmienna˛ dni, która bedzie
˛
przechowywała
liczbe˛ dni twojego dotychczasowego życia oraz zmienna˛ droga,
która bedzie
˛
obliczała droge˛ ziemi w czasie twojego życia.
Sprawdź również jaka˛ droge˛ przebiegnie ziemia, gdy bedziesz
˛
dwa razy starszy (nie przepisuj ponownie zmiennych, zmienna˛
wiek zmień za pomoca˛ odpowiedniej równości a zmienna˛
droga skopiuj).
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Zadanie domowe Przeczytaj rozdział 1 i 2. Zapisać w
Pythonie rozwiazanie
˛
zadania z monetami z rodziału 2 na dwa
sposoby (bez użycia zmiennych i z użyciem zmiennych).
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Łańcuchem nazywa sie˛ zwykły tekst. W Pythonie tworzymy
łańcuch umieszczajac
˛ go w cudzysłowie np. ”Hello World” lub
w apostrofach np. ’Hello world’. Aby użyć w łańcuchu wiecej
˛
niż jednego wiersza używamy potrójnego apostrofu np.
”’ Teraz jestem w pierwszym wierszu
i już jestem w drugim wierszu”’
Zadanie a) Utwórz zmienna˛ o nazwie poczatek
˛
zawierajac
˛ a˛
łańcuch: 3, 2, 1, start. Wyświetl zawartość tej zmiennej
(print(poczatek)).
˛
b) Utwórz zmienna˛ zawierajac
˛ a˛ łańcuch w dwóch wierszach.
Wyświetl ta˛ zmienna˛
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Jeśli chcemy wyświetlić komunikat, używajac
˛ zawartości
zmiennej, wartości w łańcuchu można osadzić za pomoca˛
symbolu %s.
Zadanie Sprawdź jak wyglada
˛ osadzanie wartości w łańcuchu
za pomoca˛ dwóch poniższych przykładów.
>>> wynik = 100
>>> info = ’Twój wynik wynosi %s’
>>> print(info % wynik)
oraz
>>> info = ’Wynik pierwszego gracza %s. Wynik drugiego
gracza %s. ’
>>> print(info % (100, 105))
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Łańcuchy możemy mnożyć przez liczby naturalne np. jeśli
łańcuch = ’ab’ to 3*łańcuch wynosi ’ababab’.
Zadanie Utwórz zmienne z wynikiem gracza 1 oraz z gracza 2.
Zdefiniuj łańcuch spacja (zawierajacy
˛ spacje). Zdefiniuj jedna˛
zmienna˛ wyniki wyświetlajac
˛ a˛ wynik gracza 1 i gracza 2.
Wyniki gracza 1 i 2 maja˛ być wyświetlone wierszach pod soba˛ i
maja˛ sie˛ zaczynać 10 spacji od lewego marginesu.
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
W programie Python mamy możliwość tworzenia list np.
zakupy = [’mleko’, ’chleb’, ’cukier’, ’sól’]
Numery listy zaczynaja˛ sie˛ od 0. Jeśli chcemy wyświetlić np.
pierwszy element listy musimy wpisać:
print(zakupy[0])
[m:n] wyświetla elementy z podanego zakresu, ale bez
ostatniego np. aby wyświetlić element 2 i 3 należy wpisać
print(zakupy[1:3])
Zadanie Utwórz piecioelementow
˛
a˛ liste˛ zakupów. Wyświetl
cała˛ liste,
˛ tylko trzeci element listy, wszystkie elementy bez
pierwszego i ostatniego.
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Kolejne elementy do list dodajemy za pomoca˛ funkcji append:
nazwa_listy.append(element_dodawany)
np. jeśli chce˛ dodać do listy zakupów masło to wpisuje:
˛
zakupy.append(’masło’)
Do usuwania elementów z listy używa sie˛ polecena del np. jeśli
chce˛ usunać
˛ drugi element z mojej listy:
del zakupy[1]
Zadanie Dodaj dwa produkty do swojej listy oraz usuń
pierwszy i trzeci element z listy.
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Zadanie Utwórz lista1=[1,3,5], lista2=[2,4,6],
lista3 = lista1 + lista2 i lista4 = 3*lista1. Wyświetl te listy.
Krotka (ang. tuple) przypomina liste,
˛ która używa nawiasów
okragłych
˛
np.
liczbyFib=(1,1,2,3,5)
Zasadnicza różnica pomiedzy
˛
krotka˛ a lista˛ jest taka, że krotki
po jej zdefiniowaniu nie można modyfikować.
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Każdy element na mapie (inaczej słownik) ma klucz i wartość.
Definujemy mape˛ w nastepuj
˛ acy
˛ sposób:
mapa ={ klucz1 : wartość1,
klucz2 : wartość2,
... }
Na przykład:
Wyniki ={ ’Gracz 1’ : 100,
’Gracz 2’ : 105 }
Możemy wyświetlać wartość przy pomocy klucza np.
print(Wyniki[’Gracz 2’])
Dodawać nowy element do mapy np.
Wyniki[’Gracz 3’] = 95
Usuwać element z mapy np.
del Wyniki[’Gracz 2’]
Adrian Karpowicz
Programowanie w Pythonie
Python-podstawy
Zadanie Utwórz 3 zmienne z wynikami: wynik1, wynik2 i
wynik3. Utwórz mape˛ Wyniki, która jako klucze bedzie
˛
miała
nazwy Gracz 1, ... a jako wartości ich wyniki.
a) Wyświetl cała˛ mape.
˛
b) Wyświetl wynik Gracza 2.
c) Utwórz nowa˛ zmienna˛ wynik4 i dodaj Gracza 4 do mapy
Wyniki. Wyświetl mape.
˛
d) Usuń Gracza 2 z mapy Wyniki. Wyświetl mape.
˛
Zadanie domowe Przeczytać rozdział 3. Rozwiazać
˛
zadanie
1, 2 i 3 ze strony 41 i 42.
Adrian Karpowicz
Programowanie w Pythonie
Python-grafika żółwia
Moduły w Pythonie to sposób na takie zorganizowanie
przydatnego kodu, aby mógł być użyty przez inny program.
Moduł turtle to sposób na programowanie grafiki wektorowej.
Do importotowania modułów służy komenda import.
>>> import turtle
Jeśli chcemy skorzystać z jakiś funkcji modułu to najpierw
musimy ten moduł zaimportować.
Po zaimportowaniu modułu turtle tworzymy płótno na którym
bedziemy
˛
rysować za pomoca˛ polecenia:
>>> t = turtle.Pen()
Pen jest funkcja˛ z modułu turtle.
Adrian Karpowicz
Programowanie w Pythonie
Python-grafika żółwia
Podstawowe polecena:
t.forward(n) – rysuje odcinek o długości n pikseli,
t.backward(n) – cofa żółwia o n pikseli,
t.left(k) – skreca
˛ w lewo o kat
˛ k◦ ,
t.right(k) – skreca
˛ w prawo o kat
˛ k◦ ,
t.reset() – czyści płótno, a żółw wraca na poczatkow
˛
a˛ pozycje,
t.clear() – czyści płótno, a żółw pozostaje na obecnej pozycji.
t.up() – odrywa pióro od płótna i przestaje rysować,
t.down() – opuszcza pióro i zaczyna rysować,
Wiecej na temat modułów oraz modułu turtle bedzie
˛
omawiane
w dalszej cz˛eści zajeć.
˛
Adrian Karpowicz
Programowanie w Pythonie
Python-grafika żółwia
Zadanie Narysuj równoramienny trójkat
˛ prostokatny
˛
a
wewnatrz tego trójkata romb, który nie jest kwadratem
(najpierw zaimportuj moduł turtle i utwórz płótno).
Zadanie domowe Przeczytać rozdział 4. Rozwiazać
˛
zadania
ze strony 51.
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
Instrukcja if składa sie˛ ze słowa kluczowego if, po którym
podajemy warunek oraz dwukropek (:). Wiersze po dwukropku
musza˛ znajdować sie˛ w bloku, jeśli warunek jest spełniony to
instrukcje z bloku zostana˛ wykonane.
if warunek:
blok instrukcji
Zadanie Napisać program w którym definiuje sie˛ zmienna˛
Liczba_zyc = 3. Nastepnie
˛
jeśli zmienna jest wieksza
˛
od 0 to
sie˛ od niej odejmuje 1 i wyświetla sie˛ jej wartość.
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
W Pythone odstep
˛ od lewego marginesu jest bardzo ważny.
Kod znajdujacy
˛ sie˛ w tej samej odległości od lewego marginesu
tworzy blok i za każdym razem, rozpoczynamy wiersz z
wieksz
˛
a˛ liczba˛ spacji niż poprzedni, tworzymy nowy blok,
bed
˛ acy
˛ cz˛eścia˛ poprzednego bloku.
Symbole używane w instrukcjach
== – równa sie˛
!= – różny od
>= – wiekszy
˛
lub równy
<= – mniejszy lub równy
> – wiekszy
˛
< – mniejszy
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
Instrukcja if–then–else
if warunek:
blok instrukcji, gdy warunek prawdziwy
else:
blok instrukcji, gdy warunek fałszywy
Zadanie Napisać program w którym definiuje sie˛ zmienna˛
Liczba_zyc = 3. Nastepnie
˛
jeśli zmienna jest wieksza
˛
od 0 to
sie˛ od niej odejmuje 1 i wyświetla sie˛ jej wartość w przeciwnym
razie wyświetla sie˛ komunikat Koniec gry. Skopiuj i zastosuj
instrukcje kilka razy.
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
Instrukcja if i elif
if warunek1:
blok instrukcji, gdy warunek1 prawdziwy
elif warunek2:
blok instrukcji, gdy warunek2 prawdziwy
elif warunek3:
blok instrukcji, gdy warunek3 prawdziwy
...
else:
blok instrukcji, gdy żaden z powyższych warunków nie jest
spełniony
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
Zadanie Zdefiniuj zmienna˛ kolor zawierajac
˛ a˛ łańcuch
czerwony. Napisz instrukcje, która jeśli zmienna kolor zawiera
czerwony to zmienia kolor na zielony i go wyświetla, jeśli kolor
niebieski to zmienia na zielony i wyświetla, w przeciwnym razie
zmienia kolor na niebieski i wyświetla. Wykonaj kilka razy te˛
instrukcje.
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
Warunki można łaczyć
˛
za pomoca˛ słówkluczowych and (i) oraz
or (lub).
Zadanie Napisać program w którym definiuje sie˛ zmienna˛
monety oraz instrukcje, która wyświetla komunikat całkiem
nieźle, jeśli 100 ≤monety≤ 200. Uruchom program dla kilku
wartości monety.
Zadanie Napisać program w który definiuje sie˛ zmienna˛ x oraz
instrukcje, która bedzie
˛
wyświetlała komunikat x nie jest cyfra,
˛
jeśli zmienna x nie bedzie
˛
cyfra.
˛
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
Zmiennej można przypisać wartość pusta˛ None. None nie jest
tożsama z wartościa˛ 0, ponieważ oznacza brak wartości, a nie
liczbe˛ o wartości 0. Stosujemy ja˛ gdy chcemy zresetować jakaś
˛
zmienna˛ lub zdefiniować zmienna˛ bez ustalana jej wartości
(wiemy, że zmienna bedzie
˛
potrzebna później w programie, ale
chcemy już na poczatku
˛
zdefiniować wszystkie zmienne).
Jeśli x jest łańcuchem zawierajacym
˛
liczbe˛ całkowita˛ np.
x=’100’. To aby przekształcić łańcuch na liczbe˛ całkowita˛
używamy funkcji int np int(x). Jeśli x jest łańcuchem
zawierajacym
˛
liczbe˛ wymierna˛ to aby dokonać konwersji
używamy funkcji float. Jeśli chcemy liczbe˛ na łańcuch to
używamy funkcji str.
Adrian Karpowicz
Programowanie w Pythonie
Python-instrukcje
Zadanie Zdefiniuj zmienna˛ wiek jako łańcuch zawierajacy
˛ twój
wiek (zapisany cyframi). Wymyśl instrukcje, która w warunku
bedzie
˛
zawierała twój wiek, ale użyty jako liczbe.
˛
Zadanie domowe Przeczytać rozdział 5 i wykonać zadania ze
strony 65.
Adrian Karpowicz
Programowanie w Pythonie
Python
Zadanie domowe Przeczytać rozdział 6, 7 i 8 i wykonać
zadania znajdujace
˛ sie˛ na końcu rozdziałów.
Adrian Karpowicz
Programowanie w Pythonie
Python-wprowadzanie danych
imie = raw_input("Podaj swoje imie˛ ")
print("Witaj ", imie, ", widz˛e, że nieźle Ci idzie!")
Funkcja raw_input zwraca łańcuch.
Funkcja input zwraca liczbe.
˛ Przykład programu obliczajacego
˛
sume˛ dwóch liczb:
x=input("Podaj pierwsza˛ liczbe")
˛
y=input("Podaj druga˛ liczbe")
˛
print(”Suma liczb", x, "i", y, "wynosi: ",x+y)
Zadanie Napisać program, który wczyta od użytkownika
pewien napis, a nastepnie
˛
wyświetli 30 kopii tego napisu, każda
w osobnej linii.
Zadanie Napisać program, który po wprowadzeniu długości
podstawy i wysokości trójkata,
˛ obliczy jego pole.
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
for (”dla każdego x z przedziału...”)
lista=[’a’, ’b’, ’c’]
for i in lista:
print(i)
Działanie instrukcji: dla każdej i, przyjmujacego
˛
kolejne
wartości z listy lista, wykonaj instrukcje˛ print.
Do tworzenia sekwencji, których elementy należa˛ do ciagu
˛
arytmetycznego, używamy funkcji range:
range(n) tworzy [0, 1, 2, ..., n-1]
range(m,n) tworzy [m, m+1, ..., n-1]
range(m,n,k) – tworzy liste˛ o kroku k np. range(1,10,2) tworzy
[1, 3, 5, 7, 9] . k może być też ujemne wtedy m>n np.
range(3,0,-1) tworzy [3, 2, 1].
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Zadanie Napisać program, który wypisze:
a) kwadraty wszystkich liczb całkowitych od 0 do 20,
b) sześciany wszystkich liczb całkowitych od 10 dp 20,
c) odwrotności wszystkich parzystych liczb całkowitych od 16
do 6 (w podanej kolejności).
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Celem petli
˛ cz˛esto jest wyświetlenie kolumny liczb. Aby liczby
wyświetlane były w należyty sposób i w pożadanym
˛
miejscu
używamy operatora formatowania % w połaczeniu
˛
z ciagiem
˛
formatujacym.
˛
Ciag
˛ formatujacy
˛ składa sie˛ ze znaku %, po
którym nastepuj
˛
a˛ opcje formatowania, ilość znaków
przeznaczonych do wyświetlenia oraz typ danej do
wyświetlenia (przy czym tylko trzeci element – tj. typ danych
jest wymagany). Typ danej sygnalizujemy pojedyncza˛ litera.
˛ I
tak:
s – oznacza napis
i – oznacza liczbe˛ całkowita˛ (w systemie dziesietnym)
˛
f – oznacza liczbe˛ zmiennoprzecinkowa˛ w postaci ułamka
dziesietnego
˛
e – oznacza liczbe˛ zmiennoprzecinkowa˛ w postaci wykładniczej
Na przykład print("%e" % 123.4)
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Aby przekonać sie˛ na czym polega zaleta formatowania,
wyświetlmy tabele˛ kwadratów i sześcianów wybranych liczb:
for x in range(5,100,10):
print(x,x**2,x**3)
Jak widać kolumny liczb wyświetlane sa˛ nierówno. Spróbujmy
ustalić w formacie długość pola do wyświetlenia każdej liczby
na 4, jej kwadratu na 6, a sześcianu na 8:
for x in range(5,100,10):
print("%4i%6i%8i" % (x,x**2,x**3))
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Formatujac
˛ liczby zmiennopozycyjne możemy także ustalić nie
tylko całkowita˛ długość, ale także liczbe˛ wyświetlanych miejsc
po przecinku (np. na 3):
for x in range(5,100,10):
print(”Pierwiastkiem liczby %2i jest %5.3f” % (x,x**0.5))
Zadanie Napisać program, który bedzie
˛
wypisywał cyfre
jednostek, dziesiatek
˛
i setek liczby z zakresu od 0 do 999.
Liczbe˛ ma wprowadzać użytkownik programu. Wyniki i napisy
należy rozmieścić w odpowiednich kolumnach.
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Zadanie Napisać program, który po wprowadzeniu przez
użytkownika dwóch liczb całkowitych z zakresu od 0 do 100
bedzie
˛
wyświetlał ich średnia˛ kwadratowa,
˛ arytmetyczna,
˛
geometryczna˛ i harmoniczna.
˛ Każda średnia ma być
wyświetlona w osobnym wierszu wraz z jej nazwa˛ oraz z jakich
liczb była liczona. Dokładność wyników należy ustawić na dwa
miejsca po przecinku. Wyniki i napisy należy rozmieścić w
odpowiednich kolumnach.
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Funkcja len podaje długość listy, łańcucha. Możemy jej użyć w
petli,
˛ gdy nie znami długości listy.
Zadanie Określ jaki jest wynik działania programu:
a = [’Ala’, ’Ela’, ’Adam’, ’Janek’]
for i in range(len(a)):
print(i, a[i])
Uwaga: Zwróć uwage˛ na użycie funkcji len.
Zadanie Zmodyfikuj powyższy program w ten sposób, aby
wyświetlał imiona z listy a oraz z ilu liter sie˛ składaja.
˛
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
P˛etle moga˛ zawierać inne petle
˛ – mówimy wtedy o nich, że sa˛
zagnieżdżone.
Zadanie Wyjaśnić jak działa nastepuj
˛ acy
˛ program:
l1=[’a’, ’b’, ’c’]
l2=[’d’, ’e’]
for x in l1:
for y in l2:
print(x, y)
print(y, x)
Uwaga: Zwróć uwage˛ w jaki sposób tworzymi bloki w petli
˛
zagnieżdżonej.
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
P˛etla while (”dopóki”)
a=1
while a<10:
a=a+1
print(a)
else:
print("koniec")
Else wykona sie˛ niezależnie od tego czy while było wykonane
choć raz.
Zadanie Napisać program, którego wynik działania bedzie
˛
identyczny jak powyższego programu, ale kod programu nie
bedzie
˛
zawierał polecenia else.
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Zmiania przebiegu petli
˛
Polecenie break przydaje sie˛ kiedy chcemy natychmiast
przerwać wykonywanie petli.
˛
Zadanie Ustalić jaki jest wynik działania programu:
for i in range(100):
if i==50:
break
print(i)
Uwaga Należy zwrócić uwage˛ na sposób tworzenia bloków.
Adrian Karpowicz
Programowanie w Pythonie
Python-petle
˛
Polecenie continue działa analogicznie jak break, tylko że
petla
˛ nie jest przerywania, a jedynie pomijany jest kod po
”continue” i petla
˛ dalej kontynuuje działanie.
Zadanie Ustalić jaki jest wynik działania programu:
x=[2,-1,3,-2,9]
for i in x:
if i<0:
continue
print(i**0.5)
Zadanie a)Używajac
˛ m.in. polecen: range, continue i % napisz
program wyznaczajacy
˛ kwadraty wszystkich liczb naturalnych
od 0 do 100 niepodzielnych przez 6.
b) Używajac
˛ m.in. polecen: range, continue, % oraz not napisz
program wyznaczajacy
˛ kwadraty wszystkich liczb naturalnych
od 1 do 1000 podzielnych przez 25.
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje
Definicja funkcji musi zawierać:
1) nagłówek funkcji obejmujacy
˛
a) nazwe˛ funkcji, która pozwoli zidentyfikować funkcje˛ w
pozostałej cz˛eści programu
b) liste˛ argumentów, która funkcja otrzymuje na poczatku
˛
działania programu
2) ciało funkcji, zawierajace
˛ instrukcje, które zostana˛ wykonane
w momencie wywołania (użycia) funkcji
a) jeżeli funkcja ma zwracać jakiś rezultat, musi zawierać
odpowiednia˛ instrukcje˛
W jezyku
˛
Python składnia definicji funkcji jest nastepuj
˛ aca:
˛
def nazwa_funkcji ( lista_parametrów):
instrukcje_do_wykonania
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje
Zadanie Zdefiniuj funkcje:
˛
def pierw(n):
return n**0.5
√
oraz za jej pomoca˛ oblicz 2.
Zdefiniowana˛ uprzednio funkcje˛ możemy w dowolnym miejscu
usunać,
˛ posługujac
˛ sie˛ instrukcja˛ del np. del pierw
Zadanie Co oblicza poniższa funkcja:
def pierw(n):
if n>=0: return n**0.5
else: return (-n)**0.5*1j
Przetestuj jej działanie. Jakie liczby powinno sie˛ użyć przy
testowaniu powyższej funkcji.
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje
Funkcja może przyjmować wiecej
˛
niż jeden argument i zwracać
wiecej
˛
niż jeden rezultat.
Zadanie Napisać funkcje,
˛ która bedzie
˛
liczyła sume˛
odwrotności dwóch liczb. W przypadku, gdy co najmniej jedna
z liczb jest zerem ma sie˛ pojawiać stosowny komunikat.
Zadanie Przetestować działenie funkcji:
def rs(a,b):
return a+b,a-b
Uwaga: Jak widać, rezultat wywołania funkcji, która zwraca
wiecej
˛
niż jedna˛ wartość, jest krotka.
˛
Możemy to wykorzystać w iteracji:
for n in rs(3,4): print n
Lub skonwertować wynik na liste:
˛
list(rs(2,7))
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje
Jeżeli wartości, które maja˛ zostać przekazane jako argumenty
funkcji zawarte sa˛ w sekwencji, np.:
l=[2,3]
nie da sie˛ bezpośrednio przekazać takiej sekwencji jako listy
argumentów (gdyż traktowana jest ona jako pojedynczy
argument):
Sprawdź rezultat polecenia print(rs(l)).
Aby dało sie˛ ”rozpakować” elementy sekwencji używamy
gwiazdki.
Sprawdź rezultat polecenia print(rs(*l)).
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje
Jeżeli w momencie definiowania funkcji nie jesteśmy w stanie
określić liczby argumentów, które bed
˛ a˛ do niej przekazywane,
poprzedzamy nazwe˛ parametru formalnego oznaczajacego
˛
wszystkie pozostałe argumenty funkcji gwiazdka:
˛
def suma(*arg):
s=0
for x in arg:
s=s+x
return s
Zadanie a) Przetestuj działanie powyższej funkcji.
b) Sprawdź działanie polecenia print(suma(range(10))).
Dlaczego nie jest ono poprawne i co zrobić, aby zadziałało?
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje
Funkcje rekurencyjne to funkcje, które odwołuja˛ sie˛ do samych
siebie. Dobrym przykładem funkcji rekurencyjnej jest silnia:
def silnia(n):
if n>1:
return n*silnia(n-1)
else:
return 1
Zadanie Przetestuj działanie funkcji silnia dla kilku
argumentów.
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje
Moduły służa˛ do organizowania funkcji, zmiennych i innych
elementów kodu w wieksze
˛
programy. Niektóre moduły sa˛
wbudowane w Pythona, inne trzeba pobrać.
Jeśli chcemy użyć jakiegość modułu musimy go zaimportować
za pomoca˛ polecenia:
import nazwa_modułu
Aby użyć jakiejś funkcji z modułu robimy to za pomoca˛
polecenia:
nazwa_modułu.nazwa_obiektu.nazwa_funkcji
Adrian Karpowicz
Programowanie w Pythonie
Python-moduły
Na przykład w module sys (zawierajacym
˛
programy
narz˛edziowe służace
˛ do komunikacji z systemem Pythona)
znajduje sie˛ obiekt stdin (standardowe wejście), który
udostepnia
˛
funkcje˛ readline (służac
˛ a˛ do wpisywania tekstu z
klawiatury aż do wciśniecia
˛
ENTER). Przykład użycia tej funkcji:
import sys
print(sys.stdin.readline())
Adrian Karpowicz
Programowanie w Pythonie
Python-moduły
Przykład programu obliczajacego
˛
pole kwadratu z
wykorzystaniem funkcji readline. Zwróć uwage˛ w jaki sposób
za pomoca˛ int zapisano długość kwadratu jako liczbe.
˛
import sys
print("Podaj długosć boku kwadratu i wciśnij enter")
a=int(sys.stdin.readline())
print("Pole kwadratu o boku", a, "wynosi", a**2)
Zadanie Przetestować działenie tego programu. Znaleźć
przynajmniej dwa różne przypadki w których program nie działa
poprawnie. Zmodyfikować program, aby działał również
poprawnie w tych znalezionych przypadkach.
Adrian Karpowicz
Programowanie w Pythonie
Python-NWD
Zadanie W oparciu o poniższy schemat blokowy napisz
program wyznaczajacy
˛ NWD dwóch liczb. Do wczytania liczb
należy użyć modułu sys.
Adrian Karpowicz
Programowanie w Pythonie
Python-NWD
Zadanie W oparciu o poprzednie zadanie napisz program
wyznaczajacy
˛ NWD oraz NWW dwóch liczb a i b. W programie
cz˛eść obliczajaca
˛ NWD ma być zdefiniowana jako funkcja.
Wynik ma być podany w postaci:
NWD liczb a i b wynosi:
NWW liczb a i b wynosi:
gdzie w miejescu a i b bed
˛ a˛ sie˛ pojawiać wprowadzone liczby.
Adrian Karpowicz
Programowanie w Pythonie
Python-wczytywanie listy
Zanim przejdziemy do algorytmu sortujacego
˛
liste˛ musimy
zajać
˛ sie˛ wczytywaniem listy oraz znajdowaniem jej elementu
najmniejszego i najwiekszego.
˛
Zadanie Uzupełnij poniższy program w ten sposób, aby
wczytywał liste˛ składajac
˛ a˛ sie˛ z liczb zmiennoprzecinkowych za
pomoca˛ funkcji readline. A nastepnie
˛
wyświetlał cała˛ liste,
˛ jej
najmniejszy i najwiekszy
˛
element. Odpowiednie bloki w kodzie
programu (odległość od lewego marginesu) należy ustawić
samodzielnie. Do wyznaczenia elementu najmniejszego i
najwiekszego
˛
należy użyć funkcji min i max.
Zwróć uwage,
˛ że na poczatku
˛
trzeba zdefiniować pusta˛ tablice.
W jaki sposób to zostało zrobione?
Adrian Karpowicz
Programowanie w Pythonie
Python-wczytywanie listy
import ......
a=[]
print("Ile elementów bedzie
˛
miała lista?")
n=int(......)
def czytaj():
for i in ......
print("Podaj",.......,”element listy")
.......(float(sys.stdin.readline()))
return a
print(”Lista: ", ........)
print(”Najmniejszy element listy: ", min(a))
print(..........)
Adrian Karpowicz
Programowanie w Pythonie
Python-wczytywanie listy
Zadanie a) Dodaj do poprzedniego programu funkcje zamiana,
która bedzie
˛
zamienała dowolne dwa elementy listy.
def zamiana(a,k,l):
t=......
.......
.......
return a
b) Za pomoca˛ dodanej funkcji wyświetl liste˛ w której pierwszy
element bedzie
˛
zamieniony z ostatnim.
Adrian Karpowicz
Programowanie w Pythonie
Python-algorytmy sortowania
Sortowanie przez wybór ciagu
˛ n liczb polega na wyszukanu w
ciagu
˛ liczby najwiekszej
˛
(lub najmniejszej - w zależności od
przyjetego
˛
porzadku),
˛
ustawieniu jej na poczatku
˛
ciagu,
˛
a
nastepnie
˛
powtarzaniu tych czynności z pominieciem
˛
już
uporzadkowanych
˛
liczb.
Adrian Karpowicz
Programowanie w Pythonie
Python-algorytmy sortowania
Adrian Karpowicz
Programowanie w Pythonie
Python-algorytmy sortowania
Zadanie: Uporzadkowanie
˛
rosnaco
˛ n liczb, stosujac
˛ algorytm
sortowania przez wybór.
Dane: Tablica liczb a[0,...,n-1].
Wynik: Tablica liczb a[0,...,n-1], w której liczby ułożone sa˛ w
porzadku
˛
rosnacym.
˛
Podać algorytm rozwiazania
˛
powyższego zadania oraz na
podstawie kodu z nastepniego
˛
slajdu wykonać jego
implementacje w programie Python. Przetestować działanie
programu.
Adrian Karpowicz
Programowanie w Pythonie
Python-algorytmy sortowania
def sortow(a,n):
for i in range(n-1):
minn=i
................
if a[j]<a[minn]:
................
zamiana(a,minn,i)
return a
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje losujace
˛
Liczby losowe możemy generować za pomoca˛ modułu
random. Funkcja randint(m,n) służy do losowania liczb
całkowitych z zakresu od m do n np. random.randint(10,20).
Funkcja choice służy do losowania elementu z listy. Natomiast
shuffle do tasowania elementów listy.
Zadanie a) Uzupełnij poniższy program, aby służył on do
zgadywania wylosowanej liczby naturalnej z zakresu od 1 do
128.
b) Opisz najlepsza˛ strategie˛ zgadywania liczb w danym
programie. Ile maksymalnie liczb trzeba podać, aby napewno
znaleźć szukana˛ liczbe.
˛
c) Przetestować opracowania˛ strategie˛ z losowym
zgadywaniem liczb (uwzgledniaj
˛
acym
˛
jedynie podpowiedź).
Adrian Karpowicz
Programowanie w Pythonie
Python-funkcje losujace
˛
import random
liczba=random.randint(1,128)
print(”Zgadnij liczbe˛ naturalna˛ z zakresu od 1 do 128”)
while True:
strzał=input()
i=int(strzał)
if ......
print(”Zgadłe")
.........
...........
print(”Szukana liczba jest wieksza”)
˛
............
print(”Szukana liczba jest mniejsza")
Adrian Karpowicz
Programowanie w Pythonie
Python-modelowanie
Zadanie Używajac
˛ funkcji randint napisać program, który
bedzie
˛
symulował rzut moneta.
˛ Liczbe˛ rzutów ma podawać
użytkownik programu.
Powyższe zadanie jest z zakresu modelowania
komputerowego. W kolejnym zadaniu trzeba bedzie
˛
opracować
troche˛ bardziej skomplikowany model.
Adrian Karpowicz
Programowanie w Pythonie
Python-modelowanie
Zadanie a) Załóżmy, że nagroda jest ukryta za jedna˛ z
czterech bramek. Z tym, że szansa na to, że nagroda jest za
bramka˛ 1 wynosi 1/8, bramka˛ 2 - 1/8, bramka˛ 3 - 1/4 oraz
bramka˛ 4 - 1/2. Napisać program, który bedzie
˛
losował, w
której bramce jest nagroda (z uwzglednieniem
˛
podanych
prawdopodobieństw). Nastepnie
˛
bedziemy
˛
zgadywali w której
bramce jest nagroda. Program ma informować, czy zgadliśmy,
czy nie (jeśli nie to ma podawać, czy nagroda jest w bramce o
numerze wiekszym,
˛
czy mniejszym) i wtedy kontynuujemy
zgadywanie.
b) Opracować najkorzystniejsza˛ strategie˛ wyboru bramiki.
c) Przetestować swoja˛ strategie˛ oraz zgadywanie bramki w
sposób losowy. Porównać wyniki.
Adrian Karpowicz
Programowanie w Pythonie
Python-praca domowa
Przeczytać rozdziały 9 i 10 oraz wykonać zadania umieszczone
na koncu tych rozdziałów.
Adrian Karpowicz
Programowanie w Pythonie
Download