Laboratorium 2

Marek Kocińki & Anna Borowska-Terka

Podstawowe operacje na macierzach z wykorzystaniem petli for. Funkcje - przypomnienie

Zadania do wykonania

  1. Używając pętli for napisz funkcję, która dodaje do wektora wartość skalarną (liczbę).
  2. Co się stanie, gdy słowo kluczowe return znajdzie się wewnątrz pętli for?
  3. Używając dwóch pętli for napisz funkcję, która dodaje do macierzy 2D wartość skalarną (liczbę).
  4. Co się stanie, gdy słowo kluczowe return znajdzie się: (i) wewnątrz pierwszej pętli for, (ii) wewnątrz drugiej pętli for?
  5. Zmodyfikuj funkcję z punktu 3 tak, aby liczba była wartością domyślną funkcji.

    1. Zbadaj różne warianty wywołania funkcji (z i bez argumentu domyślnego).
    2. Zmień kolejność argumentów podczas wywoływania funkcji (przekazywanie argumentów przez wartość).
    3. Zwróć uwagę na fakt, iż w języku Python funkcja zawsze zwraca jakąś wartość. Jeśli nie zastosujemy słowa kluczowego return funkcja domyślnie zwróci wartość None.
  6. Napisz funkcję, która w zależności od rodzaju pierwszego argumentu (wektor lub macierz 2D) dodaje wartość skalarną (liczbę). Jest to połączenie funkcjonalności funkcji z pkt.1 i pkt.3.

  7. Zmodyfikuj funkcję z pkt.6, aby móc wybrać dowolną wykonywaną operację z wykorzystaniem wektora/macierzy i wartości skalarnej: dodawania, odejmowania, mnożenia, dzielenia, potęgowania.

Wybrane zagadnienia z laboratorium

In [1]:
import numpy as np
In [2]:
import pp_lab_2 as lab2

zadanie 1:

def dodaj1(wektor,skalar):

"""
Funkcja dodaje wartosc skalarna do wektora.

Pamietaj: to jest miejsce na Twój opis działania funkcji. 
"""

Tutaj napisz samodzielnie cialo funkcji, ktorej argumentami są: wektor oraz skalar - wartosc, ktora dodamy do wektora.
Funkcja zwraca wektor powiekszony o wielkosc skalarna.

zadanie 2:

def dodaj2(macierz,skalar):

"""
Funkcja dodaje wartosc skalarna do macierzy 2-D.

Pamietaj: to jest miejsce na Twoj opis dzialania funkcji. 
"""

Tutaj napisz samodzielnie cialo funkcji, ktorej argumentami sa: macierz 2D oraz skalar - wartosc, ktora dodamy do macierzy.
Funkcja zwraca macierz powiekszona o wielkosc skalarna.
In [3]:
# testujemy działanie napisanych funkcji
m = np.array([[6,7,8,4,3],[4,1,2,9,0]])
s = 10
print lab2.dodaj2(m,s)
[[16 17 18 14 13]
 [14 11 12 19 10]]
In [4]:
m.ndim
Out[4]:
2

zadanie 4:

def dodaj3(niespodzianka,skalar):

"""
Niespodzianka!!!! :)
Funkcja dodaje wartość skalarną do wektora lub do macierzy. W przypadku gdy argument 'niespodzianka' nie jest ani wektorem ani macierzą, użytkownik powinien otrzymać informację, że działanie dodawania nie może być wykonane ze względu na nieobsługiwany typ argumentu 'niespodzianka'.

Pamiętaj: to jest miejsce na Twój opis działania funkcji. 
"""

Tutaj napisz samodzielnie ciało funkcji, której argumentami są: niespodzianka oraz skalar - wartość, którą dodamy do macierzy.
Funkcja ma zwracać wektor lub macierz powiększoną o wielkość skalarną. Jeśli 'niespodzianka' nie jest wektorem ani macierzą, wyświetl odpowiedni komunikat (tzw. obsługa wyjątków).
In [5]:
# sprawdzamy dzialanie dla macierzy
lab2.dodaj3(m,s)
Out[5]:
array([[26, 27, 28, 24, 23],
       [24, 21, 22, 29, 20]])
In [6]:
# sprawdzamy dzialanie dla wektora
lab2.dodaj3(np.array([1,2,3,5]),7)
Out[6]:
array([ 8,  9, 10, 12])
In [7]:
# argumenty klucz=wartosc
print lab2.dodaj2(macierz=m,skalar=s)
print lab2.dodaj2(skalar=s,macierz=m)
[[36 37 38 34 33]
 [34 31 32 39 30]]
[[46 47 48 44 43]
 [44 41 42 49 40]]

zadanie 5:

def dodaj(wektor,skalar=10,operacja='do'):

"""
Funkcja wykonuje zadana operacje na wektorze i wartosci skalarnej.
Jest to funkcja, ktirej czesc argumentow ma wartosci domysle, a dzialania ktore funkcja wykonuje zaleza od argumentu 'operacja'. Argument 'operacja' moze przyjmowac nastepujace wartosci: 'do'-dodawanie, 'o'-odejmowanie, 'm'-mnożenie, 'dz'-dzielenie, 'p'-potegowanie.
[03.2016]

Pamietaj: to jest miejsce na Twoj opis działania funkcji.
"""

Tutaj napisz samodzielnie cialo funkcji, ktorej argumentami sa: wektor, skalar o zadanej domyslnej wartosci oraz operacja, ktora okresli jakie dzialanie zostanie przeprowadzone na wektorze.     
Funkcja zwraca wektor po dokonanym na nim odpowiednim dzialaniu arytmetycznym. 
Pamietaj o obsludze wyjątkow/bledow.
In [8]:
# sprawdzamy dzialanie funkcji
ceny = np.array([1,5,7,15,43])
wzrost = 15
print lab2.dodaj(ceny,operacja='do')
print lab2.dodaj(ceny,operacja='o')
print lab2.dodaj(ceny,operacja='m')
print lab2.dodaj(ceny,operacja='dz')
[11 15 17 25 53]
[ 1  5  7 15 43]
[ 10  50  70 150 430]
[ 1  5  7 15 43]
In [9]:
a = np.array([100, 400, 500,900,1200, 1600,2000,50])
b = -300
c = lab2.dodaj(a)
print c
[ 110  410  510  910 1210 1610 2010   60]

Przykładowe pytania:

  1. Podaj składnię i omów działanie pętli for.
  2. Podaj składnię i omów działanie wyrażenia warunkowego if.
  3. Omów budowę/zasady tworzenia funkcji definiowanych przez użytkownika.
  4. Jak wywołać funkcję z argumentami domyślnymi, gdy chcemy (a) pozostawić, (b) zmienić wartość domyslną?
  5. Gdzie w definicji funkcji znajdują się jej argumenty, które mają zadaną wartość poczatkową?
  6. Co zwróci funkcja, w której ciele nie użyto polecenia return?
  7. Napisz funkcję, która dodaje do wektora wartość skalarną.
  8. Napisz funkcję, która dodaje do macierzy 2D wartość skalarną.
  9. Napisz funkcję, która dodaje do macierzy 2D wartość skalarną, gdzie skalar jest wartością domyślną funkcji.
  10. Napisz funkcję, która w zależności od rodzaju pierwszego argumentu (wektor lub macierz 2D) dodaje wartość skalarna.

Ostatnia aktualizacja: 01.04.2019 r.