Wstęp do programowania¶

(semestr zimowy 2026/2027)¶

Dr Anna Muranova, UWM w Olsztynie¶

Wykład 3¶

3 typy instrukcji¶

Istnieje tylko trzy typa instrukcje:

  • Instrukcja prosta
  • Instrukcja warunkowa
  • Pętla

Program z instrukcją prostą¶

In [43]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
print(a + b)
Wprowadź pierwszą liczbę : 2
Wprowadź drugą liczbę : 3
5

Gdzie pisac program?¶

My będzięmy w Notepad++i uruchamiać w Python console

Stył¶

Ustawienia -> Konfigurator stylow -> Python

Jak ustawić w editorze żeby Tab było 4 spacje:¶

Ustawienia -> Ustawienia -> wcięcia

  • Wcięcia za pomocą znaku spacji

Zpaiszć jako .py.Nie zapomniaj wybrać typ pliky .py

Jak uruchomiać?¶

W wierze poleceń przejść do folderu z plikiem, naprz.

cd /D D:\numerindeksu

I potem uruchomić plik w werszu poleceń

py nazwapliku.py

W PowerShell:

Set-Location -Path D:\numerindeksu py nazwapliku.py

Program z instrukcją prostą¶

In [45]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
print(a / b)
Wprowadź pierwszą liczbę : 6
Wprowadź drugą liczbę : 3
2.0

A jeżeli chcemy sprawdzić , ze $b\ne 0$?

Instrukcja warunkowa¶

Instrukcja warunkowa – element języka programowania, który pozwala na wykonanie różnych instrukcji w zależności od tego czy zdefiniowane przez programistę wyrażenie logiczne jest prawdziwe, czy fałszywe.

Przykład:¶

Jeżeli $b\ne 0$, wyświetl $a/b$.

Inaczej – wyświetl komunikat o błędzie (opcjonalne).

if <expr>:
    <statement(s)>

Jeżeli $b\ne 0$, wyświetl $a/b$, inaczej....

if <expr>:
    <statement(s)>
else:
    <statement(s)>

Warunek musi być typu bool lub mieć możliwość przekstałcenia bool.

In [48]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
if b != 0:
    print(a,":",b, "=", a/b)
Wprowadź pierwszą liczbę : 18
Wprowadź drugą liczbę : 6
18 : 6 = 3.0
In [50]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
if b:
    print(a,":",b, "=", a/b)
Wprowadź pierwszą liczbę : 3
Wprowadź drugą liczbę : 0

Wprowadź pierwszą liczbę : 14

Wprowadź drugą liczbę : 2

7

Uwaga:¶

Bez wcięć będzie błąd:

In [51]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
if b != 0:
print(a,":",b, "=", a/b)
  Cell In[51], line 4
    print(a,":",b, "=", a/b)
    ^
IndentationError: expected an indented block after 'if' statement on line 3

if... else...¶

In [52]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
if b != 0:
    print(a,":",b, "=", a/b)
else: 
    print("Błąd: dzielnik nie może być 0")
Wprowadź pierwszą liczbę : 3
Wprowadź drugą liczbę : 0
Błąd: dzielnik nie może być 0

if... else..¶

Minimum dwóch liczb:

In [53]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
if b > a:
  mmin  = a
else:
  mmin = b
print(mmin)
Wprowadź pierwszą liczbę : 2
Wprowadź drugą liczbę : 5
2

elif¶

In [54]:
a = int(input ("Wprowadź liczbę : "))
if a > 0:
  print("a is positive")
elif a < 0:
  print("a is negative")
else:
  print("a is 0")
Wprowadź liczbę : 10
a is positive

Można używać bez else:

In [58]:
a = int(input ("Wprowadź liczbę : "))
if a > 0:
  print("a is positive")
elif a < 0:
  print("a is negative")
Wprowadź liczbę : 0

Przykład¶

In [55]:
day = int(input("Enter a number from 1 to 7: "))

if day == 1:
    print(day, "is Sunday")
elif day == 2:
    print(day, "is Monday")
elif day == 3:
    print(day, "is Tuesday")
elif day == 4:
    print(day, "is Wednesday")
elif day == 5:
    print(day, "is Thursday")
elif day == 6:
    print(day, "is Friday")
elif day == 7:
    print(day, "is Saturday")
else:
    print("Wrong input! Please enter a number from 1 to 7.")
Enter a number from 1 to 7: 8
Wrong input! Please enter a number from 1 to 7.

Krotka pisownia warunku¶

In [59]:
a = int(input ("Wprowadź liczbę : "))
if a > 0: print("a is positive")
Wprowadź liczbę : 5
a is positive
In [60]:
a = int(input ("Wprowadź liczbę : "))
print("a is positive") if a > 0 else print("a is not positive") 
Wprowadź liczbę : -5
a is not positive
In [62]:
a = int(input ("Wprowadź liczbę : "))
print("a is positive") if a > 0 else print("a is zero") if a == 0 else print("a is negative")
Wprowadź liczbę : 0
a is zero

Warunki:¶

A jeżeli chcemy sprawdzić, ze $a$ jest pomiędzy $0$ a $100$?

In [63]:
a = int(input ("Wprowadź liczbę : "))
if a > 0:
  if a < 100: print("Tak")
  else: print("Nie")
else:
  print("Nie")
Wprowadź liczbę : 45
Tak
In [65]:
a = int(input ("Wprowadź liczbę : "))
if (a > 0 and a < 100):
    print("Tak")
else:
  print("Nie")
Wprowadź liczbę : 40
Tak
In [66]:
a = int(input ("Wprowadź liczbę : "))
if 0 < a < 100:
    print("Tak")
else:
  print("Nie")
Wprowadź liczbę : 42
Tak

Operatory logiczne¶

Symbol Znaczenie Przykład Wynik
and i x and y jeżeli x jest falszą, wtedy x, inaczej y
or lub x or y jeżeli x jest prawdą, wtedy x, inaczej y
not negacja not x jeżeli x jest falszą, wtedy True, inaczej False

https://docs.python.org/3/builtins/stdtypes.html#boolean-operations-and-or-not

Używanie specyficznosci operatorow logicznych: przykłady¶

In [5]:
name = input("Wpisz imię:") or "Nieznany użytkownik"
print(f"Hello, {name}")
Wpisz imię:Anna
Hello, Anna
In [6]:
name = input("Wpisz imię:") or "Nieznany użytkownik"
print(f"Hello, {name}")
Wpisz imię:
Hello, Nieznany użytkownik

Uwaga!!!¶

In [7]:
name = "Nieznany użytkownik" or input("Wpisz imię:")
print(f"Hello, {name}")
Hello, Nieznany użytkownik

Jeszcze przykład¶

In [9]:
name = input("Wpisz imię:")  
print(name and f"Hello, {name}") 
Wpisz imię:Anna
Hello, Anna
In [10]:
name = input("Wpisz imię:")  
print(name and f"Hello, {name}") 
Wpisz imię:

Uwaga!¶

In [11]:
name = input("Wpisz imię:")  
print(f"Hello, {name}" and name) 
Wpisz imię:Anna
Anna

I jeszcze jeden przykład¶

In [17]:
x = input("Wprowadź liczbą:")
number = int(x.isdigit() and x)
print(number)
Wprowadź liczbą:42
42
In [16]:
x = input("Wprowadź liczbą:")
number = int(x.isdigit() and x)
print(number)
Wprowadź liczbą:abrakadabra
0
In [21]:
x = input("Wprowadź liczbą:")
number = int(x.isdigit() and x)
print ("approved") if number >= 18 else print("not approved")
Wprowadź liczbą:nie wiem
not approved

Operatory logiczne: przykłady¶

In [69]:
a = int(input ("Wprowadź liczbę : "))
if (a > 0 and a < 100):
    print("Tak")
else:
  print("Nie")
Wprowadź liczbę : -3
Nie
In [70]:
a = int(input ("Wprowadź liczbę : "))
if (a <= 0 or a >= 100):
    print("Nie")
else:
  print("Tak")
Wprowadź liczbę : -3
Nie
In [71]:
a = int(input ("Wprowadź pierwszą liczbę : "))
b = int(input ("Wprowadź drugą liczbę : "))
if not b == 0:
    print(a,":",b, "=", a/b)
else: 
    print("Błąd: dzielnik nie może być 0")
Wprowadź pierwszą liczbę : 2
Wprowadź drugą liczbę : 0
Błąd: dzielnik nie może być 0

Operatory logiczne: jeszcze przykład¶

In [73]:
x , y = 0 , 5

if x < y:
    print('yes 1')
if y < x:
    print('yes 2')
if x:
    print('yes 3')
if y:
    print('yes 4')
if x or y:
    print('yes 5')
if x and y:
    print('yes 6')
yes 1
yes 4
yes 5

Włożone if ...¶

In [74]:
x = 41

if x > 10:
  print("Above ten,")
  if x > 20:
    print("and also above 20!")
  else:
    print("but not above 20.") 
Above ten,
and also above 20!
In [76]:
x = 41

if x > 10:
  print("Above ten,")
  if x > 20:
    print("and also above 20!")
  else:
    print("but not above 20.") 
else: print ("Below 10")
Above ten,
and also above 20!

Włożone if ...¶

Porównaj $(i = 22, -2, 21, -11)$:

if i > 0:
    print("Liczba jest dodatnia")
    if i % 2 == 0:
        print("Liczba jest dodatkowo parzysta")

oraz

if i > 0:
    print("Liczba jest dodatnia")
if i % 2 == 0:
    print("Liczba jest parzysta")

oraz

if i % 2 == 0:
    print("Liczba jest parzysta")
    if i > 0:
        print("Liczba jest dodatkowo dodania")

Slowo kluczowe pass:¶

In [77]:
a = 200
b = 20

if b > a:
  pass
else:
    print("Hello")
Hello

Pętla¶

Pętla – element języka programowania, który pozwala na wykonanie instrukcji dopóki nie zostanie spełniony warunek kończący pętlę.

  • Pętli while używa się jeżeli nie potrzebujesz iteratora (nie wiesz ile razy dokładnie będzie wykonywać się kod).

  • Pętli for używa się kiedy potrzebujesz iteratora. (Jakaś wartość zmiennie się tak samo w każdej pętli i od tej wartości zależy wykonywanie pętli)

Pętli w Python: while¶

Pętlę while w praktyce stosuje się zawsze tam, gdzie mamy potrzebę przetwarzania nieokreślonej z góry liczby danych, np: należy zakończyć pętlę gdy tylko zostanie wciśnięty określony klawisz klawiatury.

while <expr>:
    <statement(s)>
In [2]:
i = ""
while i != "x":
    i = input()
5
x
In [3]:
i = 0
while i < 10:
    print(i)
    i = i + 2
0
2
4
6
8

... break ... continue ...¶

In [4]:
i = 1
while i < 6:
  print(i)
  if i == 3:
    break
  i += 1 
1
2
3
In [5]:
i = 0
while i < 6:
  i += 1
  if i == 3:
    continue
  print(i)
1
2
4
5
6

while ... else¶

In [6]:
i = 1
while i < 6:
  print(i)
  i += 1
else:
  print("i is no longer less than 6")
1
2
3
4
5
i is no longer less than 6
In [7]:
i = 1
while i < 6:
  print(i)
  i += 1
print("i is no longer less than 6")
1
2
3
4
5
i is no longer less than 6

Uwaga! else nie wykonuje się, jeżeli pętla jest zakończona z powodu break.

In [9]:
i = 1
while i < 6:
    print(i)
    i += 1
    if i==3:
        break
else:
  print("i is no longer less than 6")
1
2
In [11]:
i = 1
while i < 6:
    print(i)
    i += 1
    if i==3:
        break
print("i is no longer less than 6")#błąd logiczny!!!
print(i)
1
2
i is no longer less than 6
3

Porównaj jeszcze:¶

In [12]:
i = 1
while i < 6:
    print(i, end=' ')
    i += 1
    if i==3:
        break
else:
  print("i is no longer less than 6")
1 2 
In [13]:
i = 1
while i < 6:
    print(i, end = ' ')
    i += 1
    if i==3:
        break
    else:
        print("i is no longer less than 6")#błąd logiczny!!!
1 i is no longer less than 6
2 

Zastosowanie pętli while w praktyce¶

Przykład pętli o nieznanej z góry liczbie iteracji.¶

Wyznaczyć taką najmniejszą liczbę naturalną, że suma liczb od niej mniejszych i podzielnych przez 7 jest większa od założonej wartości.

In [14]:
print("Podaj liczbe ")
varMin = int(input())
suma = 0
i = 1
while (suma < varMin):
        if (i % 7 == 0):
            suma += i
        i+=1
print("Wyznaczona liczba = ",i)
print("Suma = " ,suma)
Podaj liczbe 
23
Wyznaczona liczba =  22
Suma =  42

Inny sposób dla poprzedniego przykładu¶

Wyznaczyć taką najmniejszą liczbę naturalną, że suma liczb od niej mniejszych i podzielnych przez 7 jest większa od założonej wartości.

In [15]:
print("Podaj liczbe ")
varMin = int(input())
suma = 0
i = 0
while (suma < varMin):
        suma += i
        i+=7
print("Wyznaczona liczba = ",i - 6)
print("Suma = " ,suma)
Podaj liczbe 
23
Wyznaczona liczba =  22
Suma =  42

Pętli w Python: for¶

Pętlę for stosuje się zawsze tam, gdy znamy liczbę iteracji, np: znamy liczbę danych, jaką należy wczytać, wypisać lub zmienić, chcemy policzyć średnią z określonej liczby danych, mamy za zadanie wczytać znaną liczbę danych z pliku lub wypisać określoną liczbę danych na ekran, itd.

for i in <collection>:
    <loop body>
In [16]:
for x in "banana":
    print(x)
b
a
n
a
n
a

range¶

Generuje nam ciąg liczb (dedykowany typ range).

In [17]:
for x in range(6):
    print(x)
0
1
2
3
4
5

Uwaga: wszystkie argumenty muszą być w typie całkowitym.

Jeden argument – to "koniec" – ciąg tworzą liczby naturalne od $0$ do $n-1$. Krok domyślny to $1$.

Dwa argumenty – to "początek" i "koniec". Krok domyślny to $1$. Wtedy są tam liczby całkowite z przedziału lewostronnie domkniętego .

Trzy argumenty – to "początek", "koniec" oraz krok.

Przykłady¶

In [18]:
range(5)
Out[18]:
range(0, 5)
In [19]:
type(range(5))
Out[19]:
range
In [25]:
for x in  range(5):
    print(x, end=' ')
0 1 2 3 4 
In [26]:
for x in  range(1,11):
    print(x, end=' ')
1 2 3 4 5 6 7 8 9 10 
In [27]:
for x in  range(0, 30, 5):
    print(x, end=' ')
0 5 10 15 20 25 
In [28]:
for x in  range(0,10, 3):
    print(x, end=' ')
0 3 6 9 
In [30]:
for x in range(0, -10, -2):
    print(x, end=' ')
0 -2 -4 -6 -8 
In [31]:
for x in range(0):
    print(x, end=' ')
In [32]:
for x in range(1, 0):
    print(x, end=' ')

Pętli w Python: for¶

Uważaj! Co się dzieje? Która będzie ostatnia liczba?

In [33]:
n = 24
for x in range(0, n + 1, 2):
    print(x, end=" ")
0 2 4 6 8 10 12 14 16 18 20 22 24 
In [35]:
n = 24
for x in range(0, n+1):
    if x % 2 == 0:
        print(x, end=" ")
0 2 4 6 8 10 12 14 16 18 20 22 24 
In [38]:
for x in range(0, 24, 2):
    print(x, end=' ')
0 2 4 6 8 10 12 14 16 18 20 22 

break w for¶

In [39]:
for x in range(6):
    if x==3: break
    print(x)
0
1
2

for ... else...¶

In [40]:
for x in range(6):
    print(x, end=' ')
else:
    print("Finally finished!")
0 1 2 3 4 5 Finally finished!
In [41]:
for x in range(6):
    if x == 3: break
    print(x, end=' ')
else:
    print("Finally finished!") 
0 1 2 

for ... else...¶

Porównaj:

In [42]:
for x in range(6):
    if x == 3: break
    print(x, end=' ')
else:
    print("Finally finished!") 
0 1 2 
In [43]:
for x in range(6):
    if x == 3: break
    print(x, end=' ')
print("Finally finished!") 
0 1 2 Finally finished!

Niepoprawne!¶

In [45]:
for x in range(6):
      if x == 3: break
      print(x)
      else:
          print("Finally finished!") 
  Cell In[45], line 4
    else:
    ^
SyntaxError: invalid syntax

Nielogiczne!¶

In [46]:
for x in range(6):
    if x == 3: 
        break
        print(x)
    else:
        print("Finally finished!") 
Finally finished!
Finally finished!
Finally finished!
In [47]:
for x in range(6):
    if x == 3: break
    else:
        print("Finally finished!")
    print(x)
Finally finished!
0
Finally finished!
1
Finally finished!
2

Przykład działania instrukcji continue w for¶

In [106]:
print("Podaj zakres liczb ")
zakrMin = int(input("od: "))
zakrMax = int(input("do: "))
suma = 0
for i in range(zakrMin,zakrMax+1):
    if i % 2 : continue
    suma += i
print("Suma liczb parzystych = ",suma)
Podaj zakres liczb 
od: 5
do: 19
Suma liczb parzystych =  84

Zastosowanie instrukcji continue oraz dzielenia i % 2 , jako warunku w pętli if spowodowało sumowanie jedynie liczb parzystych. Jak to można zrobić inaczej?

Zagnieżdżone pętle¶

for i in <collection>:
    <loop body>
    for i in <collection>:
        <loop body>
while <expr>:
    <statement(s)>
     while <expr>:
        <statement(s)>

Zagnieżdżone pętle – można też mieszać¶

for i in <collection>:
    <loop body>
    while <expr>:
        <statement(s)>
while <expr>:
    <statement(s)>
    for i in <collection>:
        <loop body>

Zagnieżdżone pętle¶

In [54]:
for i in range(1,5):
    for j in range(1,5):
        print(i, "*", j, "=", i * j, end=" | ")
    print()
1 * 1 = 1 | 1 * 2 = 2 | 1 * 3 = 3 | 1 * 4 = 4 | 
2 * 1 = 2 | 2 * 2 = 4 | 2 * 3 = 6 | 2 * 4 = 8 | 
3 * 1 = 3 | 3 * 2 = 6 | 3 * 3 = 9 | 3 * 4 = 12 | 
4 * 1 = 4 | 4 * 2 = 8 | 4 * 3 = 12 | 4 * 4 = 16 | 

... pass¶

Uwaga: najczęściej pass jest używany, jeżeli kod będzie dodany później.

In [55]:
for x in [0, 1, 2]:
    pass

Zagnieżdżone pętle: ciekawostki¶

In [56]:
for i in range(3):
    print(i, end=' ')
    for i in range(3):
        pass
0 1 2 
In [61]:
for i in range(3):
    for i in range(3):
        pass
    print(i, end = ' ')
2 2 2 
In [62]:
for i in range(3):
    print(i, end = ': ')
    for i in range(3):
        print(i, end = ' ')
    print()
    print(i)
0: 0 1 2 
2
1: 0 1 2 
2
2: 0 1 2 
2

Zagnieżdżone pętle: ciekawostki¶

In [64]:
a = 0
b = 0
for i in range(3):
    for i in range(3):
        a += 1
    b += 1
print('a =',a)
print('b =',b)
a = 9
b = 3

Przykład while¶

W 2005 roku posadziłam choinka mierzącą 1,20 m. Przyrasta o 30 cm rocznie. Postanowiłam wyciąć gdy przekroczy 7 m. W którym roku będę ścinała drzewo?

In [68]:
year = 2005;
h = 1.2;


while h < 7:
        year += 1
        h += 0.3
print(year)
2025

Przykład for¶

Oblicz 10-tą liczbą Fibonacciego ($F_0=0, F_1=1$).

In [71]:
f0 = 0
f1 = 1

for i in range(2,11):
    f = f1
    f1 = f1 + f0
    f0 = f

print(f1)
55

lub

In [72]:
f0, f1 = 0, 1

for i in range(2,11):
    f0, f1 = f1, f1 + f0

print(f1)
55

Przykład¶

Znalezienie największego elementu wśród podanych przez użytkownika po koleje. Użytkownik konczy badanie elementow podając nie liczbowy symbol.

Niech maksimum oznacza największą dotychczas znalezioną wartość.

1 Pobieramy od uzytkownika pierwszy element.

  Jezeli on nie jest liczbą, to koniec.

  Inaczej ustalamy maksymum = podana liczba.

2. Pobieramy od użytkownika następny element.

  Jezeli on nie jest liczbą, to koniec.

  Jeżeli jego wartość jest większa od zawartości maksimum, to przypisz maksimum wartość tego elementu.

3. Wróć do punktu 2.

Wynikiem będzie maksymum

AI obrazek ze zmianami
In [23]:
x = input("Podaj element:")
if not x.isdigit(): print("koniec")
else:
    maks = int(x)
    while x.isdigit(): 
        if int(x) > maks: maks = int(x) 
        x = input("Podaj następny element:")
    
print(f"maksimum = {maks}")
    
Podaj element:4
Podaj następny element:32
Podaj następny element:1
Podaj następny element:k
maksimum = 32

Uwaga! Dziala tylko dla liczb naturalnych.¶

A jeżeli ilość liczb jest znana z góry lub podana przez użytkownika?¶

In [27]:
n = 3
maks = 0 #działa tylko dla liczb naturalnych. Jak zmienic dla ujemnych?
for x in range(0,n):
    x = int(input("Podaj następną liczbą:"))
    if x > maks: maks = x
print(f"maksimum = {maks}")
Podaj następną liczbą:3
Podaj następną liczbą:2
Podaj następną liczbą:1
maksimum = 3
In [30]:
n = 3
maks = -float('inf') #dla ujemnych
for x in range(0,n):
    x = int(input("Podaj następną liczbą:"))
    if x > maks: maks = x
print(f"maksimum = {maks}")
Podaj następną liczbą:-3
Podaj następną liczbą:-2
Podaj następną liczbą:-4
maksimum = -2
In [31]:
n = 3
maks = -float('inf') #dla ujemnych
for x in range(0,n):
    x = float(input("Podaj następną liczbą:"))#float
    if x > maks: maks = x
print(f"maksimum = {maks}")
Podaj następną liczbą:-2.5
Podaj następną liczbą:0
Podaj następną liczbą:1.1
maksimum = 1.1

Bardziej rozbudowany program na ten temat z while napiszemy pozniej.

Komentarze¶

W Pythonie używamy symbolu hash #, aby napisać komentarz jednowierszowy. Ale jeśli nie przypiszemy ciągów znakow (napisow) do żadnej zmiennej, działają one tez jak komentarze. Na przykład,

In [103]:
#napis
print(2)
2
In [105]:
'napis'
"napis"
print(2 + 3)
5

Komentarz w kilka wiersze:

In [104]:
'''
komentarz
napis
'''
print(2 + 3)
5

Funkcje w Python¶

Funkcja - podprogram zwracający wynik na podstawie przekazanych argumentów.

Funkcje definiuje się używając słowa def. Po nim następuje nazwa identyfikująca funkcji, następnie para nawiasów, które mogą zawierać kilka nazw zmiennych (parametrów, argumentów), a na końcu dwukropek. Poniżej zaczyna się blok wyrażeń, które są częścią tej funkcji.

Ogólna skladnia funkcji¶

def nazwa_funkcji(parametr_1, parametr_2, ):
    polecenie_1
    polecenie_2
    ... i td.

    return wartosc

Instrukcja return powoduje zakończenie wykonywania funkcji i zwrócenie wartości.

W języku Python nazwy funkcji powinny być zgodne z konwencją snake_case, czyli wszystkie słowa z małych liter, oddzielone znakiem podkreślenia _. Ta konwencja określona jest przez twórców tego języka i większość programistów się jej trzyma. Nie jest nam ona obca, bo używamy jej również przy nazywaniu zmiennych.

Najprostsze funkcje¶

In [73]:
def przywitanie():
    # Blok należący do funkcji.
    print ("Pozdrowienia z mojej funckji!")
# Koniec funkcji.

przywitanie()   # Wywołanie funkcji.
przywitanie()   # Ponowne wywołanie funkcji.
Pozdrowienia z mojej funckji!
Pozdrowienia z mojej funckji!

Bląd!¶

In [74]:
przywitanie()   # Wywołanie funkcji.

def przywitanie():
    print ("Pozdrowienia z mojej funckji!")
Pozdrowienia z mojej funckji!

Czyste funkcje¶

Funkcja czysta – funkcja, która nie ma żadnych skutków ubocznych, tzn. nie modyfikuje ani przekazanych argumentów, ani globalnego stanu programu.

In [75]:
a = 1

def foo():
    a = 2
    print (a)

foo()
print(a)
2
1
In [76]:
a = 1

def foo():
    print(a)#1

foo() # Wywołanie funkcji.
print(a)#1
1
1

Czyste funkcje i zmienne globalne 1¶

In [77]:
a = 1

def foo():
    a +=1
    print (a)

foo() # Wywołanie funkcji.
print(a)
---------------------------------------------------------------------------
UnboundLocalError                         Traceback (most recent call last)
Cell In[77], line 7
      4     a +=1
      5     print (a)
----> 7 foo() # Wywołanie funkcji.
      8 print(a)

Cell In[77], line 4, in foo()
      3 def foo():
----> 4     a +=1
      5     print (a)

UnboundLocalError: cannot access local variable 'a' where it is not associated with a value
In [78]:
a = 1

def foo():
    global a
    a += 1
    print (a)#2

foo() # Wywołanie funkcji.
print(a)#2
2
2

Czyste funkcje i zmienne globalne 2¶

In [83]:
del a
def foo():
    a = 1
    print (a)

foo() # Wywołanie funkcji.
print(a)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[83], line 1
----> 1 del a
      2 def foo():
      3     a = 1

NameError: name 'a' is not defined
In [84]:
def foo():
    #global a = 1 #nie dziala
    global a
    a = 1
    print (a)#1

foo() # Wywołanie funkcji.
print(a)#1
1
1

Funkcji z argumentami¶

Funkcję można wywołać z dowolnej liczby miejsc w programie. Wartości przekazywane do funkcji to argumenty.

  • Nie ma praktycznego ograniczenia długości funkcji, ale dobry projekt ma na celu funkcje, które wykonują jedno dobrze zdefiniowane zadanie. Złożone algorytmy należy podzielić na prostsze funkcje, gdy jest to możliwe.

  • Funkcja ma rozdzielaną przecinkami listę parametrów zero, z których każda ma nazwę, do której można uzyskać dostęp wewnątrz treści funkcji.

  • Domyślnie argumenty są przekazywane do funkcji według wartości, co oznacza, że funkcja odbiera kopię przekazanego obiektu.

Funkcja z parametrami¶

In [86]:
def przywitanie_imienne(imie, zyczenia):
    print ("Witaj" + imie + ". Zycze Tobie " + zyczenia)

przywitanie_imienne("Jacek", "zdrowia")#Wywołanie funkcji.
WitajJacek. Zycze Tobie zdrowia
In [87]:
def my_sum(a, b):
    print (a + b)

my_sum(3, 5)#Wywołanie funkcji.
8

Argumenty vs. Parametry¶

  • Parametr to zmienna zdefiniowana w nawiasach podczas definiowania funkcji. Po prostu są one zapisywane, gdy deklarujemy funkcję.
  • Argument to wartość przekazywana do funkcji podczas jej wywołania. Może to być zmienna, wartość lub obiekt przekazywany do funkcji lub metody jako dane wejściowe. Są one zapisywane podczas wywoływania funkcji.
In [88]:
def my_sum(a, b): #a,b, parametry
    print (a + b)

my_sum(3, 5)#Wywołanie funkcji, 3,5 argumenty
8

Funkcja z parametrami: wywołanie¶

In [89]:
def my_dif(a, b):
    print (a - b)

my_dif(3, 5)#Wywołanie funkcji. -2
my_dif(a = 3, b = 5)#2
my_dif(b = 3, a = 5)#2
#błędy:
#my_dif(a = 3, b)
#my_dif(b = 3, 5)
-2
-2
2

Wewnątrz funkcje są kopie argumentów. Nie zmieniać się wartości zewnątrz:¶

In [90]:
def my_sum(a, b):
    a += b
    print (a)

a = 2
my_sum(a,2)
print(a)
4
2
In [91]:
def my_sum(a, b):
    a += b
    print(a)

x = 2
my_sum(x,2)
print(x)
4
2

Funkcje działa na wszystkich typach, dla ktorych działają jej operacje:¶

In [92]:
def my_sum(a, b):
    a += b
    print (a)

my_sum('Hello', 'World')
my_sum(2.0, 3.5)
HelloWorld
5.5
In [93]:
def my_dif(a, b):
    print (a - b)

my_dif('Hello', 'World')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[93], line 4
      1 def my_dif(a, b):
      2     print (a - b)
----> 4 my_dif('Hello', 'World')

Cell In[93], line 2, in my_dif(a, b)
      1 def my_dif(a, b):
----> 2     print (a - b)

TypeError: unsupported operand type(s) for -: 'str' and 'str'

Funkcja, która zwraca wartość¶

In [94]:
def przywitanie():
    return "Witaj"

przywitanie() # Wywołanie funkcji.
print(przywitanie() )
a = przywitanie() 
print(a)
Witaj
Witaj
In [95]:
def my_sum(a, b):
    a = + b
    return a

x = 2
y = 3
print(my_sum(x,y))
z = my_sum(x,y)
print(z)
3
3

W Python domyślnie funkcja zwraca None

In [97]:
def my_sum(a, b):
    a = + b

print(my_sum(3,5))
None
In [98]:
def przywitanie():
    print ("Witaj")

przywitanie() # Wywołanie funkcji.
print(przywitanie() )
a = przywitanie() 
print(a)
Witaj
Witaj
None
Witaj
None

Funkcje nie dzialają po (pierwszym) return¶

In [99]:
def func():
    return 5
    print('Hello')
    return 3

x = func()
print(x)
5
In [100]:
def my_abs(x):
    if x < 0:
        return -x
#    else:
#        return x
    return x


print(my_abs(-10))
print(my_abs(10))
10
10
In [ ]: