Język skryptowy:
Laboratorium 2.
Kontrola przepływu. Funkcje.
Kontrola przepływu
Ze względu na specyficzną składnię języka Python, wykorzystującą wcięcia jako definicję
bloku, zostanie zaprezentowana składnia instrukcji warunkowych i instrukcji pętli przed
przejściem do omówienia zagadnienia funkcji.
Instrukcja warunkowa if
Konstrukcja if w Pythonie jest typowa, podobna jak w wielu popularnych językach (C++,
Java). Przyjmuje formę testu wyrażenia logicznego (if), po którym występuje jedna lub więcej
opcjonalnych sekcji elif ('else if'). Sekcja else jest również opcjonalna.
if test1: # if test
statements1 # Associated block
elif test2: # Optional elifs
statements2
else: # Optional else
statements3
Instrukcje te można zagnieżdżać. Pamiętaj, że sekcje elif oraz else nie są konieczne.
Minimalnym prawidłowym wyrażeniem jest na przykład:
if test: # if test
statements # Associated block
Uwaga dla programujących w C/C++
W Pythonie nie istnieje wyrażenie switch. Możesz używać konstrukcji if...elif...else z tym
samym skutkiem.
Instrukcja pętli while
Instrukcja while powtarza wykonanie bloku (uwzględniającego odpowiednie wcięcia) dopóki
warunek jest prawdziwy:
while test: # Loop test
statements # Loop body
else: # Optional else
statements # Run if didn't exit loop with break
break
Wykonanie instrukcji break powoduje przerwanie wykonywania najściślej otaczającej
ją pętli, z pominięciem występującej w niej ew. klauzuli else.
continue
Instrukcja continue może się pojawić tylko w miejscu, które składniowo jest
zagnieżdżone w pętli for lub while, jednak nie bezpośrednio w zagnieżdżonej definicji klasy,
czy funkcji lub też instrukcji try. Wykonanie instrukcji powoduje przejście do następnego
cyklu iteracji najściślej otaczającej ją pętli.
pass
Instrukcja ta nie wykonuje żadnej operacji i powinniśmy stosować ją, gdy chcemy
zostawić funkcję lub klasę pustą.
Loop else block
Wykonywane tylko i wyłącznie wtedy gdy wyjście z pętli było spowodowane
wynikiem 'fałsz' testu logicznego.
Instrukcja pętli for
Instrukcja for jest używana do iterowania po elementach sekwencji (np. napisu, krotki lub
listy) lub innego obiektu iterowalnego:
for target in object: # Assign object items to target
statements # Repeated loop body: use target
else: # Optional else part
statements # If we didn't hit a 'break'
Wykonaj przykłady:
for x in ["spam", "eggs", "ham"]:
print x
prod = 1
for item in [1, 2, 3, 4]:
prod *= item
print prod
Iteracje można wykonywać także na łańcuchach tekstowych i krotkach:
S = "Computer science"
T = ("is", "awesome")
for x in S:
print x, # Iterate over a string
for x in T:
print x, # Iterate over a tuple
Zwróć uwagę na zastosowanie przecinka po wyrażeniu print. Jaki jest tego efekt?
Funkcje
Funkcje definiuje się używając słowa def. Po nim następuje nazwa identyfikująca funkcję,
następnie para nawiasów, które mogą zawierać kilka nazw zmiennych, a na końcu
dwukropek.
def name(arg1, arg2,... argN):
statements
Parametry deklarujemy w nawiasach przy definiowaniu funkcji i oddzielamy przecinkami.
Podczas wywoływania funkcji przypisujemy im wartości w ten sam sposób. Zauważ, że to, co
wpisujemy podczas definiowania funkcji to parametry, zaś przypisywane im wartości to
argumenty.
Zmienne w definicji funkcji, nie są połączone w żaden sposób z innymi zmiennymi o tych
samych nazwach, ale użytych w innej części programu. Innymi słowy, te zmienne są lokalne
dla tej funkcji. Każda zmienna ma swój zakres, czyli blok, w którym została zadeklarowana,
zaczynając od miejsca zdefiniowania jej nazwy.
Wewnątrz funkcji można przypisać wartość do nazwy zdefiniowanej w głównym bloku
programu (czyli poza funkcjami i klasami). Można to zrobić za pomocą wyrażenia global.
def maximum(x, y):
if x > y:
return x
else:
return y
print maximum(2, 3)
Wyrażenia return używamy do wyjścia z funkcji. Możemy opcjonalnie zwrócić w tym
momencie jakąś wartość.
ZADANIA DO SAMODZIELNEGO WYKONANIA:
1. Napisz funkcję, która jako parametr przyjmuje napis tekstowy i zwraca histogram znaków
występujących w tym napisie (czyli pary znak-liczba wystąpień). Wynikiem powinna być lista
krotek, należy uwzględnić wszystkie znaki a-z:
[('a', 1), ('b', 3), ('c', 1), .., ('z', 0)]
2. Napisz funkcję, która sprawdza czy jej argumentem jest liczba pierwsza. Funkcja powinna
zwracać wartość logiczną True/False.
3. Napisz funkcję która wczytuje plik zawierający linie tekstu i zapisuje plik z tą samą nazwą
z przyrostkiem '-random'. (np. wejście: uczestnicy.txt, wyjście: uczestnicy-random.txt).
Funkcja do nowego pliku ma zapisać linie tekstu w losowej kolejności. Wykorzystaj generator
liczb losowych: https://docs.python.org/2.7/library/random.html
Bibliografia:
1. van Rossum, G. and Drake, F.: "Python 2.7.8 Reference Manual", 2014
2. Lutz, M.: "Learning Python, 5th Edition", O'Reilly Media, 2013.
Wyszukiwarka
Podobne podstrony:
Util jsjs zegarek na wwwAnimation jsLab2 4 R1 lab24Format jsMap jslivehelp jsTile jsPHP JS readmeStyle jsInstrukcja lab2lab2b jslab2 READMERule jsjs 6więcej podobnych podstron