WDI – zajęcia 7

  1. Jaki będzie rezultat wykonania poniższych fragmentów kodu?
    v = 1
    def foo():
        v = 2
        print v
    print v
    foo()
    print v
    v = 1
    def foo():
        global v
        v = 2
        print v
    print v
    foo()
    print v
  2. Przepisz poniższy program tak, aby uniknąć użycia zmiennych globalnych (zachowaj sposób wyliczania wyniku taki jak w funkcji f).
    a = 2
    b = 5
    c = 0
    def f():
        global c
        for i in range(b):
            c += i ** a
    f()
    print c
  3. Jaki będzie rezultat wykonania poniższych fragmentów kodu?
    for i in range(4):
        print '+'
    print i
    i = 0
    l = [i for i in range(4)]
    print i
    i = 4
    print i
    for i in range(i):
        print i
    print i
  4. Otwórz IPythona. Zadeklaruj następujące zmienne:
    l = [1,2,3]
    t = (1,2,3)
    s = 'napis'
    ls = ['n','a','p','i','s']

    spróbuj podmienić element 2 na 5 w zmiennych l i t oraz literę ‘a’ na ‘z’ w zmiennych s oraz ls.

  5. Jaki będzie rezultat wykonania poniższych fragmentów kodu?
    def foo(l):
        print 'otrzymano: ' , l
        # dodaj elementy
        l.append('elem')
        print 'po dodaniu: ' , l
    l = [1,2,3]
    print 'przed wywołaniem foo: ' , l
    foo(l)
    print 'po wywołaniu: ' , l
    def foo(l):
        print 'otrzymano: ' , l
        # zmień referencję
        l = ['a','b','c']
        print 'po zmianie: ' , l
    l = [1,2,3]
    print 'przed wywołaniem foo: ' , l
    foo(l)
    print 'po wywołaniu: ' , l
    def foo(v):
        print 'otrzymano: ' , v
        # zmień referencję
        v = 'a'
        print 'po zmianie: ' , v
    v = 1
    print 'przed wywołaniem foo: ' , v
    foo(v)
    print 'po wywołaniu: ' , v
  6. Jaki będzie rezultat wykonania poniższych fragmentów kodu?
    4 == 2**2
    4 is 2**2
    1000 == 10**3
    1000 is 10**3
    [] is []
    [] == []
    a = [1,2,3]
    b = a
    b is a
    b == a
    a = [1,2,3]
    b = a[:]
    b is a
    b == a
  7. Napisz funkcję dodaj_wiersz(m), która dla macierzy m w postaci listy list wymiaru k x l doda na końcu macierzy wiersz składający się z l zer. Funkcja dodaj_wiersz musi przejść poniższe testy:
    >>> m = [[0, 0], [0, 0]]
    >>> dodaj_wiersz(m)
    [[0, 0], [0, 0], [0, 0]]
    >>> n = [[3, 2, 5], [1, 4, 7]]
    >>> dodaj_wiersz(n)
    [[3, 2, 5], [1, 4, 7], [0, 0, 0]]
    >>> n
    [[3, 2, 5], [1, 4, 7]]
  8. Napisz funkcję dodaj_kolumne(m), która dla macierzy m w postaci listy list wymiaru k x l doda na końcu każdego wiersza macierzy m 0. Funkcja dodaj_kolumnę musi przejść poniższe testy:
    >>> m = [[0, 0], [0, 0]]
    >>> dodaj_kolumne(m)
    [[0, 0, 0], [0, 0, 0]]
    >>> n = [[3, 2, 5], [1, 4, 7]]
    >>> dodaj_kolumne(n)
    [[3, 2, 5, 0], [1, 4, 7, 0]]
    >>> n
    [[3, 2, 5], [1, 4, 7]]
  9. Jaki będzie rezultat wykonania poniższych fragmentów kodu?
    y=42
    def f(x):
        global y
        x+=y
        y+=x+y
        return x
    print f(y), y
    m=[1,2,3]
    def g(l):
        global m
        if len(l)<=1:
            return l
        else:
            m[0]+=1
            l[1]=m
            return l+g(l[:-1])
    print g([7,8,9]), m
  10. (★) Napisz domknięcie, które dla dowolnej funkcji przed jej wywołaniem wyświetli argumenty wywołania tej funkcji.

Leave a Reply

Your email address will not be published. Required fields are marked *