Lista wyjaśnień
Wykonywanie obliczeń
Podtematy
Wykonywanie obliczeń
Program w Pythonie składa się z wielu instrukcji, które łączymy w odpowiedni sposób.
- Sekwencja poleceń oznacza wykonywanie instrukcji jedno po drugim, w ustalonej kolejności. Należy zwracać uwagę zarówno na ich dobór, jak i na właściwe uporządkowanie.
- Instrukcja warunkowa umożliwia wykonanie określonych poleceń tylko wtedy, gdy spełniony jest podany warunek.
- Pętle for i while służą do wielokrotnego wykonywania instrukcji. Każda z nich ma nieco inne zastosowanie, dlatego warto dokładnie przećwiczyć obie konstrukcje.
- Struktury sterujące można zagnieżdżać, na przykład umieszczając instrukcję warunkową wewnątrz pętli. Pętlom zagnieżdżonym poświęciliśmy osobny temat, ponieważ początkujący programiści często napotykają w tym obszarze trudności.
- Programy dzielimy na funkcje, tóre pozwalają na wielokrotne wykorzystywanie tych samych fragmentów kodu.
Osobom rozpoczynającym naukę języka Python pomocne może być wykonanie ćwiczeń z podstaw myślenia algorytmicznego, umożliwiających praktyczne przećwiczenie użycia pętli i instrukcji warunkowych w środowisku programowania graficznego.
Do góryInstrukcja warunkowa (if) w Pythonie
Warunkowe wykonanie polecenia zapisujemy za pomocą if. Warunek może być dowolnym wyrażeniem logicznym. W ramach warunku możemy wykonać również więcej niż jedno polecenie. Blok poleceń oznaczamy wcięciem:
if answer != 42: # polecenia zostaną wykonane tylko, jeśli warunek jest spełniony:
print("Bad answer") # wyświetlamy komunikat
answer = 42 # dodatkowo zmieniamy zmiennąGałąź else
Możemy również określić, co ma się stać, gdy warunek nie jest spełniony. W tym celu używamy polecenia else, po którym następuje wcięty blok poleceń:
if x < 10:
print("small") # wykona się, jeśli warunek jest prawdziwy
else:
print("big") # wykona się, jeśli warunek jest fałszywyPoszczególne warianty obliczeń nazywamy gałęziami, a całą instrukcję warunkową możemy również określać jako rozgałęzienie.
Wielokrotne rozgałęzienie
Jeśli chcemy sprawdzić kilka możliwości, możemy użyć konstrukcji if / elif / else. W niektórych językach programowania do wielokrotnego rozgałęzienia używa się polecenia switch, ale w Pythonie wystarczy elif. Na przykład:
if age < 6:
print("przedszkolak")
elif age < 18: # sprawdzane, jeśli poprzedni warunek nie był prawdziwy
print("uczeń")
elif age < 65: # sprawdzane, jeśli żaden poprzedni warunek nie jest był prawdziwy
print("dorosły")
else: # wykona się, jeśli żaden poprzedni warunek nie jest prawdziwy
print("emeryt")Z if/elif wykona się maksymalnie jedna – pierwsza, dla której warunek jest prawdziwy. W naszym przykładzie, jeśli w zmiennej age znajduje się wartość 15, zostanie wyświetlone tylko „uczeń”. Warunek age < 65 również jest prawdziwy, ale Python już go nie sprawdza.
Rozgałęzienia zagnieżdżone
Czasem polecenia warunkowe mogą zawierać kolejne rozgałęzienia. Mówimy wówczas o zagnieżdżaniu. W przypadku kolejnych gałęzi musimy zwiększyć wcięcie. Możemy napisać na przykład:
if choice == "tea":
if money >= 10:
print("ok")
else:
print("refuse")
else:
print("not available")
if n % 2 == 1:
if x > 13:
print("Win!")W niektórych przypadkach zamiast zagnieżdżonego kodu łatwiej i przejrzyściej jest użyć prostego polecenia warunkowego z warunkiem wykorzystującym operatory logiczne. Na przykład ostatni przykład możemy uprościć w ten sposób:
if n % 2 == 1 and x > 13:
print("Win!")Pętla for w Pythonie
W programowaniu wykorzystujemy pętle do powtarzania grupy poleceń. Powtórzenie często nazywamy iteracją.
Pętli for używamy w sytuacji, gdy z góry znamy liczbę powtórzeń. W pozostałych przypadkach używamy pętli while.
Prosta pętla for
Podstawowe zastosowanie pętli for polega na zwykłym powtarzaniu zestawu poleceń. Za pomocą for i in range(10) powtórzymy zestaw poleceń 10 razy. Polecenia, które mają być powtarzane, muszą być wcięte. W poniższy sposób wypiszemy dziesięć razy Hello:
for i in range(10):
print("Hello")Zmienna sterująca
W trakcie działania pętli zmienia się wartość zmiennej sterującej (w powyższym przykładzie jest to i). W każdym powtórzeniu pętli możemy więc wykonać coś nieco innego, w zależności od aktualnej wartości tej zmiennej. To, jakie wartości przyjmuje zmienna sterująca, określa część znajdująca się po słowie in. Jeśli użyjemy podstawowego range, zmienna sterująca będzie stopniowo zwiększana o jeden. Na przykład poniższa pętla wypisze liczby od 0 do 9:
for i in range(10):
print(i)W ramach pętli możemy korzystać z wielu zmiennych, ale tylko wartość zmiennej sterującej zmienia się automatycznie. Rozważmy przykład:
y = 1
z = 2
for x in range(10):
y = x + y + z
print(x, y, z)Zmienną sterującą pętli jest x, którego wartość będzie się stopniowo zmieniać (od 0 do 9). Wartość zmiennej y również będzie się zmieniać, ponieważ wewnątrz pętli znajduje się instrukcja przypisania do y. Natomiast wartość zmiennej z pozostanie we wszystkich iteracjach taka sama, ponieważ z nie jest zmienną sterującą ani nie przypisujemy do niej niczego w pętli.
Zastosowanie range
W podstawowych zastosowaniach łączymy pętlę for z funkcją range, która zwraca przedział liczb, a zmienna sterująca przyjmuje kolejne wartości z tego przedziału.
Uwaga: w informatyce często liczymy od zera (a nie od jedynki jak zazwyczaj). Dlatego tutaj range(n) zwraca wartości od 0 do n-1.
Jeśli funkcji range podamy dwa parametry, tzn. wywołamy range(a, b), to otrzymamy przedział liczb od a do b-1. Możemy podać także trzeci parametr określający długość kroku. Na przykład:
for x in range(5, 13): print(x, end=" ") # 5 6 7 8 9 10 11 12
for x in range(5, 16, 3): print(x, end=" ") # 5 8 11 14
for x in range(8, 0, -1): print(x, end=" ") # 8 7 6 5 4 3 2 1Pętli for można używać nie tylko w połączeniu z range, lecz także z innymi typami danych – na przykład z listami:
for x in [3, 7, 10]:
print(x)Przykłady użycia pętli for
Parzyste i nieparzyste
Wypisanie informacji o parzystości i nieparzystości pierwszych n liczb:
n = 20
for i in range(1, n+1):
if i % 2 == 0:
print(i, "jest parzysta")
else:
print(i, "jest nieparzysta")Suma ciągu liczb
Obliczenie sumy liczb od 1 do n:
n = 10
s = 0
for i in range(1, n+1):
s = s + i
print("Suma od 1 do", n, "wynosi", s)Potęgi liczby dwa
Wypisanie informacji o pierwszych n potęgach liczby dwa:
n = 10
for x in range(1, n+1):
print("Dwa do potęgi", x, "wynosi", 2**x)Funkcje w Pythonie
Funkcja jest nazwanym blokiem poleceń. Funkcjom możemy przekazywać argumenty.
Definicja funkcji
Python oferuje całą gamę funkcji wbudowanych, czyli takich, które zostały już przygotowane przez twórców języka. Przykładem jest funkcja len, która oblicza długość łańcucha znaków.
Własną funkcję definiujemy za pomocą słowa kluczowego def:
def say_hello(name):
print("Hello", name)W ten sposób zdefiniowaliśmy funkcję say_hello, która ma parametr name. Funkcja może mieć również więcej parametrów.
Wywoływanie funkcji
Samo zdefiniowanie funkcji nie powoduje jej wykonania. Aby funkcja została wykonana, musimy ją wywołać. Robimy to, zapisując nazwę funkcji i przekazując w nawiasach konkretny argument:
say_hello("Alice") # wypisze Hello Alice
say_hello("Bob") # wypisze Hello BobNiektóre funkcje nie mają parametrów. Przy ich wywołaniu nadal musimy podać nawiasy, np. say_goodbye().
Wartość zwrotna
Funkcja może zwracać wartość zwrotną za pomocą słowa kluczowego return. Poniższa funkcja oblicza i zwraca silnię.
def factorial(n):
f = 1
for i in range(1, n+1):
f = f*i
return fTaka funkcja sama w sobie nic nie wykonuje, jedynie zwraca wartość, z którą możemy dalej pracować.
factorial(5) # obliczy wartość silni z 5, ale potem ta
# wartość nie zostanie w żaden sposób użyta
print(factorial(4)) # tym razem wypiszemy wynik obliczeń
x = factorial(6) # wynik obliczeń zostanie zapisany do zmiennej
print(x) # a następnie możemy np. wypisać wartość zmiennejInstrukcja return kończy wykonywanie funkcji. Zatem przy wywołaniu poniższej funkcji zostanie wypisane tylko foo:
def test():
print("foo")
return 0
print("bar")Różnice między return a print
Częstym źródłem problemów u początkujących programistów jest prawidłowe użycie print i return w funkcjach.
Użycie print powoduje natychmiastowe wypisanie wartości, jednak nie można z tą wartością dalej pracować.
Użycie return kończy działanie funkcji i zwraca wartość. Nie jest ona automatycznie wypisywana, ale możemy przypisać ją do zmiennej i dalej z nią pracować.